私はThinkPadノートブックのファン速度を制御する「thinkfan」というサービスを実行しています。サービスはフォルダの一時ファイルからデータ温度を読み込みます。ファイルは頻繁に作成されますが、ファイルが作成される前にThinkFanが起動するとクラッシュします。起動時にこれが発生しないように、次の行を追加しました。
ExecStartPre=/bin/sleep 20
システムファイルに
[Unit]
Description=simple and lightweight fan control program
After=syslog.target
[Service]
Type=forking
EnvironmentFile=-/etc/default/thinkfan
ExecStartPre=/bin/sleep 20
ExecStart=/usr/sbin/thinkfan $DAEMON_ARGS
PIDFile=/var/run/thinkfan.pid
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
問題は、待機状態で目が覚めたときにも同じことが起こるため、ラップトップが再起動するたびに数秒ほど目覚めた後にサービスを再起動する方法を探しています。
答え1
私はこれを行う方法を見つけました。 systemd ファイルを次に変更します。
[Unit]
Description=simple and lightweight fan control program
After=syslog.target
After=suspend.target
[Service]
Type=forking
EnvironmentFile=-/etc/default/thinkfan
ExecStartPre=/bin/sleep 20
ExecStart=/usr/sbin/thinkfan $DAEMON_ARGS
PIDFile=/var/run/thinkfan.pid
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
[Install]
WantedBy=multi-user.target
After=suspend.target
ちょうどとを追加しましたRestart=always
。