echoコマンドがatコマンドで機能しないのはなぜですか?


14

入力するとき:

at now + 1 min
at>play /usr/share/sounds/startrek.wav
at>ctrl+d

動作するので、1分後に実際にサウンドが再生されます。

しかし、私が入力するとき:

at now + 1 min
at>echo "Teresa the green vegetable lover"
at>ctrl+d

シェルからエラー応答はありませんでしたが、1分後にはテキストも表示されません。

回答:


23

atで実行されるコマンドは、登録されたターミナルでは実行されません。これは一般的には意味がありません。端末がもう存在しないか、別のユーザーによって使用されている可能性があります。コマンドを実行するまでにログアウトしている場合もあります。

atコマンドからの出力は、電子メールで送信されます。これはローカルのUnixメールであり、メールプログラムで設定した外部のPOPまたはIMAPアカウントではありません。ローカル電子メールが設定されていない場合、コマンドからの出力は失われます。ローカルメールが設定されていない場合、このガイドが役立つ場合があります。

端末と対話するatコマンドが必要な場合は、明示的なリダイレクトを使用する必要があります。例えば:

echo "echo hello >$TTY" | at now + 1 min

このスニペットでは、変数TTYはシェルによって展開されるため、への入力atはのようなものであることに注意してくださいecho hello >/dev/pts/42

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