헤드리스 장치에서 Java 애플리케이션을 관리하기 위한 데몬을 작성 중입니다.우분투16.04jsvc 상자를 사용하여이 (아마도 사전 시스템화된) 튜토리얼, 계속 실행 중이며 update-rc.d mydaemon enable
오류가 발생했습니다.
update-rc.d: error: mydaemon Default-Start contains no runlevels, aborting
구글에서 검색해본 결과, 최근 로의 마이그레이션과 (상당히?) 관련이 있는 것으로 보이며 systemd
, 로 실행되고 있는 것을 확인했습니다 pidof systemd
.
update-rc.d
(더 중요하게는) 동일한 결과를 얻으려면 어떻게 해야 합니까?멈추다/etc/init.d/mydaemon stop
Java 애플리케이션을 정리해야 하므로 프로세스를 종료하는 대신 서비스가 통과됩니다 . systemd
다른 시스템 인가요 update-rc.d
, 아니면 systemd
후자가 작동하는 방식이 변경된 것인가요?
답변1
이것을 테스트하거나 많은 세부 정보를 제공할 Ubuntu 16.04는 없지만 systemd에는 이전 /etc/init.d
스크립트가 계속 작동할 수 있도록 하는 호환성 기능이 있습니다. 데몬을 활성화하는 대신 update-rc.d
동등한 systemd 기본 명령을 사용하십시오.
sudo systemctl enable mydaemon
그래도 동일한 오류가 발생하면 스크립트의 시작 주석 세트에 누락된 줄을 추가하세요.
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### BEGIN INIT INFO
및 줄 사이에 ### END INIT INFO
다시 시도하십시오. 보다최하위 비트 코어이 줄에 대한 설명입니다. 명시적으로 데몬을 시작할 수도 있습니다.
sudo systemctl start mydaemon
그리고 상태를 물어보세요
sudo systemctl status -l mydaemon
호환성 기능을 참조하세요 man systemd-sysv-generator
. 바라보다이 위키System V 또는 귀하와 같은 시작 스크립트를 기본 시스템 단위로 변환하는 데 사용됩니다.
답변2
다음과 같이 /etc/init.d/tightvncserver 스크립트가 있어야 합니다.
#!/bin/sh
### BEGIN INIT INFO
# Provides: tightvncserver
# Should-Start:
# Required-Start: $local_fs $remote_fs x11-common
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: VNC server
# Description: Debian init script for the VNC Server
### END INIT INFO
# /etc/init.d/tightvncserver
# Set the VNCUSER variable to the name of the user to start tightvncserver under
VNCUSER='pi'
case "$1" in
start)
su $VNCUSER -c '/usr/bin/tightvncserver :1 -geometry 1280x800 -depth 16'
echo "Starting TightVNC server for $VNCUSER"
;;
stop)
pkill Xtightvnc
echo "Tightvncserver stopped"
;;
*)
echo "Usage: /etc/init.d/tightvncserver {start|stop}"
exit 1
;;
esac
exit 0
그런 다음 다음 명령을 실행합니다.
sudo service tightvncserver start