systemdによって開始されたプロセスが他のプロセスで利用できないのはなぜですか?

systemdによって開始されたプロセスが他のプロセスで利用できないのはなぜですか?

私はsystemdによって自動的に起動し、odriveagentというバイナリを実行するodrived.serviceというサービスを作成しました。うまくいくか働くと思います。systemctl status odrived.serviceこれは、odriveagentが起動したことを示すためです。ただし、odriveagentに依存するスクリプトを実行しようとすると、スクリプトはodriveagentが起動しなかったというエラーを表示します。

しかし、チュートリアルに従うとAoドライブホームページ端末に手動で入ると、nohup "home/user/.odrive-agent/bin/odriveagent" > /dev/null 2>&1 &私のスクリプトが起動したodriveagentを見つけて実行できました。

このエラーを発生させるsystemdが起動したプロセスに特別なものはありますか?

以下は私のodrive.serviceコードです。

[Unit]
Description=ODrive Sync Agent Daemon

[Service]
ExecStart=/home/user/.odrive-agent/bin/odriveagent

[Install]
WantedBy=multi-user.target

答え1

ムルとフィッシュ&チップスデリックの助けを借りて答えを見つけたと思います。彼らが疑うようにodrive.serviceのユーザーを指定しなかったので、私のodrive.serviceがrootとして実行されていました。一方、通常のユーザーとしてクライアントスクリプトを使用しようとしましたが、クライアントスクリプトはrootユーザーが所有するodriveagentプロセスを見つけることができませんでした。

Derek Fish and Chipsが提案したように、クライアントスクリプトをrootとして実行するとうまくいきますが、サービスファイルにユーザーを割り当てることがより適切な解決策だと思います。ご協力ありがとうございます!

関連情報