2016-12-29 10 views
0

誰かがjuniper swith EXシリーズでcrontabを使用しましたか?私は別の設定でこのプロセスを実行する必要があるので、私は再起動httpdの仕事をしたいと思います。 私はロギングを使って簡単なスクリプトを作成します。Juniper EXスイッチ。 Crontab jobs

#!/bin/csh 
echo 'Go...' 
cp /jail/var/etc/httpd.conf_new /jail/var/etc/httpd.conf 
echo 'changed' 
set http_pid=`ps aux | grep 'httpd --config' | grep -v grep | awk '{print $2}'` 
echo 'Process PID: ' "$http_pid" 
kill -9 "$http_pid" 

はまた、私はcrontabの中にジョブを作成

10 12 * * * csh /var/root/test.sh >> test.log 

私はそれから出力されたCMDからプロセスへの実行

:私はその後、cronでそれを実行したときに

Go... 
changed 
Process PID: 3158 

、すべてがOKですが、それはそのように見えます:

Go... 
changed 
Process PID: 

私はcrontabの行に変更(追加)しようとしました:

SHELL=/bin/csh 
PATH=... 

しかし、動作しませんでした。また、私は以下のようなものを仕事に行を変更しよう:

10 12 * * * /var/root/.profile; csh /var/root/test.sh >> test.log 
10 12 * * * sh /var/root/.profile; csh /var/root/test.sh >> test.log 
10 12 * * * (sh /var/root/.profile; csh /var/root/test.sh) >> test.log 

たぶん、あなたは私がこれを正しく実行するために多くを何を行うことができます知っていますか?

答えて

1

私は週末にこれを解決しました。スクリプトがを使用してcrontabで実行されると、httpdが実行される前にスクリプトが実行されるため、PIDはありません。私はsleep 60を私のcrontabの行に入れ、スクリプトは60秒間遅れて実行され、httpdが起動して実行され、PIDを持っています。ここで

は私のクローンタブです:

@reboot sleep 60; sh /jail/var/etc/httpd_replace_config.sh > /jail/var/etc/httpd_replace_config.txt 
+0

これは私の問題の一つに唯一のソリューションです。 2番目はpsの変数http_pidへの転送結果です。スクリプトのアクションを段階的に分析したところ、クエリps auxの結果は文字列の長さが80文字に制限されていることが判明しました。私のgrepは探している文字列を検出しませんでした。 ps auxをps -A(短いバージョン)に変更する必要があります。 – KlapenHz