systemctlのタイムアウト値の変更方法

前置き

どうも、uniunixでっす。

最近の世間はコロナで騒がしいが、私は全く影響を受けないので超ラク。

「コロナのせいで仕事が休みで外でやることも無いし暇になった」
とか、やることを見出せないクソチ〇ンパンジー脳の奴がちらほらいるが、むしろ家計を見直すとか、将来設計するとか、部屋の掃除をするとかの発想は無いのかね?
こういう奴が社畜極めるんやろな。

まぁそんな脳内蛆虫湧太郎君はほっといて、今回はsystemctlのタイムアウト設定の備忘録。

CentOS8でARKサーバを構築したが、systemctlでrestartしたときにタイムアウトで途中で再起動に失敗することがある。

ARKってなんで再起動にあんなに時間かかるんやろな。
再起動時にメモリ上の内容をストレージに書き込む量が多いのかね。
まぁ検証してないから知らんけど。

とりあえずタイムアウト値を伸ばせば解決すると思われ。

ということで、今後いろんなアプリでも役に立ちそうなので下記に設定方法を記載します。

タイムアウト制限の変更

/etc/systemd/system/ 内に保存されているユニットファイルを編集するか、ユニットファイルをコピーまたは自作します。

今回は ark.service を自作してるので、これを編集します。

vi /etc/systemd/system/ark.service

[Service] セクションに TimeoutStartUSec 値を指定すればタイムアウト値を設定できるので、今回は5分ということで300を設定。

[Unit]
Description=ARK server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
ExecStartPre=/data/steam/steamcmd.sh +login anonymous +force_install_dir /data/steam/ARK/ +app_update 376030 +quit
ExecStart=/data/steam/ARK/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen?SessionName=NeoUni?ServerPassword=*****?ServerAdminPassword=***** -server -log
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
User=root
Group=root
TimeoutStartSec=300    #追記

[Install]
WantedBy=multi-user.target

systemd デーモンを再読み込み。(忘れがち)

systemctl daemon-reload

ちなみに通常サービスのデフォルトのタイムアウト値は90のようです。

ARKに限らず、今後systemctlのstopやstart、restartでタイムアウトが発生したら本設定で切り分けできそうですね。

以上!

コメント

タイトルとURLをコピーしました