私は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として実行するとうまくいきますが、サービスファイルにユーザーを割り当てることがより適切な解決策だと思います。ご協力ありがとうございます!