web-dev-qa-db-ja.com

後で実行するコマンドを便利にスケジュールしますか?

たとえば、今から8時間後にコマンドを実行する簡単な方法は何ですか?私はこのように考えることができます:

Nohup bash -c "sleep 28800 ; ./mycommand.sh" &

もっと適切な方法はありますか?

82
Steve Bennett

atコマンドを使用できます。 atは、後でコマンドを実行します。 atユーティリティは、標準入力からコマンドを読み取り、それらをat-jobとしてグループ化し、後で実行するものとします。

通常、atはデフォルトでUbuntuにインストールされますが、リリースに含まれていない場合は、次の方法でインストールします。

Sudo apt-get install at

詳細、オプション、例などについては、 buntu Manpage Repository を参照してください

例:

at now +8 hours -f ~/myscript.sh

tomorrownoonなどの便利な略記法も使用できます。

echo "Tweet fore" | at teatime 

警告:これはパイプの左側でコマンドを実行します即時が、その出力のみを後で表示します。この例は、アクションをatにパイプする方法も示しています。 at -cは、スケジュールされたアクションを調べることができる方法です。次のように、それらを番号で簡単にリストできます。

at -c 3
116
Mitch

はい、cronジョブを設定できます。

たとえば、現在の時刻が14:39:00で今日が8月30日の金曜日である場合、crontab -eコマンドを使用して、crontabファイルに次のcronジョブ(8時間後に実行される)を追加できます。

39 22 30 8 5  /path/to/mycommand.sh

詳細:

8
Radu Rădeanu

cronatなどにGnomeベースのGUIを使用します。

CronHowto の導入は、gnome-schedule guiの使用を提案します。これは、端末にすべてのゴミを入力するよりもはるかに優れています(特に、「パワー」ではない「平均的な」Ubuntuユーザー* nix/bsdユーザー。)

Unity Dash(または他のアプリケーションメニュー)を使用して実行し、Scheduled Tasksを探すか、gnome-scheduleを実行します。

GnomeベースのUbuntuシステムでは、アプリケーションのGnomeスケジュールタスクツール(gnome-scheduleパッケージから)-> System Toolsは、Cronの使用を促すグラフィカルインターフェイスを提供します。プロジェクトのウェブサイトは http://gnome-schedule.sourceforge.net/ にあります。ソフトウェアは、ソフトウェアセンターから、または次のように入力してインストールできます。

Sudo apt-get install gnome-schedule

ターミナルで。

gnome-scheduleを使用すると、ホームディレクトリのスクリプトに対して、このタイプのウィンドウを使用して新しい「at」コマンドが設定されます。

enter image description here

7
user29020

atが問題であることが判明する前に、これを行うための迅速で汚い方法を見つけました。

スクリプトを正午に実行するとします。

until [[ "$(date)" =~ "12:00:" ]]; do
    sleep 10
done
./mycommand.sh

明日正午に実行したいとします(今日は11月24日です):

until [[ "$(date)" =~ "25 12:00:" ]]; do 
    sleep 30
done
./mycommand.sh

更新:やや良い方法:date +FORMATを使用して、気になる数値のみをテストします。

until [[ $(date +%H:%M) == 21:06 ]]; do
    ...
5
wjandrea