バックグラウンドで実行するジョブのスケジュール(ジョブのスケジュールにはatを使用)

バックグラウンドで実行するジョブのスケジュール(ジョブのスケジュールにはatを使用)

後で指定した時間にバックグラウンドでジョブを実行するように要求できますか?

これが私が今まで持っているものです

 nohup nice MY_PROGRAM > foo.out 2> foo.err < /dev/null | at 05:23 PM Mon & echo $!

ただし、実際には存在しない(18454)などのプロセスIDを再表示します。

ps 

ジョブに割り当てられたプロセスID。

 18453 pts/2    00:00:00 MY_PROGRAM

PID-1 = PIDですか?なぜこれが起こるのかご存知ですか?それとも私のコマンドに問題があるのでしょうか?

答え1

at標準入力から実行するコマンドを読みます。

実行コマンドを送信していませんat。コマンドを実行し、コマンドの出力をに送信していますat

次のようにしてみてください。

echo 'nohup nice MY_PROGRAM > foo.out 2> foo.err < /dev/null' | at 05:23

このechoコマンドは文字列を印刷して'nohup nice MY_PROGRAM'|渡しますat

なぜそれを使うのかわかりませんが、おそらく仕事があるnohupので必要でしょう。at対話型ではない

PSコマンドを文字列として渡す'には、単一引用符()を使用する必要があります。echo

関連情報