将来のある時点で発生する単一のイベントをスケジュールする簡単な方法は何ですか?


15

多くの場合、コンピューターに1つのタスクを実行させたいが、今はそうではない場合があります。たとえば、仕事を辞める時間であることを30分で通知することができます。または、他のほとんどの人がオフィスを去ると確信している2時間後に複雑なテストを実行したいかもしれません。

cronジョブを作成して特定の時刻に実行できることはわかっていますが、「このスクリプトを10分で実行する」のような簡単なことだけでなく、多くの作業が必要なように思えます。今から実際にX分/時間/日になるのか、終了したらcronジョブを削除します。

もちろん、このスクリプトを作成してバックグラウンドで実行することもできます。

sleep X
do_task

しかし、それは非常に不格好なようです:各タスクに新しいスクリプトが必要か、または必要なことを実行するのに十分な汎用スクリプトを作成して維持する必要があります。数時間または数日です。

この問題に対して既に確立された解決策はありませんか?


7
私はあなたがまだ出くわしいないと思いますか?
jw013

これは非常に基本的なように見えるかもしれません...しかし、あなたのシステムには警告付きのカレンダー/ todoリストのようなものがありませんか?
ホセヌノフェレーラ

回答:


27

私はシンプルなスクリプトを使用しますat

#!/bin/bash
# email reminder notes using at(1)...

read -p "Time of message? [HH:MM] " time
read -p "Date of message? [dd.mm.yy] " date
read -p "Message body? " message

at "$time" "$date" <<EOF
echo "$message" | mailx -s "REMINDER" me@gmail.com
EOF

電子メールの代わりにデスクトップ通知を必要とする場合$messagenotify-sendまたは同様に簡単にパイプすることができdzenます。


9
相対時間(+ 2 days)およびさまざまな形式(YYYY-MM-DD)も使用できます。詳細については、マンページを参照してください。
アルセージュ

はい:
米国の対人は

私は通常、1回限りのスクリプトをすばやく実行します。atジョブをスケジュールする私のお気に入りの怠wayな方法は、「今+5分」です。
ジョージM

スクリプトと、私が聞いたことのないdzenとnotify-sendに言及して+1。
ジョー

ダースのリダイレクトは私のために機能していません。 unix.stackexchange.com/q/38362/4143
コリークライン

6

一般的な使用方法at

やりたいことを行うスクリプトを作成します。すべての外部コマンドにフルパスを使用し、出力を適切なログファイルに記録するか、メールで送信します。

スクリプトをテストします。

で有効化 at -f YOURSCRIPT -t MMDDhhmm

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.