질문 : systemd로 프로세스를 시작하고 해당 프로세스에 선택한 작업 디렉토리를 할당 할 수 있습니까?
시작하려는 서비스가 systemd
있습니다. 해당 서비스가 시작될 때 현재 작업 디렉토리를 지정할 수 있기를 원합니다. 사용중인 경우이 작업을 수행하는 방법을 알고 init
있지만에 문제가 systemd
있습니다.
여기 내가 일하려고 노력한 것이 있습니다.
내 서비스
파이썬으로 작성된 간단한 유틸리티 ( "은 listDir")을 생성 및 배치 /opt/bin/listdir
:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
내 구성 파일
그런 다음 listdir.service
파일을 systemd
만들고 여기에 배치했습니다. /lib/systemd/system/listdir.service
:
[Unit]
Description=Test of listing CWD.
[Service]
ExecStartPre=chdir /usr/local
ExecStart=/opt/bin/listdir
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
문제
systemctl start listdir
시스템 로그를 실행 하면 루트 디렉토리 ( "/")가 현재 작업 디렉토리로 기록됩니다. 물론 프로세스를 시작하기 전에 디렉토리를 변경 /usr/local
한다고 생각했기 때문에 현재 디렉토리로 예상 되었습니다 ExecStartPre
.
분명히, 나는 systemd
그것이 쉘 스크립트가 아니라는 것을 알고 있지만 쉘 스크립트와 같은 것을 작동시킬 것이라고 상상하고 있습니다. 누군가 내가해야 할 일에 대한 아이디어를 줄 수 있습니까? ?를 사용하여 작업 디렉토리를 설정할 수도 systemd
있습니까? 감사!
편집 : 시스템 로그에 오류가보고되었습니다. (방금 알았습니다.)
Executable path is not absolute, ignoring: chdir /usr/local
그래서, chdir
쉘 명령, 그리고 실행 자체입니다. 괜찮아. 그러나 여전히 디렉토리를 변경하는 방법이 systemd
있습니까?