ホーム
Systemdタイマー生成
systemd v240+ Standard•OnCalendar、OnBootSec、Persistentおよびジッター

Linux Systemd (.timer & .service) ユニット生成

OnCalendar スケジューリング、OnBootSec インターバル、Persistent 実行、ランダム遅延(ジッター)を備えた実用的な systemd タイマーおよびコンパニオンサービスユニットを設計・生成します。

プリセット:
スケジュール設定カレンダートリガー稼働中: "*-*-* 02:30:00" • 起動時キャッチアップ有効 (停止中にスキップされた回を起動直後に実行) • クラスター負荷スパイク防止のため最大 15m のランダムジッターを付与
入力
ユニット命名&基本情報/etc/systemd/system/
.timer
トリガー機構 (Trigger)
連携サービス実行構成 (Service)Type=oneshot
セキュリティ堅牢化&サンドボックスLinux名前空間
#!/usr/bin/env bash
# ==============================================================================
# Linux Systemd Unit Installer: db-backup.timer & db-backup.service
# Auto-generated by ToolsAA (https://toolsaa.com)
# ==============================================================================
set -euo pipefail

echo "=========================================================="
echo " [ToolsAA] Deploying Systemd Timer: db-backup"
echo "=========================================================="

if [ "$EUID" -ne 0 ]; then
  echo "[-] Error: Root privileges required. Re-run with: sudo bash $0" >&2
  exit 1
fi

TARGET_DIR="/etc/systemd/system"

# 1. Write companion service unit
echo "[+] Installing ${TARGET_DIR}/db-backup.service..."
cat << 'EOF' > "${TARGET_DIR}/db-backup.service"
[Unit]
Description=Daily Off-Peak Database Dump and Sync
Documentation=man:systemd.service(5)
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-db.sh --all --compress --dest /var/backups
WorkingDirectory=/var/backups
User=postgres
Group=postgres
TimeoutStartSec=1h
Nice=10

# Hardening & Sandboxing
NoNewPrivileges=true
ProtectSystem=full
ProtectHome=read-only
PrivateTmp=true
StandardOutput=journal
StandardError=journal
SyslogIdentifier=db-backup
EOF

# 2. Write timer unit
echo "[+] Installing ${TARGET_DIR}/db-backup.timer..."
cat << 'EOF' > "${TARGET_DIR}/db-backup.timer"
[Unit]
Description=Timer for Daily Off-Peak Database Dump and Sync
Documentation=man:systemd.timer(5)

