systemd タイマー:OnCalendar の解析とユニット生成
Web処理はすべてブラウザ内で完結します。データは送信されません
`OnCalendar=` は cron に似ていますが挙動は同じではなく、落とし穴は細部にあります。`a/b` はステップ(`*:0/15` は毎時の 0・15・30・45 分)、`~N` は月末から数えた日、曜日と月は名前で書けます。最も間違えやすいのは、曜日と日付を同時に指定すると「AND」になる(cron の「OR」と逆)という点です。本ツールは選んだタイムゾーンで次回以降の実行時刻を計算し(ローカル時刻と UTC を併記)、式を項目ごとに解説し、対になる .timer と .service を生成します。 解析と計算はすべてブラウザ内で完結します(タイムゾーン換算はブラウザ標準の日付機能を使用)。通信も送信も行いません。
機能
- *、範囲 a..b、ステップ a/b、名前での曜日・月、~(月末から数える)に対応
- 選択したタイムゾーンで次回以降の実行時刻を 1〜20 件計算
- 各時刻をローカル時刻(オフセット付き)と UTC で併記
- 曜日・日付・時刻がそれぞれ何を意味するかを解説
- 対になる .timer と .service を生成
- .timer ファイル全体の貼り付けにも対応
- systemd と cron の「AND / OR」の違いを明示
- すべてローカルで計算し、通信しません
使い方
- OnCalendar の値を入力するか、.timer ファイル全体を貼り付けます
- タイムゾーンと表示する件数を選びます
- 次回以降の実行時刻と項目ごとの解説を確認します
- 生成された .timer と .service をコピーします
よくある質問
- OnCalendar と cron は何が違うのですか?
- 主に 2 点です。1 つ目は、曜日と日付を同時に指定したとき、cron は「OR」、systemd は「AND」であることです。cron の `0 9 * * 1` は毎週月曜 9 時ですが、systemd の `Mon *-*-01 09:00` は「月曜かつ 1 日」で、年に数回しか実行されません。2 つ目は、systemd では `OnCalendar=` を複数行書いて 1 つのユニットを起動でき(これが OR に相当します)、曜日や月を名前で書けて読みやすいことです。
- *:0/15 はどういう意味ですか?
- 「毎時 0・15・30・45 分」という意味です。`0/15` は「0 から始め、15 刻みで、そのフィールドの上限まで」(分なら 59)と読み、0・15・30・45 になります。`0/15` を「0 から 0」と誤読すると 0 だけが残ります — エラーにはならず、結果は完全に間違いです。
- なぜタイムゾーンで結果が変わるのですか?
- `OnCalendar=` がローカルタイムで評価されるからです。同じ `*-*-* 03:00:00` でも、UTC のマシンでは 03:00 UTC、上海のマシンでは 19:00 UTC(前日)になります。そこで本ツールはタイムゾーンを明示させ、ローカル時刻と UTC を併記します。ユニットファイルを別のマシンへ移す前に、そのマシンのタイムゾーンを確認してください。
- `~` は何ですか?
- 月末から数えた日を表します。`*-*-~1` は毎月の最終日、`*-02-~03` は 2 月の最後から 3 日目です。しかも月の長さに自動で追従します(うるう年の 2 月は 29 日なので、最後から 3 日目は 27 日)。`28` を直接書くよりはるかに確実です。
- .timer になぜ .service が必要なのですか?
- systemd では、timer は「いつ実行するか」だけを決め、「何を実行するか」は service に書くからです。通常は同名で(`backup.timer` が `backup.service` を起動)、`Unit=` で別名も指定できます。本ツールは動く骨組みを生成するので、`ExecStart=` は自分のコマンドに置き換えてください。
関連ツール
設定ファイル検証
Webpackage.json、.env、robots.txt、sitemap.xml、HTTP レスポンスヘッダーを検証します。結論はエラー・警告・提案の 3 段階で、それぞれ理由を添えます。
Compose ↔ docker run
Webcompose の services 部分と docker run コマンドを双方向に変換します。対応物のないキーは理由付きで列挙し、黙って捨てません。
Linux パーミッション
Web755・u+x,g-w・-rwxr-xr-x を相互変換し、各ビットを解説します。umask から新規ファイルとディレクトリの既定権限も算出。すべてブラウザ内で処理します。
URL 解析
WebURL を解析し、スキーム・ホスト・ポート・パス・クエリパラメータ・アンカーに分解します。パラメータは元の値とデコード値を並記。すべてブラウザ内で処理します。
UA 解析
WebUser-Agent を解析し、ブラウザ・バージョン・OS・デバイス種別・エンジンを判定します。判定はパターン照合による概算です。すべてブラウザ内で処理します。
HTTP ステータスコード
WebHTTP ステータスコードの検索。番号から意味を、キーワードから番号を引けます。1xx〜5xx の分類・利用場面・確認のポイント付き。すべてブラウザ内で処理します。