"at"コマンドはあらゆる種類のシェルスクリプトを実行できますか?

"at"コマンドはあらゆる種類のシェルスクリプトを実行できますか?

メッセージダイアログを表示するJavaプログラムを作成しました。 OKを押して閉じると、プログラムの実行が終了します。

alarm.shその後、プログラムを実行するシェルスクリプトを作成しました。私はそれをテストして動作します:

$ alarm.sh "-i It's time to ring up the revenue service"

しかし、実行すると:

$ echo "alarm.sh \"-i It's time to ring up the revenue service\"" | at 15:00

タスクは予定されていましたが、15時にメッセージダイアログボックスは表示されませんでした。なぜ? "at"はどのようにシェルスクリプトを実行し、その制限は何ですか?

答え1

いいえ、at非対話型スクリプトのみを実行できます。

atこれらのスクリプトは、コマンドが開始された端末に接続されずに実行されます。プログラムがそれ自体stdoutおよび/またはstderrプロセスから何かを出力すると、その出力は電子メールで送信されます。

特に、スクリプトの起動時に一部の変数は保持されないため、DISPLAY試行は失敗します。電子メールを確認して、エラーが報告されたことを確認できます。そうでないsendmail場合、または同様の場合は、インストール/構成されない可能性があります。

コマンドの実行時に現在のX11ディスプレイを使用するには、次のように設定できます。

echo "DISPLAY=$DISPLAY alarm.sh \"-i It's time to ring up the revenue service\"" | at 15:00

答え2

at現在、作業ディレクトリがない可能性があります。それタスクリスト。フルパスを指定してくださいalarm.sh

echo "/path/to/alarm.sh '-i There is no alarm; only Zuul'" | at 15:00

関連情報