/etc/cron.hourly
にntpdate
というファイルを作成しました
#!/bin/sh
/usr/sbin/ntpdate-debian
date > /tmp/william_tmp
date > /william_tmp
date > ~/william_tmp
echo test
また、このファイルに対してChmod 755を実行しました。
ただし、ファイルが実行されたかどうかはわかりません!
ファイルは3つのディレクトリのいずれにも作成されません。
cd / && run-parts --report /etc/cron.hourly
を手動で実行すると、ファイルが作成され、エコーが表示されます。
誰でもそれが機能していることをテストするための指示を(理想的には段階的に!)推奨することはできますか?
Cronの大きな落とし穴の1つは、非常に限られたシェル環境でcronを実行することです。その結果、多くの変数が環境(主に$ PATH)にエクスポートされません。 echo
、uptime
、date
などの一般的な関数を含む、実行可能ファイルへのすべての絶対パスを使用するようにしてください。すべてフルパス(/bin/echo
、/bin/date
、/usr/bin/uptime
)。実行可能ファイルへのパスを決定するには、次のようにwhich
コマンドを使用できます。which echo
-このツールへの完全なパスが表示されます。
/var/log/syslog
ログファイルを確認する必要があります。 cronが実行されている場合、次のような行があります。
Jun 11 19:09:01 penguin CRON[17376]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Jun 11 19:17:01 penguin CRON[17799]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
トラブルシューティングのヒントについては、 https://help.ubuntu.com/community/CronHowto#Troubleshooting_and_Common_Problems をご覧ください。
スクリプトの最初の行(インタープリター)を次のように変更してください。
#!/bin/bash
過去にも環境変数とPATHの問題で問題がありました。インタープリターをbash
に変更した後、私の問題はなくなりました。
clearme.sh
に/etc/cron.hourly/
スクリプトを追加した場合
強力なegrepおよびawkでterminalのCRONタスクをフィルタリングするだけです:
$ cat /var/log/syslog | egrep clearme | awk "{ print $1 }" > ~/Desktop/cronlog.txt
出力は次のようになります。
Jan 14 15:20:01 markets-dev CRON[10089]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 15:40:01 markets-dev CRON[18042]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:00:01 markets-dev CRON[22817]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:20:01 markets-dev CRON[28183]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:40:01 markets-dev CRON[411]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:00:01 markets-dev CRON[5442]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:20:01 markets-dev CRON[11935]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
すべてを段階的に説明するには:
4番目のステップはオプションです。ファイルの代わりに結果を端末に出力するだけです。