시작 시 시작된 서비스가 update-rc.d 명령으로 작동하지 않습니다.

시작 시 시작된 서비스가 update-rc.d 명령으로 작동하지 않습니다.

Redis 서버를 시작/중지/다시 시작할 수 있도록 Ubuntu 기반 서버에 Redis 서버를 설치했습니다. redis_server.sh는 이미 /etc/init.d에 있습니다.

이제 부팅 시 Redis가 시작되기를 원합니다. update_rc.d 명령을 사용하여 시작 시 서비스를 추가/제거할 수 있다는 것을 웹사이트에서 배웠습니다.

부팅 시 시작을 추가하기 위해 update-rc.d를 사용해 보았지만 작동하지 않습니다.

root@ip-172-31-4-108:/etc/init.d# update-rc.d redis-server defaults
//System start/stop links for /etc/init.d/redis-server already exist.

또한 부팅 시 시작하고 싶지 않은 일부 서비스가 있었기 때문에 다음을 시도해 보았습니다.

root@ip-172-31-4-108:/etc/init.d# update-rc.d reids_6379 remove
 Removing any system startup links for /etc/init.d/reids_6379 ...

하지만 다음에 재부팅하면 시작 시 서비스가 계속 실행되는 것을 볼 수 있습니다.

답변1

서비스를 삭제하려면 다음 -f매개변수를 사용해야 합니다.

sudo update-rc.d -f <service> remove

부팅 시 시작을 구성하려면 다음을 시도하십시오.

sudo update-rc.d <service> enable

다음 심볼릭 링크가 생성되었는지 확인하세요.

/etc/rc.2d/S20<service>

또는 그런 것.

답변2

우분투 버전 18.04 TLS에서는 다음과 같이 시작 스크립트에 특정 주석 블록이 없으면 update-rc.d가 제대로 작동하지 않는다는 것을 발견했습니다.

### BEGIN INIT INFO
# Provides: myprogram
# Required-Start: $ local_fs $ remote_fs $ syslog $ network $ time
# Required-Stop: $ local_fs $ remote_fs $ syslog $ network
# Default-start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: myprogram some description
### END INIT INFO

답변3

나는 이 중 어느 것도 Raspberry Pi(Debian 10)에서는 작동하지 않는다는 것을 인정해야 합니다. 이전 /etc/init.d/my_script 위치를 유지하려면 다음을 수행해야 합니다.

# runlevel
N 5
# cd /etc/rc5.d
# ln -s ../init.d/my_script S40my_script


(probably should be done for other runlevels as well)
# ls /etc/rc5.d/ | grep my_script
S40my_script

관련 정보