[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true
RandomizedDelaySec=15m
AccuracySec=1m
Unit=db-backup.service

[Install]
WantedBy=timers.target
EOF

# 3. Apply secure unit file permissions (644)
chmod 644 "${TARGET_DIR}/db-backup.service" "${TARGET_DIR}/db-backup.timer"

# 4. Reload systemd daemon
echo "[+] Reloading systemd manager configuration..."
systemctl daemon-reload

# 5. Enable and immediately activate the timer
echo "[+] Enabling and starting db-backup.timer..."
systemctl enable --now "db-backup.timer"

# 6. Verify timer status and list upcoming triggers
echo ""
echo "=========================================================="
echo " [✓] Deployment Complete! Next Scheduled Executions:"
echo "=========================================================="
systemctl list-timers --all | grep -E "db-backup|NEXT" || true
echo ""
echo "To test service execution immediately:"
echo "  sudo systemctl start db-backup.service"
echo "To view execution logs:"
echo "  journalctl -u db-backup.service -f"
トリガー機構
calendar トリガー

*-*-* 02:30:00

実行コマンド
Type=oneshot

実行ユーザー: postgres • Nice値 (優先度): 10

サンドボックス&ジッター
完全サンドボックス

起動時キャッチアップ (Persistent): はい • ジッター: 15m

ゼロナレッジ・完全ローカル実行

すべてのデータ処理、解析、コード生成はお使いのブラウザ内部メモリで完結します。外部サーバーへの送信はゼロです。

超高速・即時リアクティブ演算

最適化されたクライアント側解析パイプラインにより、キーストロークと同時に遅延なくリアルタイムで結果を生成します。

公式仕様準拠・高信頼アーキテクチャ

IETF RFCや公式業界仕様に厳格に準拠し、エッジケースの安全な処理とメモリリークのない堅牢な実行を保証します。

技術リファレンス&アーキテクチャガイド

Linux Systemd (.timer & .service) ユニット生成ツール — リファレンスガイド

OnCalendar スケジューリング、OnBootSec インターバル、Persistent 実行、ランダム遅延(ジッター)を備えた実用的な systemd タイマーおよびコンパニオンサービスユニットを設計・生成します。

主要パラメータ&設定項目

unitNamestring

タイマーおよび対になるサービスユニットの共通ベース名(<unitName>.timer および <unitName>.service を生成)。

初期値: backup-job
onCalendarstring

定期的な日時実行を指定する systemd.time(7) 準拠のカレンダーイベント式。

初期値: *-*-* 03:00:00
onBootSecstring

システム起動(ブート)完了からタイマーが初回発火するまでの相対待機時間。

初期値: 15min
persistentboolean

システム停止中に予定時刻を跨いだ場合、次回起動時に即座に未実行ジョブを取り戻す(Catch-up)設定。

初期値: true
randomizedDelaySecstring

複数ノードでの同時実行による負荷スパイク(Thundering Herd)を防ぐためのランダム遅延ジッター。

初期値: 10m
execStartstring

コンパニオンサービスユニットによって実行されるスクリプトまたはバイナリの絶対パスと引数。

初期値: /usr/local/bin/backup.sh

プロの活用テクニック&推奨設定

systemd-analyze calendar で構文を事前検証

デプロイ前にターミナルで systemd-analyze calendar '<式>' を実行すると、解析された正規化日時や次回以降の実行予定日時を確認し、設定ミスを未然に防止できます。

タイマー名とサービス名を同名で統一

<name>.timer と <name>.service を同じファイル名にしておくと、[Timer] セクション内に明示的な Unit= を指定しなくても systemd が自動で対応サービスを呼び出します。

バッチ処理には Type=oneshot を採用

コンパニオンサービスには Type=oneshot と RemainAfterExit=no を設定することで、タスク完了時にプロセスがクリーンに終了し、次回タイマー発火時の状態衝突を防げます。

systemctl list-timers で実行予定を俯瞰

システムに登録されているすべてのタイマーの次回実行日時、残り時間、前回の実行結果は systemctl list-timers --all で一元監視できます。

よくあるトラブルと解決策

タイマーが active なのにサービスが実行されない

ユニットファイルを /etc/systemd/system/ に配置・編集した後は必ず sudo systemctl daemon-reload を実行してください。また、ExecStart には必ず絶対パスを指定し、journalctl -u <name>.service -e でエラーログを確認してください。

サーバー再起動後にメンテナンスジョブがスキップされる

[Timer] セクションに Persistent=true を指定してください。systemd は /var/lib/systemd/timers/stamp-<name>.timer に最終実行時刻を保持するため、この設定がないと停止中のスケジュールは破棄されます。

毎秒連続でトリガーがループ実行されてしまう

*-*-* *:*:* のように秒単位をワイルドカードにすると毎秒実行されます。*-*-* 02:00:00 のように秒を明示するか、*:0/15(15分ごと)のように適切なインターバル構文を指定してください。

よくある質問 (FAQ)

従来の crontab ではなく systemd timer を使う利点は何ですか?▼

journalctl による集中ログ管理、cgroups による CPU・メモリリソース制限、マイクロ秒精度の制御、依存関係(After=network-online.target など)の宣言、そして Persistent による anacron 同等の起動時補填が単一の仕組みで完結する点です。

生成された .timer と .service ファイルはどこに配置すればよいですか?▼

システム全体のデーモンとしては /etc/systemd/system/ に配置します。root 権限不要の一般ユーザー単位のジョブとして実行する場合は ~/.config/systemd/user/ に配置し、systemctl --user で管理します。

タイマーを有効化して起動する手順は?▼

sudo systemctl daemon-reload を実行後、sudo systemctl enable --now <name>.timer でタイマーを即時有効化・起動します。状態確認は systemctl status <name>.timer で行います。

1つのタイマーから複数のサービスを起動できますか?▼

デフォルトでは同名または Unit= で指定した1つのサービスが起動します。複数実行したい場合は、target ユニットをトリガーするか、ラッパースクリプトを介して各処理を順次呼び出す設計が推奨されます。

関連するおすすめ開発ツール

すべてのツール →
TypeScript (tsconfig.json) 設定ジェネレーター開発ツール

Next.js、Node.js、Vite、ライブラリ開発に最適な現代的で堅牢な tsconfig.json 設定を生成。厳格モード、パスエイリアス、モジュール解決を完全サポート。

ツールを開く→
JSONからClickHouse CREATE TABLE DDL生成ツール開発ツール

サンプルJSONドキュメントを解析し、MergeTreeエンジン、UInt/Int/Float/String/DateTime型、Array/Nestedカラムマッピングを備えた最適なClickHouse SQL DDLに変換します。

ツールを開く→
JSONからGoogle BigQueryテーブルスキーマ生成ツール開発ツール

JSONオブジェクトを解析し、RECORDモード、STRING、INTEGER、NUMERIC、TIMESTAMPフィールドを含むGoogle Cloud BigQueryテーブルスキーマJSONを自動推論・変換します。

ツールを開く→
JSONからSnowflake CREATE TABLE DDL生成ツール開発ツール

JSONペイロードやスキーマから、VARIANT、VARCHAR、NUMBER、BOOLEAN、TIMESTAMP_NTZなどの最適化されたデータ型を備えたSnowflake SQL CREATE TABLE文を自動生成します。

ツールを開く→
JSON / YAML から Terraform HCL 変数・Locals 生成ツール開発ツール

JSON および YAML データを Terraform HCL の変数型制約 (type = object({...}))、デフォルト値、locals ブロック、terraform.tfvars 定義へ自動変換します。

ツールを開く→
OpenAPI・Swagger GraphQL SDL スキーマ変換 技術リファレンス開発ツール

OpenAPI 3.0/3.1およびSwagger 2.0のRESTエンドポイント、リクエストボディ、JSON SchemaをGraphQL SDLの型定義、Query、Mutation、Inputへマッピングする開発者向け技術仕様書。

ツールを開く→