私がsystemdに触れたのは今回が初めてです。ネットワークの起動後にサービスを開始するように管理する方法の解決策が見つかりません。knockd.service
Raspbianシステムから起動しようとしています。
起動後、サービスが実行されていることを確認してください。
systemctl status knockd
Loaded: loaded (/lib/systemd/system/knockd.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2019-06-27 14:36:26 CEST; 7min ago
Docs: man:knockd(1)
Process: 516 ExecStart=/usr/sbin/knockd $KNOCKD_OPTS (code=exited, status=1/FAILURE)
Main PID: 516 (code=exited, status=1/FAILURE)
Jun 27 14:36:26 pins2 systemd[1]: Started Port-Knock Daemon.
Jun 27 14:36:26 pins2 knockd[516]: could not get IP address for eth0
Jun 27 14:36:26 pins2 systemd[1]: knockd.service: Main process exited, code=exited, status=1/FAILURE
Jun 27 14:36:26 pins2 systemd[1]: knockd.service: Unit entered failed state.
Jun 27 14:36:26 pins2 systemd[1]: knockd.service: Failed with result 'exit-code'.
私の考えの問題はこんな感じです。
could not get IP address for eth0
私がたくさん調べた結果(例えばここそしてそこ)良いヒントが見つかりましたが、残念ながらまだ動作しません。私の.service
ファイルは次のとおりです。
systemctl cat knockd
# /lib/systemd/system/knockd.service
[Unit]
Description=Port-Knock Daemon
Documentation=man:knockd(1)
#Requires=network-online.target
#Wants=network-online.target
After=network-online.target
[Service]
EnvironmentFile=-/etc/default/knockd
ExecStart=/usr/sbin/knockd $KNOCKD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
SuccessExitStatus=0 2 15
ProtectSystem=full
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN
[Install]
WantedBy=multi-user.target
Alias=knockd.service
使ったAfter=network-online.target
私の単位部分。それをやってみましたが、Requires=
どうすればいいですかWants=
?
起動後にシステムにIPアドレスがあり、手動でサービスを開始すると正常に動作します。より高速なネットワークを持つ他のネットワークでは、ターゲットがなくても問題はありませんでしたnetwork-online
。
想像できるように、ノックが安定して起動することが非常に重要です。そうでなければロックできるからです。
これが安定して動作する場合、起動後しばらくしてネットワークケーブルが接続されていても機能しますか?
ところで、ファイルを編集してはいけないことを知っています.service
。/lib/systemd/...
可能な限り上書きの問題を解決するために編集するだけです。すべてがうまくいったら、この問題を解決します。ご協力ありがとうございます。
ベストアンサー1
Wants=
このディレクティブはデフォルトでは依存関係チェーンには含まれていないため、必要ですnetwork-online.target
(systemd.special(7)マンページを参照)。
ifupdown-wait-online.service
NetworkManagerを使用していない場合は、有効にする必要があります(systemctlを有効にするifupdown-wait-online.service)。