
test.sh
次の内容で呼び出されるbashスクリプトを作成しました。
#!/#bin/bash
echo "Done!"
私は次のように入力しますbash test.sh | at 1549
:
myusername@machine:path$ bash test.sh | at 1549
warning: commands will be executed using /bin/sh
job 4 at Fri Sep 3 15:49:00 2021
myusername@machine:path$ date
Fri Sep 3 15:48:22 EDT 2021
myusername@machine:path$ date
Fri Sep 3 15:49:12 EDT 2021
表示スクリプトが実行されないのはなぜですか?以下のように私のシェルはbashだからですか?
myusername@machine:path$ echo $SHELL
/bin/bash
答え1
スクリプトをすぐに実行してスケジュールします。その出力実行としてat
。言うまでもなく、これは失敗するでしょう。
私の考えであなたが望むのはこれです。
#!/bin/bash
echo "Done!"
というファイルに書き込んだとしますmyscript
。
実行可能にする:
chmod a+x myscript
その後、15:49に実行キューに追加され、出力がキャプチャされますmyscript.log
。出力をキャプチャしないと、ローカルのUNIX / Linuxアカウントに電子メールが送信され、メールサブシステムがまったくインストールされていない場合は破棄されます):
at 1549 <<'X'
./myscript > myscript.log 2>&1
X
答え2
システムで実行されたコマンドのすべての出力は、at
電子メールで送信されます。
第二に、実行されたときに現在のttyから接続が解除され、したい場合でも対話できません。