2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

systemd での シャットダウン・再起動時に、サービスの停止順序を指定するには

Last updated at Posted at 2021-06-30

systemd と SysVinit の シャットダウンフローの違い

SysVinit の場合は、単純にランレベルに応じた rc.dフォルダ にある K で始まるファイルを ファイル名の昇順で、コマンドライン引数に stop を付けて 順番に起動していくだけ でした。

systemd の場合は、特別な指定をしない限りは、意図しない順サービスを落とそうとする可能性があるようです。
つまり、必ずしも、起動した逆順で サービス停止されるわけではないということです。
その為、互いに依存性があり、先に 別サービスを落とさないと 落とせないサービスがある場合、シャットダウン中にフリーズしてしまう わけです。

どうやって、依存する別サービスを 先に止めるか

やる事は単純。shutdown.target に、起動時と 同じように、依存性指定を入れておけばよい のです。

bash
# cp -p /usr/lib/systemd/system/shutdown.target /etc/systemd/system/
# vim /etc/systemd/system/shutdown.target

/etc/systemd/system/shutdown.target の [Unit]After指定で、シャットダウンプロセスに入る前に 事前に止めておかないといけない Unit を指定します。

例えば、

shutdown.target
After=httpd.service postgresql.service rc-local.service

とすれば、これらの 依存サービスを先に止めた上で、シャットダウンプロセスが 安全に始まります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?