日本語版
最新ニュース
科学&テクノロジー

よりダイナミックな cron ジョブ • George Mandis

2025 年 9 月 21 日 • 約600単語 • 3分で読めます私は 2000 年代初頭に cron ジョブについて学んだことを覚えています。コンピューターに「行く」と命令できる する 何かが、定期的に、永遠に、たとえ私がそこにいなかったとしても。まるで魔法のように感じました!私たちには無かった Crontab.guru または、より複雑な仕様のいくつかを理解するよう AI に依頼することもできます。ただ、 マニュアルページ そして古き良き時代の試行錯誤。私の場合はほとんどがエラーでした。しかし、繰り返しの間隔について楽しく複雑な仕様を指定することはできても、「毎週火曜日の午前 7 時にこのスクリプトを実行する」というような非常に動的なものを指定することはできませんでした。 最後の火曜日でない限り 今月の…」少なくとも、crontab 仕様の構文を厳密に使用することはできませんでした。しかし、私は最近、より複雑で動的なシナリオに対応するために crontab に任意のチェックを追加するのはまったく難しいことではないという、ちょっと恥ずかしいひらめきを感じました。毎月火曜日の午前 7 時にスクリプトを実行したい を除外する 最後の火曜日は?それは簡単です。毎週火曜日午前 7 時に実行されるように crontab を設定します。ただし、 次…

よりダイナミックな cron ジョブ • George Mandis

1766822725
2025-12-27 06:10:00

• 約600単語 • 3分で読めます

私は 2000 年代初頭に cron ジョブについて学んだことを覚えています。コンピューターに「行く」と命令できる する 何かが、定期的に、永遠に、たとえ私がそこにいなかったとしても。まるで魔法のように感じました!

私たちには無かった Crontab.guru または、より複雑な仕様のいくつかを理解するよう AI に依頼することもできます。ただ、 マニュアルページ そして古き良き時代の試行錯誤。私の場合はほとんどがエラーでした。

しかし、繰り返しの間隔について楽しく複雑な仕様を指定することはできても、「毎週火曜日の午前 7 時にこのスクリプトを実行する」というような非常に動的なものを指定することはできませんでした。 最後の火曜日でない限り 今月の…」

少なくとも、crontab 仕様の構文を厳密に使用することはできませんでした。しかし、私は最近、より複雑で動的なシナリオに対応するために crontab に任意のチェックを追加するのはまったく難しいことではないという、ちょっと恥ずかしいひらめきを感じました。

毎月火曜日の午前 7 時にスクリプトを実行したい を除外する 最後の火曜日は?それは簡単です。毎週火曜日午前 7 時に実行されるように crontab を設定します。ただし、 その週はまだ同じ月の一部です:

0 7 * * Tue [ "$(date -v+7d '+%m')" = "$(date '+%m')" ] && /path/to/your_command

同じ月の一部ではない場合は、現在、 最後 その月は火曜日なので、スクリプトは実行されません。

注記: -v フラグは macOS/BSD フレーバー用です。 date。 Linux で使用したいのは -d +7 days その代わり。

これは実際には cron ジョブとはまったく関係がなく、 POSIX「テスト」コマンド これが角括弧で使用しているものです。私はシェル スクリプトでこれらのツールを見たり利用したりすることに慣れていますが、何らかの理由で、ここ crontab でそのツールに手を伸ばすとは考えもしませんでした。

括弧の省略表現を省略して、次のように簡単に書き直すこともできます。おそらく読みやすいでしょう。

0 7 * * Tue test "$(date -v+7d '+%m')" = "$(date '+%m')" && /path/to/your_command

crontab レベルでもう少し複雑なチェックを追加することは、最近まで思いつきませんでした。

他にできる賢い cronjob 機能:

休日限定の cron ジョブ

おそらく、特定の年のすべての米国の祝日のリストを取得し、便利なファイルに保存します。 HOLIDAYS.txt どこかにファイルします:

curl -s https://date.nager.at/api/v3/PublicHolidays/2025/US | jq -r '.[].date' > HOLIDAYS.txt

これで、毎週火曜日の午前 7 時に実行されるように cron ジョブを更新できるようになりました を除外する 休日:

0 7 * * Tue ! grep -qx "$(date +%F)" HOLIDAYS.txt && /path/to/your_command

または逆に、1 日に 1 回チェックする休日限定のスクリプトを実行することもできます。

@daily grep -qx "$(date +%F)" HOLIDAYS.txt && /path/to/your_special_holiday_command

晴れた日だけ走る

国立気象局 あらゆる種類の楽しいデータを利用できるようになります (見つけられれば…)。晴天時のみに 1 時間ごとに実行するスクリプトはどうでしょうか?

@hourly curl -s "https://api.weather.gov/gridpoints/TOP/32,81/forecast/hourly" | jq -r '.properties.periods[0].shortForecast' | grep -qi clear && /path/to/your_command

それとも曇天のときでしょうか?

@hourly curl -s "https://api.weather.gov/gridpoints/TOP/32,81/forecast/hourly" | jq -r '.properties.periods[0].shortForecast' | grep -qi cloudy && /path/to/your_command

何かニュース価値がある場合にのみ実行する

あるいは、私が知っている他のすべてのスタートアップと歩調を合わせて、問題に AI を投入し、LLM の神が何かニュース価値があると判断した場合にのみスクリプトを実行するかもしれません。

@hourly curl -s "https://news.google.com/rss?hl=en-US&gl=US&ceid=US:en" | llm --system "Reply strictly 'yes' or 'no'. Does anything in the news today suggest it is a good reason to run a script that I only want to send when the world is on fire and crazy and terrible things are happening?"  | tr -d '[:space:]' | tr '[:upper:]' '[:lower:]' | grep -qx yes && /path/to/oh_no

2025 年 9 月 21 日日曜日に公開。この記事は次のように読みます。 マークダウン または 平文

これを読んで楽しかったなら、検討してください ニュースレターに登録するハッカーニュースで共有する または 私を雇う

#よりダイナミックな #cron #ジョブ #George #Mandis

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。