Ubuntu 16.04에서 가짜 서비스/데몬 중지

Ubuntu 16.04에서 가짜 서비스/데몬 중지

나는 다음과 같은 질문이 있습니다너트(네트워크 UPS 도구) 패키지. 그래서 저는 그것에 대해 파고들어 몇 가지 실험을 하기 시작했습니다.

stop예전처럼 매개변수를 사용하여 특정 런레벨에서 호출되는 가짜 서비스를 어떻게 만들 수 있나요 init.d?

내가 볼 수 있듯이 많은 패키지가 여전히 이에 의존하고 있지만 원하는 동작을 얻을 수는 없습니다.

/etc/init.d/halt예를 들어 간단한 스크립트 파일 과 이에 대한 링크가 있습니다 /etc/rc0.d/K07halt. 중지 런레벨이 끝날 때 호출되어야 합니다.

하지만 이 작업을 수행하거나 service halt stop오류 /etc/rc0.f/K07halt가 발생하면:

Stopping K07halt (via systemctl): K07halt.serviceFailed to stop
K07halt.service: Unit K07halt.service not loaded.
failed!

해당 서비스/데몬이 없는 경우에도 이러한 더미 스크립트를 어떻게 실행할 수 있습니까?

제목에 뭔가를 바꾸셨나요? 플래그를 선언하시겠습니까 /lib/lsb/init-functions? Systemd를 속여 무조건 스크립트를 호출하는 방법은 무엇입니까?

init.d새로운 데몬을 작성하는 것이 아니라 이미 존재하는 것을 고치려고 하기 때문에 사용하지 말라고 말하지 마십시오 .

답변1

나는 아무 문제 없이 Ubuntu 16.04용 LSB 서비스를 작성했습니다.

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:    16.04
Codename:   xenial

fake-service755 권한을 가진 새 서비스를 추가합니다 /etc/init.d.

#!/bin/sh
# fake-service   Bring up/down fake-service
#
### BEGIN INIT INFO
# Provides:     fake-service
# Default-Start:    2 3 4 5
# Default-Stop:
#Required-Start:
#Required-Stop:
# Should-Start:
# Should-Start:
# Short-Description: Bring up/down fake-service
# Description: Bring up/down fake service
### END INIT INFO

DAEMON=
NAME=fake-service
DESC="fake-service"
PIDFILE=/var/run/fake-service.pid
SCRIPTNAME=/etc/init.d/fake-service

. /lib/lsb/init-functions

case "$1" in
start)
    log_daemon_msg "Starting fake-service ..." "$NAME"
    touch $PIDFILE
    log_end_msg $?
;;
stop)
    log_daemon_msg "Stoping fake-service ..." "$NAME"
    rm -f $PIDFILE
    log_end_msg $?
;;
status)
    status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*)
    log_action_msg "Usage: $0 {start|stop|status}"
    exit 2
    ;;
esac

exit 0

이것을 런레벨에 추가하세요:

# update-rc.d fake-service defaults

에서 man 8 update-rc.d:

기본 옵션으로 실행하면 update-rc.d는 init.d의 실행 수준 및 종속성 정보를 사용하여 /etc/init .d/ 스크립트를 가리키는 /etc/rcrunlevel.d/[SK]NNname이라는 링크를 생성합니다. 이름 스크립트 LSB 주석 헤더.

테스트 서비스:

시작:

# service fake-service start
# service fake-service status
● fake-service.service - LSB: Bring up/down fake-service
   Loaded: loaded (/etc/init.d/fake-service; bad; vendor preset: enabled)
   Active: active (exited) since Mon 2018-04-09 19:14:18 MSK; 4s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 3643 ExecStop=/etc/init.d/fake-service stop (code=exited, status=0/SUCCESS)
  Process: 3713 ExecStart=/etc/init.d/fake-service start (code=exited, status=0/SUCCESS)

Apr 09 19:14:18 ubuntu16-04 systemd[1]: Starting LSB: Bring up/down fake-service...
Apr 09 19:14:18 ubuntu16-04 fake-service[3713]:  * Starting fake-service ... fake-service
Apr 09 19:14:18 ubuntu16-04 fake-service[3713]:    ...done.
Apr 09 19:14:18 ubuntu16-04 systemd[1]: Started LSB: Bring up/down fake-service.

멈추다:

# service fake-service stop
# service fake-service status
● fake-service.service - LSB: Bring up/down fake-service
   Loaded: loaded (/etc/init.d/fake-service; bad; vendor preset: enabled)
   Active: inactive (dead) since Mon 2018-04-09 19:15:03 MSK; 3s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 3757 ExecStop=/etc/init.d/fake-service stop (code=exited, status=0/SUCCESS)
  Process: 3713 ExecStart=/etc/init.d/fake-service start (code=exited, status=0/SUCCESS)

Apr 09 19:14:18 ubuntu16-04 systemd[1]: Starting LSB: Bring up/down fake-service...
Apr 09 19:14:18 ubuntu16-04 fake-service[3713]:  * Starting fake-service ... fake-service
Apr 09 19:14:18 ubuntu16-04 fake-service[3713]:    ...done.
Apr 09 19:14:18 ubuntu16-04 systemd[1]: Started LSB: Bring up/down fake-service.
Apr 09 19:15:03 ubuntu16-04 systemd[1]: Stopping LSB: Bring up/down fake-service...
Apr 09 19:15:03 ubuntu16-04 fake-service[3757]:  * Stoping fake-service ... fake-service
Apr 09 19:15:03 ubuntu16-04 fake-service[3757]:    ...done.
Apr 09 19:15:03 ubuntu16-04 systemd[1]: Stopped LSB: Bring up/down fake-service.

관련 정보