Linux Centos 7은 시작 스크립트를 시스템 서비스로 변환합니다.

Linux Centos 7은 시작 스크립트를 시스템 서비스로 변환합니다.

다음과 같은 시작 스크립트가 있습니다. 이를 시스템 서비스로 변환하려면 어떻게 해야 합니까?

description "x11vnc"

start on runlevel [2345]
stop on runlevel [^2345]

#console log

respawn
respawn limit 20 5

exec /usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /root/.vnc/passwd -rfbport 5900 -shared

답변1

upstart 구성의 일부 구성 옵션은 systemd 단위 지시문으로 직접 변환될 수 있습니다. 이런 일이 일어난다 description(이게 된다Description=) 그리고 exec(되다ExecStart=.)

expect fork시작 구성에는 또는 daemon섹션(으로 변환됨)이 없으므로 systemd 장치를 Type=forking사용해야 합니다 .Type=simple

나머지 섹션을 살펴보겠습니다.

start on runlevel [2345]
stop on runlevel [^2345]

이는 본질적으로 시스템이 부팅될 때 서비스가 시작되고 시스템이 종료될 때 중지되어야 함을 의미합니다. systemd에서는 이를 설치하고 최종 장치에 대한 섹션을 multi-user.target참조하여 수행됩니다.[Install]

#console log

이것은 주석 처리되어 있지만 다음을 사용하여 시스템 장치에서 유사한 구성을 제어할 수 있습니다.StandardOutput=그리고 관련 옵션.

upstart에서는 console logged로그에 출력을 보내는 시스템 기본값과 어느 정도 일치하는 기본값입니다(로그는 시스템 세계의 주요 로거이기 때문입니다).

respawn
respawn limit 20 5

따라서 첫 번째 줄은 서비스를 다시 시작하도록 요청합니다.예기치 않게 종료된 경우, 나는 이것이 다음과 같이 해석된다고 믿습니다.Restart=on-failure, 비록 (항상 다시 시작하는 것)이 아마도 Restart=yes여기서 upstart가 수행하는 작업에 더 가까울 것입니다(정확히 무엇을 하는지 말할 만큼 upstart를 알지 못합니다.)

두 번째 줄은 5초 내에 최대 20회 재생이라는 제한을 나타냅니다. 이 제한은 systemd에서 구성할 수 있습니다.StartLimitBurst=20그리고StartLimitIntervalSec=5.

마지막으로 모든 것을 하나로 합치면 /etc/systemd/system/x11vnc.service파일에 다음이 포함됩니다.

[Unit]
Description=x11vnc
StartLimitBurst=20
StartLimitIntervalSec=5

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /root/.vnc/passwd -rfbport 5900 -shared
Restart=on-failure

[Install]
WantedBy=multi-user.target

파일 생성 후 systemctl daemon-reloadsystemd를 실행하여 유닛 파일을 로드합니다. 그런 다음 systemctl start x11vnc.service실행을 시작하고 systemctl enable x11vnc.service부팅 시 시작합니다.

관련 정보