「設定 - Systemdサービスユニット」の版間の差分

ナビゲーションに移動 検索に移動
 
275行目: 275行目:
  # または
  # または
  sudo systemctl unmask <ユニット名>
  sudo systemctl unmask <ユニット名>
<br><br>
== サービスの遅延実行 ==
Systemdサービスを遅延起動する方法には、主に2つの方法がある。<br>
<u>ただし、タイマユニットを使用する方法が一般的であり、より柔軟性が高い。</u><br>
* Systemdのタイマーユニットを使用する方法
* Systemdサービスファイル自体に遅延を設定する方法
<br>
==== タイマユニットを使用する方法 ====
まず、実行するコマンドまたはプログラムを起動するSystemdサービスファイルを作成する。<br>
<syntaxhighlight lang="ini">
[Unit]
Description=My delayed service
[Service]
ExecStart=<実行するコマンドまたはプログラムのパス> [コマンドまたはプログラムのオプション]
</syntaxhighlight>
<br>
次に、特定のSystemdサービスファイルをどのタイミングで起動するかを指定するタイマファイルを作成する。<br>
<syntaxhighlight lang="ini">
[Unit]
Description=Timer for my service
[Timer]
OnBootSec=30      # 30秒後に起動する場合
#OnBootSec=10min  # 10分後に起動する場合
OnUnitActiveSec=24h      # サービスが最後にアクティブになってから24時間後に再びサービスを起動する (繰り返し実行する場合)
Unit=<タイマ起動するsystemdサービスファイル名>
[Install]
WantedBy=timers.target  # タイマをシステムのタイマターゲットに関連付けて、システム起動時にタイマを有効にする
</syntaxhighlight>
<br>
Systemdサービスファイルとタイマファイルを、/etc/systemd/systemディレクトリ、または、~/.config/systemd/userディレクトリに配置する。<br>
Systemdサービスのデーモンを再読み込みする。<br>
# /etc/systemd/systemディレクトリに保存した場合
sudo systemctl daemon-reload
# ~/.config/systemd/userディレクトリに保存した場合
systemctl --user daemon-reload
<br>
タイマサービスを有効または開始する。<br>
これにより、指定時間後にSystemdサービスが自動的に起動するようになる。<br>
# /etc/systemd/systemディレクトリに保存した場合
sudo systemctl enable <タイマファイル名  例: my_service.timer>  # 起動時に開始する場合
sudo systemctl start  <タイマファイル名  例: my_service.timer>  # 通常起動する場合
# ~/.config/systemd/userディレクトリに保存した場合
systemctl --user enable <タイマファイル名  例: my_service.timer>  # 起動時に開始する場合
systemctl --user start  <タイマファイル名  例: my_service.timer>  # 通常起動する場合
<br>
==== Systemdサービスファイル自体に遅延を設定する方法 ====
Systemdサービスファイル内に<code>ExecStartPre</code>キーで時間を指定して、サービスの実行前に遅延 (例: <code>sleep</code>コマンドを使用) を挿入する方法もあるが、この方法は推奨されない。<br>
これは、Systemdのタイマ機能を使用する方法と比較して、柔軟性に欠けることやシステムの起動プロセスを不必要に遅延させる可能性がある。<br>
<br>
そのため、タイマユニットを作成および使用して、サービスの起動タイミングを細かく制御することが推奨される。<br>
<br><br>
== Systemdサービスファイルの構文の確認 ==
Systemdサービスファイル全体の構文を確認する。<br>
これにより、問題のある部分を特定して、修正することができる。<br>
sudo systemd-analyze verify <Systemdサービスファイルまたはタイマファイル等のパス>
<br>
訂正後は、Systemdサービスファイルを再読み込みして、変更を有効にする。<br>
sudo systemctl daemon-reload
# または
systemctl --user daemon-reload
<br><br>
<br><br>


案内メニュー