表示する画面がない場合、at
標準出力とタスクはどこに行きますか?cron
操作が開始されたディレクトリやホームディレクトリには表示されません。
バックグラウンドタスクをデバッグまたは追跡する方法がわからない場合は、これをどのように実際に把握できますか?
答え1
クローンのマニュアルページから:
コマンドが実行されると、すべての出力がcrontabの所有者(またはcrontabのMAILTO環境変数がある場合はそのユーザー)にメールで送信されます。 syslog および ps 出力に示すように、これらのプロセスを実行する cron サブコピーの名前は強制的に大文字で表示されます。
そのため、/root メールまたはシステムログ(例:/var/log/syslog)を確認する必要があります。
答え2
長期間実行されるプロセスの場合、電子メールを受信する前に出力が何であるかを知ることが役に立つ場合があります。私は次のアプローチを使用します。
ps
実行中のプログラムのプロセスIDを見つけるために使用されます(PID
下)。lsof
出力が書き込まれるファイルを見つけるために使用されます。lsof -p PID
出力の1u
列見出しの下で行を探します。2u
FD
この行は、プロセス出力がメールを介して送信される前にどの一時ファイルに入るかを示します。通常の場合、at
ファイルは/var/spool/cron/atjobs/
。最後にファイルを表示すると、プロセスの(現在の)出力を見つけることができます。
答え3
@kapad、@janaka:今回の回答を完了Linuxで削除されたオープンファイル(crontabジョブの実行結果)にどのようにアクセスしますか?
そのため、この場合は次の操作を行います。
" tail /proc/[the-pid]/fd/1
"