at
特定の種類のジョブの電子メール通知を無効にしたいと思います。たとえば、以下のユースケースをテストしている間(作業が途中で終了しました)いいえ出力を望んでいますが、本番環境で同じコードを使用して投稿の出力を希望します。
$ at now <<<'/usr/bin/timeout 15s nc -l 20242'
job 71 at 2016-05-16 15:03
$ pidof /usr/bin/timeout
11853
$ kill 11853
$ mail
Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/bishop": 1 message 1 new
>N 1 bishop@trencher Mon May 16 15:03 16/920 "Output from your job 71"
& 1
Message 1:
From bishop@trencher Mon May 16 15:03:30 2016
Date: Mon, 16 May 2016 15:03:30 -0400
From: bishop@trencher
Subject: Output from your job 71
To: bishop@trencher
Status: R
/bin/bash: line 1: 11853 Terminated /usr/bin/timeout 15s nc -l 20242
設定できることを知っていますが、MAILPATH=/dev/null
より細かく制御することをお勧めします。設定には明確な効果はMAIL
ありません。MAILTO
そのディレクティブを削除するためにジョブを編集できると思いましたが、うまく# mail
いかないようです。
at 15:15 <<<'date'
at -c 73 | grep -v '^# mail bishop' | at 15:15
atrm 73
何度も検索してみましたが、atという名前の命令を検索するのは簡単ではないという点だけ申し上げます。ソースコードも見つかりません。 GNU coreutilsにいませんか?
修正する:サイトID:
$ uname -a
Linux trencher 4.4.8-20.46.amzn1.x86_64 #1 SMP Wed Apr 27 19:28:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ at -V
at version 3.1.10
各ジョブの出力(すべての出力)を送信するユーザーにメールで送信するかどうかを制御できますか?
答え1
RedHat(およびCentosと友達)at
とDebian派生製品(rpm -qi at
RedHatはDebian URLを表し、上記の説明ではderobertを表す)は次の-M
オプションをサポートする必要があります。
-M Never send mail to the user.
これが欠けている場合、他のオプションはジョブ出力を抑制することです。
#!/bin/bash
exec >/dev/null 2>&1
... the usual job commands here ...
logger
あるいは、実際に出力を確認する必要がある場合は、出力をログファイルまたはログファイルにパイプすることもできます。
別のオプションは、特に開発システムであるため、メール転送エージェントを変更し、/dev/null
すべてのメールを開発サーバーのメールボックスファイルに入れたり入れることです。ただし、これを行うにはより多くの作業が必要です。
答え2
at
(パッケージchronic
から)渡されたコマンドを前に追加すると、まだ入手できます。moreutils
両方コマンドがエラー状態で終了するとstderrとstdoutで、そうでなければ何もありません。
クローンを実行するときも同じことをしてください。