Bash
特定の時間のジョブ
サーチ…
特定の時刻にジョブを1回実行する
注意: atは現代のディストリビューションのほとんどにデフォルトではインストールされていません。
これ以外のとき、今度は午後5時にジョブを実行するには、
echo "somecommand &" | at 5pm
出力をキャッチする場合は、通常の方法でそれを行うことができます:
echo "somecommand > out.txt 2>err.txt &" | at 5pm
at
は多くの時間形式at
理解しているので、
echo "somecommand &" | at now + 2 minutes
echo "somecommand &" | at 17:00
echo "somecommand &" | at 17:00 Jul 7
echo "somecommand &" | at 4pm 12.03.17
年または日付が指定されていない場合は、指定した時刻が次に発生したとみなされます。だから、もしあなたがすでに今日通過した時間を与えるなら、それは明日を前提にしています。そして、あなたが今年通過した月を与えれば、それは来年になるでしょう。
これは、あなたが期待するような、ノーアップと一緒にも機能します。
echo "nohup somecommand > out.txt 2>err.txt &" | at 5pm
時間を計られたジョブを制御するコマンドがいくつかあります:
- atqはすべてのタイムアウトジョブをリストします( atq ueue)
- atrmはタイムドジョブを削除します( atr e m ove )
- バッチは基本的にはatと同じですが、システム負荷が0.8より小さい場合にのみジョブを実行します
すべてのコマンドは、ログインしているユーザーのジョブに適用されます。rootとしてログインしている場合、システムワイドジョブはもちろん処理されます。
systemd.timerを使用して指定された時間に繰り返しジョブを実行する
systemdはcronの最新の実装を提供します。スクリプトを定期的に実行するには、サービスとタイマーファイルが必要です。サービスとタイマーファイルは、/ etc / systemd / {system、user}に置く必要があります。サービスファイル:
[Unit]
Description=my script or programm does the very best and this is the description
[Service]
# type is important!
Type=simple
# program|script to call. Always use absolute pathes
# and redirect STDIN and STDERR as there is no terminal while being executed
ExecStart=/absolute/path/to/someCommand >>/path/to/output 2>/path/to/STDERRoutput
#NO install section!!!! Is handled by the timer facitlities itself.
#[Install]
#WantedBy=multi-user.target
次にタイマーファイル:
[Unit]
Description=my very first systemd timer
[Timer]
# Syntax for date/time specifications is Y-m-d H:M:S
# a * means "each", and a comma separated list of items can be given too
# *-*-* *,15,30,45:00 says every year, every month, every day, each hour,
# at minute 15,30,45 and zero seconds
OnCalendar=*-*-* *:01:00
# this one runs each hour at one minute zero second e.g. 13:01:00
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow