시스템 유닛 파일을 사용자 수준에서 작성할 때 고려할 사항
개시하다
시스템은 전체 시스템 시작과 사용자 레벨 시작 두 종류로 나뉜다.
Shell
(sudo) systemctl <SUB_COMMAND> <SERVICE_NAME> # system-wide
systemctl --user <SUB_COMMAND> <SERVICE_NAME> # user-level
유닛 파일*.service
을 쓸 때 전체 시스템에서 문제가 없지만 사용자 수준에서 사용할 수 없거나 제대로 시작할 수 없는 파일이 있기 때문에 미리 요약합니다.User/Group을 사용할 수 없습니다.
전체 시스템에서 수호 프로세스를 시작할 사용자를 지정하기 위해
User
또는 Group
를 사용할 수 있지만 사용자 레벨에서는 사용할 수 없습니다.[Service]
User=ubuntu
Group=ubuntu
발생한 문제
위 항목을 사용자 수준에서 작성하면 다음 오류가 발생합니다.
Log
foo.service: Failed to determine supplementary groups: Operation not permitted
foo.service: Failed at step GROUP spawning /usr/bin/env: Operation not permitted
해결책
User
또는 Group
만 삭제하면 됩니다.삭제한 후 데몬을 다시 불러오는 것을 잊지 마십시오.
Shell
systemctl --user daemon-reload
multi-user.target 사용 불가
전체 시스템
WantedBy
에서 때때로 지정multi-user.target
되지만 사용자 레벨에서도 사용할 수 없습니다.[Install]
WantedBy=multi-user.target
발생한 문제
이것을 써도 수호 프로세스를 시작할 수 있지만, 자동 시작이 효력이 발생하더라도 시스템이 시작될 때 수호 프로세스의 자동 시작은 효력이 발생하지 않습니다.
해결책
대체 사용 가능
default.target
.[Install]
WantedBy=default.target
참고로 상기 오류를 수정할 때 자동 시작을 유효하게 설정하면 잠시 비활성화하고 다시 사용해야 합니다.물론 수호 프로세스를 다시 불러와야 합니다.Shell
systemctl --user daemon-reload
systemctl --user disable <SERVICE_NAME>
systemctl --user enable <SERVICE_NAME>
올바르게 추가되었는지 확인하기 위해 다음 명령을 실행합니다.Shell
systemctl --user list-dependencies default.target
Reference
이 문제에 관하여(시스템 유닛 파일을 사용자 수준에서 작성할 때 고려할 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/noraworld/articles/systemd-unit-files-user-level-tips텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)