表示する画面がない場合、at
およびcron
タスクからの標準出力はどこに行きますか?
ジョブが開始されたディレクトリにも、ホームディレクトリにも表示されません。
バックグラウンドジョブをデバッグまたはトレースする方法がわからない場合、実際にこれを理解するにはどうすればよいですか?
Cronのmanページから:
コマンドを実行すると、出力はcrontabの所有者(または、存在する場合はcrontabのMAILTO環境変数で指定されたユーザー)にメールで送信されます。これらのプロセスを実行しているcronの子のコピーは、syslogおよびpsの出力で確認できるように、名前が大文字に強制変換されます。
したがって、/ rootのメールまたはsyslog(たとえば、/ var/log/syslog)を確認する必要があります。
実行時間の長いプロセスの場合、メールを受け取る前に出力を確認しておくと便利なことがあります。代わりにこれを使用します。
ps
を使用して、実行中のプログラムのプロセスIDを確認します(下記のPID
)。lsof
を使用して、出力が書き込まれるファイルを検索します。
lsof -p PID
出力で、FD
列ヘッダーの下の1u
および2u
行を探します。
これらの行は、メールで送信される前にプロセス出力が入る一時ファイルを示します。通常、at
の場合、ファイルは/var/spool/cron/atjobs/
の下にあります。最後に、そのファイルを表示すると、プロセスの(現在の)出力が表示されます。