ログインしないと、cronjobは実行されません。

ログインしないと、cronjobは実行されません。

私のcrontabにcronjobがあります。

2分で実行するジョブを指定して待ってから、そのジョブによって生成されたファイルを表示し、psでプロセスを表示できます。これを完了するのに少なくとも10分かかります。

しかし、2分後に実行するようにジョブを指定し、ログアウトしてから数分後に戻ってくると、まだジョブが実行されていないようです(ファイルは生成されず、psでは処理されません)。 。

/var/log/syslogを見ると、ジョブが「起動」していることがわかりますが、すぐに(同じ秒)cronがメールを送信しようとします。おそらく結果が含まれた電子メールでしょう。 (まあ、sendmailが正しく設定されていませんが、これが根本的な原因ではないはずです)。

どんなアイデアがありますか?


以下は、いくつかの具体的な例です。 (pythonは私のコンピュータの名前です。)

crontab -e を使用して crontab を編集します。
これはクローンタブです:

user@python:~$ crontab -l
[...]
# m h  dom mon dow   command

50 9 * * * /home/user/scripts_automated/crontab1.sh

9時50分に実行する必要があります

これは/var/log/syslogの内容です:

[...]
Nov  6 09:48:02 python crontab[30913]: (user) BEGIN EDIT (user)
Nov  6 09:48:18 python crontab[30913]: (user) REPLACE (user)
Nov  6 09:48:18 python crontab[30913]: (user) END EDIT (user)
Nov  6 09:50:01 python CRON[30936]: (user) CMD (/home/user/scripts_automated/crontab1.sh)
Nov  6 09:50:01 python sendmail[30938]: sA68o1a4030938: from=user, size=347, class=0, nrcpts=1, msgid=<201411060850.sA68o1a4030938@python>, relay=user@localhost
[...]

ログを見ればわかりますが、crontab09:48:02に修正してログアウトしました。 (を使用して)コンピュータに戻りましたが、ジョブがssh期待したファイルは生成されませんでした。

スクリプトの内容は次のとおりです。

user@python:~$ cat scripts_automated/crontab1.sh


#  0  ------------------------------------------------------

datenow=`date +%F_%H-%M-%S`
/home/user/scripts_automated/script_1_cisco_grab.sh > /home/user/scripts_automated/crontab/run_${datenow}_.txt 2>&1 &
echo $! > /home/user/scripts_automated/crontab/pid_${datenow}.txt
ln -s /home/user/scripts_automated/crontab/pid_${datenow}.txt /home/user/scripts_automated/crontab/pid_last_run.txt

ファイルは生成されません。少なくともpid_${datenow}.txtバックグラウンドコマンドのpidと一緒にファイルが存在したいと思います。しかし、何もありません。ログアウトしないと、スクリプトが実行されて出力ファイル、pid_${datenow}ファイルなどが生成されます。

ベストアンサー1

cronジョブの実行時に使用できる別のディレクトリ(たとえば)にスクリプトを配置する必要があります/usr/local/bin/

crontab次のようにアイテムを作成するのも良い習慣です。

M H * * *  test -x /usr/local/bin/myscript.sh && /usr/local/bin/myscript.sh

したがって、スクリプトが利用できない場合、crontabはそれを実行しようとしません。


ログアウトが問題であると思われる場合は、ログアウトしてからcrontabを実行して観察できる時間に合わせて再試行する必要があります。これにより、ログアウトが問題であるかログインしないのが問題であるかを絞り込むことができます。

おすすめ記事