たとえば、今から8時間後にコマンドを実行する簡単な方法は何ですか?私はこのように考えることができます:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
もっと適切な方法はありますか?
たとえば、今から8時間後にコマンドを実行する簡単な方法は何ですか?私はこのように考えることができます:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
もっと適切な方法はありますか?
回答:
このat
コマンドを使用できます。at
後でコマンドを実行します。at
ユーティリティは、後で実行するために、AT-ジョブとして一緒にそれらを標準入力からコマンドを読み取り、グループなければなりません。
通常、at
Ubuntuではデフォルトでインストールされますが、リリースに含まれていない場合は、次の方法でインストールします。
sudo apt-get install at
詳細、オプション、例などについては、Ubuntu Manpage Repositoryを参照してください
例:
at now +8 hours -f ~/myscript.sh
また同様に、便利な速記を使用することができるtomorrow
かnoon
のように、
echo "tweet fore" | at teatime
警告:これにより、パイプの左側でコマンドがすぐに実行されますが、出力は後でのみ表示されます。この例は、アクションをにパイプする方法も示していますat
。 at -c
以下のように、スケジュールされたアクションを調べることができる方法です。
at -c 3
at now +8 hours -f ~/myscript.sh
at 8:00
、絶対時間にコマンドを実行する必要がありbatch
、「コンピューターがアイドル状態になっているように見える場合」
teatime
、午後4時です。いくつかの理由から、それはで言及していないmanpages.ubuntu.com/manpages/raring/man1/at.1posix.htmlが、それはでありman at
、ここでmanpages.ubuntu.com/manpages/raring/en/man1/at.1.html。
gpio write 8 1
すぐに実行できたため、4時間の3D印刷が失敗しました。
はい、cronジョブを設定できます。
たとえば、現在の時刻が14:39:00で、今日が8月30日の金曜日である場合、次のcronジョブ(8時間後に実行される)をcrontab -e
コマンドを使用してcrontabファイルに追加できます。
39 22 30 8 5 /path/to/mycommand.sh
詳細:
crontab
削除するまで自分の中に残ります。一年後、誰がそこにそれを置いたのか、そしてなぜそれを忘れたとき、あなたはコマンドをどうするか疑問に思うようになります。
以下のためのGnomeベースのGUIを使用してcron
、at
などが挙げられます:
CronHowtoの紹介では、gnome-schedule
GUI を使用することをお勧めします。これは、端末にすべてのゴミを入力するよりもはるかに優れています(特に、「パワー」* nix / bsdユーザーではない「平均」Ubuntuユーザーの場合)。
Unity Dash(または他のアプリケーションメニュー)を使用して実行し、Scheduled Tasksまたはrunning を探しますgnome-schedule
。
GnomeベースのUbuntuシステムでは、アプリケーションのGnomeスケジュールタスクツール(gnome-scheduleパッケージから)-> System Toolsは、Cronの使用を促すグラフィカルインターフェイスを提供します。プロジェクトのWebサイトはhttp://gnome-schedule.sourceforge.net/にあります。ソフトウェアは、ソフトウェアセンターから、または次のように入力してインストールできます。
sudo apt-get install gnome-schedule
ターミナルで。
を使用してgnome-schedule
、ホームディレクトリのスクリプトに、このタイプのウィンドウを使用して新しい「at」コマンドを設定します。
私はそれが事であることを知る前に、これを行うための迅速で汚い方法を見つけました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
...
at
、cron
または任意の他の実スケジューラアプリケーション。タスクのスケジューリングは難しく、再発明すべきではありません。
at
。
at
は、ジョブが再起動後も存続するためです。
nohup
+ に何か問題がありsleep
ますか?なぜ「不適切」なのですか?