メッセージダイアログを表示する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