기본 시스템 서비스 파일 작성


103

사용자가 localhost에서 HTTP를 통해 상호 작용하는 Nodejs 응용 프로그램을 개발 중입니다. 실제로는 매개 변수가없고 데몬에는 사실상 종속성이 없으며 로그인 시간만으로 가동하면됩니다.

시작 스크립트에 대한 각 플랫폼의 관용구를 따르고 싶습니다. 이는 Ubuntu에서 Upstart를 의미하고 Fedora에서 시스템을 의미합니다.

  • 시스템화 된 시스템 파일을 작성하는 데 유용한 자습서가 있습니까?
  • 알아야 할 '모범 사례'가 있습니까?

나는 이러한 자원들을 발견했다 :

나는 주로 참조로 사용할 API와 기본 형식을 찾고 있습니다.


systemd에 대한 아치 리눅스 위키 페이지는 서비스 파일 작성에 대한 흥미로운 부분이있다.
Rudy Matela

> man systemd.service>> man systemd.unit
truezion

답변:


29

Systemd 매뉴얼 페이지 부터 시작하겠습니다 . 시스템 및 서비스의 포괄적 인 리소스를 나타냅니다.

도있다 freedesktop Systemd 자주 묻는 질문 .


43
매뉴얼 페이지는 유용하지만 (더 깔끔했으면 좋겠다) 기본 시스템 파일 튜토리얼이 있습니까? 어떤 부품이 필요한지, 어떤 부품이 권장되는지, 어떤 부품이 선택 품목인지와 같이. 매뉴얼 페이지는 내가 이미 시스템 파일 시스템 전문가라고 가정하는 것 같습니다.
beatgammit

불행히도 내가 아는 것은 아닙니다. initscript를 작성하는 경우 initscript 작성 방법을 이미 알고 있다고 가정합니다. 아치 스크립트를 살펴보고 필요한 것과 비슷한 것을 선택하십시오. archlinux.org/packages/community/i686/systemd
jasonwryan

1
감사! 귀하의 도움과 내가 찾은 블로그를 통해 기본적인 블로그를 만들 수있었습니다. Systemd는 upstart 또는 이전 systemv init 데몬보다 훨씬 좋습니다.
beatgammit

49
거기에서 시작해 볼 시간이있는 사람. 내 말은, 당신이하는 일을 잘 알고 있다면 훌륭한 참고 자료이지만 성스러운 암소 매뉴얼 페이지는 복잡합니다.
Jonathan Komar

1
@ macmadness86 OP는 권위있는 출처를 찾고있었습니다 (마지막 단락 참조). 대부분의 경우 유사한 앱의 서비스 파일을 읽은 다음 man페이지 의 특정 부분을 참조하면 충분합니다. 그들은 실제로 매우 간단합니다.
jasonwryan

180

다음 예제는이 링크에서 영감을 얻은 것으로, 실제로 모든 단계를 언급하지는 않으며 소스를 밝히기 위해 나열되었습니다. http://patrakov.blogspot.com/2011/01/writing-systemd-service-files.html

1 단계 : 확장 인수로 bash 프로세스를 본질적으로 실행하는이 파일 (참고 위치)을 만들었습니다. bash와 다른 명령을 실행할 수 있습니다.

[root@y500-fedora ~]# cat /etc/systemd/system/foo.service 
[Unit]
Description=foo

[Service]
ExecStart=/bin/bash -c "while true; do /bin/inotifywait -qq --event close_write /sys/class/backlight/acpi_video0/brightness; su myusername -c '/bin/xbacklight -display :0 -set $(cat /sys/class/backlight/acpi_video0/brightness)'; done"

[Install]
WantedBy=multi-user.target

2 단계 :

새로 고침 systemd:

systemctl daemon-reload

새로운 서비스를 시작하십시오 :

systemctl enable foo

(유사하게 할 수 disable있습니다)

(선택 사항) 3 단계 : 다음에 다중 사용자 모드 (실행 레벨 3)로 재부팅 할 때 자동으로 시작되지만 즉시 시작하려는 경우 :

systemctl start foo
systemctl status foo # optional, just to verify

업데이트 : 완전성을 위해 우분투 바이오닉에는 매우 철저한 맨 페이지가있는 것으로 추가해야합니다. RTFM은 여기


57
오프 사이트 매뉴얼 페이지에 연결하는 것이 아니라 빠른 자습서를 게시 해 주셔서 감사합니다!
Toby J

2
systemctl에는 참조를위한 cat 명령 바로 가기가 있습니다.
Andy Bettisworth

고양이 명령 바로 가기는 무엇입니까? 전체 경로를 입력하지 않고 시스템 제어 파일을 작성하고 편집하는 방법처럼?
JpaytonWPD

이 파일이 이상적으로 가지고 있어야하는 권한은 무엇입니까?
knocte

2
systemd.unit 매뉴얼 페이지에 따르면을 넣어야합니다 /etc/systemd/system. / usr / lib / systemd는 적절한 배포 패키지가 파일을 저장하는 곳입니다.
wbkang 2016 년

4

2
이것은 이론적으로 질문에 답할 수 있지만 여기에 답의 필수 부분을 포함시키고 참조 링크를 제공하는 것이 좋습니다.
Stephen Rauch

1
@StephenRauch 나는 일반 링크가 매우 환영받지 못한다는 것을 알고 있지만 이것은 큰 주제이며 답으로 요약하기는 쉽지 않습니다.
caracal

이것은 내가 찾은 가장 읽기 쉬운 가이드였습니다. 이것은 좋은 대답입니다. :-)
모드를 잘 치료하십시오.

DigitalOcean은 또한 매우 포괄적 인 튜토리얼과 관련 문서를 가지고 있습니다 : digitalocean.com/community/tutorials/…
irbanana
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.