web-dev-qa-db-ja.com

「at」ジョブと「cron」ジョブの出力はどこに行きますか?

表示する画面がない場合、atおよびcronタスクからの標準出力はどこに行きますか?

ジョブが開始されたディレクトリにも、ホームディレクトリにも表示されません。

バックグラウンドジョブをデバッグまたはトレースする方法がわからない場合、実際にこれを理解するにはどうすればよいですか?

9
Michael Durrant

Cronのmanページから:

コマンドを実行すると、出力はcrontabの所有者(または、存在する場合はcrontabのMAILTO環境変数で指定されたユーザー)にメールで送信されます。これらのプロセスを実行しているcronの子のコピーは、syslogおよびpsの出力で確認できるように、名前が大文字に強制変換されます。

したがって、/ rootのメールまたはsyslog(たとえば、/ var/log/syslog)を確認する必要があります。

10
Jari Laamanen

実行時間の長いプロセスの場合、メールを受け取る前に出力を確認しておくと便利なことがあります。代わりにこれを使用します。

  1. psを使用して、実行中のプログラムのプロセスIDを確認します(下記のPID)。
  2. lsofを使用して、出力が書き込まれるファイルを検索します。

    lsof -p PID
    

出力で、FD列ヘッダーの下の1uおよび2u行を探します。

これらの行は、メールで送信される前にプロセス出力が入る一時ファイルを示します。通常、atの場合、ファイルは/var/spool/cron/atjobs/の下にあります。最後に、そのファイルを表示すると、プロセスの(現在の)出力が表示されます。

4
Gabriel G