1時間ごとのcronジョブが実行されたかどうかを確認するにはどうすればよいですか?


26

私はと呼ばれるファイルを作成しているntpdate中での/etc/cron.hourly

#!/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と、ファイルが作成され、エコーが表示されます。

誰かがそれが機能していることをテストするための指示を(理想的には段階的に!)推奨することはできますか?

回答:


25

cronの主な落とし穴の1つは、非常に限られたシェル環境でcronを実行することです。その結果、多くの変数が環境(主に$ PATH)にエクスポートされません。あなたは、実行可能ファイルへのすべて絶対パスを使用するように共通の機能を含むことを確認してくださいechouptimedate完全なパスを使用するすべての必要性は、等(/bin/echo/bin/date/usr/bin/uptime)。実行可能ファイルへのパスを決定するには、which次のようなコマンドを使用できます。-これにより、which echoそのツールへのフルパスが表示されます。


チャットで説明したように、これに感謝し、それが他の誰かに役立つことを本当に願っています... ntpdateへの秋の道をやりましたが、私はWindowsに慣れており、エコー/日付がちょうど「組み込まれている」ので、私はしませんでした私はフルパスが必要だと思います... Linuxについてもっと多くを学ぶと、それは完全に理にかなっています!
ウィルヒル

36

/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を参照してください


Syslogには何もありませんし、そのリンクから失敗する理由はわかりません。(
wilhil

1
syslog(grep -i cron /var/log/syslog /var/log/syslog.1)にエントリがない場合、cronデーモンが実行されているかどうかのチェックを開始ps uww -C cronします。プロセスの行を含める必要があります。
-Lekensteyn

誤解を招いて申し訳ありませんが、syslogにはCronの全体があります。このコマンドに関連するものは何もありません...一部のジョブは1時間ごとに実行され、新しいメールアラートが表示されます... crontabのから、私が働いて取得しようとしていますものですcron.hourlyでは何もありません
wilhil

2

スクリプトの最初の行(インタープリター)を次のように変更してください。

#!/bin/bash

過去にも環境変数とPATHの問題で問題がありました。通訳をbash私の問題に変更した後、なくなっていました。


1

clearme.shスクリプトを追加したことを考えると/etc/cron.hourly/

強力なegrepawkを使用して、ターミナルで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)

すべてを段階的に説明するには:

  1. cat / var / log / syslog-システムログを出力してください
  2. egrep clearme-ただし、テキストclearmeを含む行のみを選択します
  3. awk "{print $ 1}" -テキストclearmeを含む行を印刷します
  4. >〜/ Desktop / cronlog.txt - Desktopディレクトリにあるファイルcronlog.txtに結果を出力します。

4番目のステップはオプションです。ファイルの代わりに結果を端末に出力するだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.