systemd에 의해 시작된 프로세스를 다른 프로세스에서 사용할 수 없는 이유는 무엇입니까?

systemd에 의해 시작된 프로세스를 다른 프로세스에서 사용할 수 없는 이유는 무엇입니까?

저는 systemd에 의해 자동으로 시작되고 odriveagent라는 바이너리를 실행하는 odrived.service라는 서비스를 작성했습니다. 작동하거나 작동한다고 생각합니다. systemctl status odrived.serviceodriveagent가 시작되었음을 표시하기 때문입니다. 그러나 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가 루트로 실행되고 있었습니다. 반면에 일반 사용자로 클라이언트 스크립트를 사용하려고 시도했는데 클라이언트 스크립트가 루트 사용자가 소유한 odriveagent 프로세스를 찾을 수 없게 되었습니다.

Derek Fish and Chips가 제안한 것처럼 클라이언트 스크립트를 루트로 실행하면 작동하지만 서비스 파일에 사용자를 지정하는 것이 더 적절한 해결책이라고 생각합니다. 당신의 도움을 주셔서 감사합니다!

관련 정보