11

Linux で、フォアグラウンド (または対話モード) で cron ジョブを実行する方法はありますか? (ユーザー入力を受け入れて何らかの処理を行うために定期的に実行されるプログラムがあります。そのため、フォアグラウンドで実行できるcronジョブとしてスケジュールしたいと考えています)。

4

4 に答える 4

11

ユーザーのこれを試してみてくださいcrontab

@hourly DISPLAY=:0 xterm -e /path/to/my/script.sh

スクリプトが実行されている状態で(1時間ごとに)開きxterm、スクリプトが終了すると終了します。もちろん、@hourlyニーズに合わせてパーツを変更する必要があります。

于 2012-10-07T18:10:53.897 に答える
4

GUIのスクリプトについてcronは、次の行を試してくださいshell

crontab -e

次にcrontab

0 7 * * * DISPLAY=:0 /PATH/TO/SCRIPT
于 2012-10-07T18:08:45.150 に答える
2

Xを実行していると仮定すると、選択したディスプレイでいつでもウィンドウを開くことができます。

于 2012-10-07T18:04:33.283 に答える
1

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

于 2020-08-07T21:30:31.247 に答える