백그라운드에서 Xvfb를 시작하는 시스템 스크립트를 작성하려고 합니다.
물론 콘솔에서 이 작업을 수행할 때 "&"를 추가하는 데에는 문제가 없습니다.
하지만 시스템 스크립트를 작성하려고 할 때 수동으로 시작하면
service xvfb start
이 명령을 실행한 후에 프롬프트가 나타나지 않기 때문에 결코 백그라운드로 전송되지 않는 것 같습니다.
스크립트는 다음과 같습니다.
[Unit]
Description=Xvfb
After=tomcat.service
[Timer]
# Time to wait after booting before we run first time
OnBootSec=1min
[Service]
Type=forking
User=test
Group=test
ExecStart=/usr/bin/Xvfb :99
ExecStop=/bin/kill -15 $MAINPID
[Install]
WantedBy=multi-user.target
다른 유형을 사용해야 합니까?
답변1
Type=forking
자체적으로 분기되어 백그라운드에서 실행되는 프로세스(레거시 데몬이라고도 함)에 적합합니다. 이로 인해 systemd가 발생합니다.기다리다프로세스가 백그라운드에서 종료되도록 하고 pid 파일이나 다른 수단을 통해 하위 프로세스를 추적합니다. 애플리케이션이 종료되지 않으므로 systemd는 계속 대기합니다.
대신에 다음을 사용해야 합니다.
Type=simple
자체 배경 지식이 없는 애플리케이션에 적합합니다. 이로 인해 systemd 데몬이 프로세스를 추적하지만 systemctl
유효한 배경에서 즉시 반환됩니다. Simple이 기본 유형이므로 Type
원하는 경우 플래그를 완전히 생략할 수 있습니다.