Linux で、フォアグラウンド (または対話モード) で cron ジョブを実行する方法はありますか? (ユーザー入力を受け入れて何らかの処理を行うために定期的に実行されるプログラムがあります。そのため、フォアグラウンドで実行できるcronジョブとしてスケジュールしたいと考えています)。
4 に答える
ユーザーのこれを試してみてくださいcrontab
:
@hourly DISPLAY=:0 xterm -e /path/to/my/script.sh
スクリプトが実行されている状態で(1時間ごとに)開きxterm
、スクリプトが終了すると終了します。もちろん、@hourly
ニーズに合わせてパーツを変更する必要があります。
GUI
のスクリプトについてcron
は、次の行を試してくださいshell
。
crontab -e
次にcrontab
:
0 7 * * * DISPLAY=:0 /PATH/TO/SCRIPT
Xを実行していると仮定すると、選択したディスプレイでいつでもウィンドウを開くことができます。
GUI がなく、端末しかない場合は、出口を tty にそらします。「tty」を実行すると、出力のリダイレクト先のデバイスが返されます。たとえば、Centos では次のようになります。
/ dev / pts / 0
次に、次のcrontab -e
ように記述します。
1 * * * * user sh / PATH / TO / SCRIPT> / dev / pts / 0
必要に応じて crontab の時間を調整します。その端末を開いている人がいる場合にのみ実行されます。
しかし、質問のタイトルで人々が探しているもの:
Linux: フォアグラウンドで cron ジョブを実行する
答えはnohup command_to_run &
:
1 * * * * nohup user sh / PATH / TO / SCRIPT &
nohup
開いている端末であるかのようにスクリプトを実行でき、crontab の実行の問題を解決します。たとえば、スクリプトを作成するときのことです。
#! / bin / bash
echo "I make it up"
そして、エコーの出力が何かを行うのを待ちます。例:
echo "I make it up"
if [[$? -gt 0]]
then
do something with the output of echo
echo
実行応答は tty 端子を介して取得されstdout
ます。しかし、crontab からは「tty がありません」とクラッシュが発生し、crontab はアプリケーションを実行しません。これは で解決しnohup
ます。詳しくは:man nohup