우분투 서버에 대한 Chkconfig 대안?


144

chkconfig데비안 / 우분투 방식이 아닌 것처럼 Redhat / RHEL 플랫폼에서 서비스 시작을 관리하는 데 매우 익숙해졌습니다. 우분투에서 시스템 서비스의 런레벨 정보를 어떻게 업데이트합니까?

궁극적으로 다음과 동등한 항목을 찾습니다.

chkconfig --add <service>
chkconfig --level 345 <service> on
chkconfig --del <service>

1
BTW : apt-get install chkconfig우분투에서도 패키지 를 사용할 수 있습니다. 그러나 몇 년이 ln -s /usr/lib/insserv/insserv /sbin/insserv
지나서

답변:


125

것과 동일 할 chkconfig것이다update-rc.d

당신이 찾는 등가물은

update-rc.d <service> defaults
update-rc.d <service> start 20 3 4 5
update-rc.d -f <service>  remove

자세한 내용은 이 유용한 페이지 를 참조하거나 man update-rc.d를 확인하십시오.


5
update-rc.d는 사람이 아니라 스크립트를 패키징 할 때만 사용해야합니다. 또한 우분투에서 사용하지 않는 init 스크립트 용입니다. 우분투는 Upstart를 사용합니다.
maco

11
"이 프로그램은 패키지 관리자 스크립트에서 사용하도록 설계되었으므로 이러한 스크립트에 필요한 기능은 매우 제한적입니다. 시스템 관리자는 update-rc.d를 사용하여 실행 수준을 관리하지 않는 것이 좋습니다. 링크를 편집해야합니다. 직접 또는 sysv-rc-conf 및 bum과 같은 런레벨 편집기를 대신 사용하십시오. " 맨 페이지에서 : manpages.ubuntu.com/manpages/hardy/man8/update-rc.d.8.html
maco

4
업데이트 된 매뉴얼 페이지에서 해당 경고가 제거되었으므로이 답변을 수락합니다. manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html
Marco Ceppi

4
오늘날에도 Ubuntu가 SysV 초기화 스크립트를 사용하지 않고 update-rc.d 만 사용한다는 사실을 변경하지는 않습니다.
maco

1
여전히 사용되는 일부 sysv 스크립트가 있으며 특히 upstart에서도 작동합니다. 따라서 스크립트를 변환 할 시간이 없다면 여전히 이런 식으로 사용할 수 있습니다.
eckes

53

가장 좋은 대안 IMHO는 sysv-rc-conf입니다. 설치하려면 다음 명령을 실행하면됩니다.

sudo apt-get install sysv-rc-conf

설치되면 다음 명령을 실행하십시오.

sudo sysv-rc-conf

옵션을 선택하거나 선택 취소하여 모든 실행 레벨에서 서비스를 시작할 수 있으며이 콘솔에서 서비스를 중지하거나 시작할 수도 있습니다. 우분투를 영구적으로 부팅하는 방법으로 응용 프로그램을 활성화하거나 비활성화하는 데 없어서는 안될 도구입니다. 빠른 변경이 필요한 경우 CLI 인터페이스를 사용할 수 있습니다.

예를 들어 실행 레벨 3과 5에서 ssh를 중지하려면 다음을 수행하십시오.

sysv-rc-conf-off level 35 ssh

런레벨 2,3,4 및 5에서 시작하는 Atd :

sysv-rc-conf on atd

더 알고 싶다면 :

man sysv-rc-conf

내가 sysv-rc-conf apache2 on/ sysv-rc-conf apache2 off등을 제외하고 이것은 내가 필요한 것입니다 .
Adam K Dean

이것은 vsftpd와 같은 일부 프로그램이 설치되지 않은 /etc/init.d/ 디렉토리에서 프로그램 스크립트를 찾고있는 update-rc.d와 비교하여 작동합니다.
David Okwii

우분투 14.04에서 나를 위해 일했다
Hashid Hameed

오타가 sysv-rc-conf-off level 35 ssh있어야합니다 :sysv-rc-conf --level 35 ssh off
Slam

