파일과 관련된 데비안 서비스 동작

파일과 관련된 데비안 서비스 동작

현재 개발 중인 C 프로그램인 실행 파일이 있습니다. 구성 파일을 로드합니다. 이에 따라 특정 동작이 수행됩니다. 이것은 테스트되었으며 셸에서 시작할 때 작동합니다.

하지만 저는 시스템부터 시작하고 싶어서 서비스를 제공하고 있습니다. 서비스는 부팅 시 실행 파일을 시작합니다.

이렇게 하면 프로그램은 항상 파일이 무시된 것처럼 기본 동작을 갖게 됩니다.

이유가 있어서 이런 일이 일어나는 걸까요? 내 현재 추측으로는 어떤 이유로 파일에 액세스할 준비가 되지 않았을 때 프로그램이 시작될 수 있다는 것입니다(내 프로그램은 사용자가 직렬 포트를 통해 시스템에 로그인하기 훨씬 전에 예상대로 프레임 버퍼에 쓰기 때문입니다).

이것이 맞는지, 어떻게 고칠 수 있는지 모르겠습니다. 미리 감사드립니다.

답변1

실행 파일이 현재 작업 디렉터리에서 구성 파일을 찾나요? 그렇다면 부팅 시 시작된 모든 서비스는 /서비스에서 명시적으로 다르게 지정하지 않는 한 일반적으로 작업 디렉터리가 로 설정된다는 점을 알아야 합니다.

.service파일 에서 다음과 같은 줄을 사용할 수 있습니다

WorkingDirectory=/home/user/demo

cd필요한 디렉터리에 도달한 서비스 프로세스를 시작합니다 . man systemd.exec자세한 내용은 참조하십시오 .

아니면 실행 파일이 환경 변수 값을 HOME구성 파일 경로 이름의 일부로 사용하려고 합니까? 서비스는 HOME환경 변수를 전혀 설정할 필요가 없습니다 . 필요한 경우 .service다음 줄을 사용하여 파일 에 설정할 수 있습니다 .

Environment="HOME=/home/user"

그러나 이는 시스템 서비스로 실행되는 프로그램의 경우 다소 예상치 못한 일입니다. 대신 다른 환경 변수를 사용 HOME하고 명시적으로 기록할 수도 있습니다.

아직 지정하지 않은 경우 프로그램 내에서 구성 파일의 위치를 ​​전체 경로 이름으로 지정할 수 있습니다.

관련 정보