今日、私はArch Linuxシステム(ローリングバージョン、systemd)にhavgedをインストールしました。
# systemctl start haveged
デーモンを起動する必要がありますが動作しません。ログの内容は次のとおりです。
systemd[3916]: haveged.service: Failed at step STDIN spawning /usr/bin/haveged: No such file or directory
systemd[1]: haveged.service: Main process exited, code=exited, status=208/STDIN
systemd[1]: haveged.service: Unit entered failed state.
systemd[1]: haveged.service: Failed with result 'exit-code'.
ログの最初のエラーメッセージが正しくありません。/usr/bin/haveged
もちろん存在します。パッケージを削除して再インストールしてみましたが、役に立たなかったため、デーモンが正しく起動しませんでした。私もrestart systemdを使ってみましたが、systemctl daemon-reload
何の役にも立ちませんでした。
最後にシステムを再起動し、チャジャン、正常に起動が始まりました。
なぜ再起動する必要がありますか?再起動を防ぐために異なる方法を実行する方法はありますか?
アップデート:ユニットファイルの内容:
$/usr/lib/systemd/system/haveged.service
[Unit]
Description=Entropy Harvesting Daemon
Documentation=man:haveged(8)
[Service]
ExecStart=/usr/bin/haveged -F -w 1024 -v 1
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
答え1
ログの最初のエラーメッセージが正しくありません。
何の問題もありません:)
systemd[3916]: haveged.service: Failed at step STDIN spawning /usr/bin/haveged: No such file or directory
コア情報はFailed at step STDIN
どういう意味ですか?
指示がありますStandardInput=
:
実行されたプロセスのファイル記述子0(STDIN)がどこに接続されるかを制御します。 null、tty、tty-force、tty-fail、またはソケットのいずれかを使用します。
...
この設定はデフォルトで空です。
サービスの起動に失敗しましたここ:
r = setup_input(context, params, socket_fd);
setup_input
失敗ここ:
case EXEC_INPUT_NULL:
return open_null_as(O_RDONLY, STDIN_FILENO);
そしてopen_null_as
:
fd = open("/dev/null", flags|O_NOCTTY);
if (fd < 0)
return -errno;
if (fd != nfd) {
r = dup2(fd, nfd) < 0 ? -errno : nfd;
safe_close(fd);
} else
r = nfd;
したがってopen("/dev/null", O_RDONLY|O_NOCTTY)
、失敗します。No such file or directory
再現できますか?
- 明確なパッケージ
- 再起動
- インストールパッケージ
- システム制御の開始
出力を添付できますかsystemctl cat haveged
?