Ubuntu 16.04LTS 에서 작동하는지 테스트 update-rc.d했지만 그렇지 않았습니다.
Sopalajo de Arrierez 2014

10

현재 Upstart 스크립트로 작업을 수행하는 안정적인 릴리스에는 해당 기능이 없습니다. Jacob Peddicord는 Google Summer of Code 프로젝트를 위해 jobservice (백엔드 데몬) 및 jobs-admin (GTK + GUI)을 작성했습니다. Lucid 패키지는 그의 PPA에 있습니다. 그들은 또한 매버릭의 우주에도 존재합니다. jobservice에 대한 명령 행 프론트 엔드는 없지만 jobs-admin 만 있습니다.


10

이 시도:

apt-get install chkconfig

이것은 적어도 우분투 12.04 릴리스로 작동합니다.


6
12.10에서 작동하지 않습니다
전문가

apt-get install chkconfig는 "E : 'chkconfig'패키지에 설치 후보가 없습니다."를 제공합니다. /etc/apt/sources.list 파일에는 무엇이 있습니까?
John Little

12.04 : 1.0-79.1-2 0 in에서 최신으로 출판 된 것 같습니다 http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages. 일부 수정은 패키지로 만들지 않았습니다.
eckes

2
우분투 14.04에는 패키지가 없습니다. 다른 소스를 추가해야합니까?
Hashid Hameed

5

ZERO에서 Goal까지 걸을 수 있습니다-단계별로 수행하는 방법.

1 단계 : Hello World를 작성합니다

cat >> /var/tmp/python/server.py <<\EOF
#/usr/bin/python
import time
while True:
  print "hello> YES Bello"
  time.sleep(30)

EOF

2 단계 : Hello World Application Server를 만들 수 있습니다 .

cat >> /var/tmp/myserver.sh <<\EOF
#!/bin/sh
script='/var/tmp/python/server.py'
export DISPLAY=:0.0 && /usr/bin/python $script &

EOF
chmod +x /var/tmp/myserver.sh

cat >> /etc/init.d/myserver <<\EOF

#! /bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/var/tmp/myserver.sh
PIDFILE=/var/run/myserver.pid

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

case "$1" in
  start)
     log_daemon_msg "Starting feedparser"
     start_daemon -p $PIDFILE $DAEMON
     log_end_msg $?
   ;;
  stop)
     log_daemon_msg "Stopping feedparser"
     killproc -p $PIDFILE $DAEMON
     PID=`ps x |grep server.py | head -1 | awk '{print $1}'`
     kill -9 $PID       
     log_end_msg $?
   ;;
  force-reload|restart)
     $0 stop
     $0 start
   ;;
  status)
     status_of_proc -p $PIDFILE $DAEMON atd && exit 0 || exit $?
   ;;
 *)
   echo "Usage: /etc/init.d/atd {start|stop|restart|force-reload|status}"
   exit 1
  ;;
esac

exit 0


EOF
chmod +x /etc/init.d/myserver
chmod -R 777 /etc/init.d/myserver

3 단계 :

$ update-rc.d myserver defaults
update-rc.d: warning: /etc/init.d/myserver missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/myserver ...
   /etc/rc0.d/K20myserver -> ../init.d/myserver
   /etc/rc1.d/K20myserver -> ../init.d/myserver
   /etc/rc6.d/K20myserver -> ../init.d/myserver
   /etc/rc2.d/S20myserver -> ../init.d/myserver
   /etc/rc3.d/S20myserver -> ../init.d/myserver
   /etc/rc4.d/S20myserver -> ../init.d/myserver
   /etc/rc5.d/S20myserver -> ../init.d/myserver
  • 따라서 3 단계에서 부팅시 시스템은 server.py를 데몬으로 자동 실행하여 쉽게 자동화 할 수 있습니다.

도움이 되었기를 바랍니다.


2
+1 : 매우 유용한 답변이지만 잘못된 질문이 첨부 된 것 같습니다.
Claris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.