Альтернатива Chkconfig для Ubuntu Server?

Я привык к запуску сервисов на платформах Redhat/RHEL с помощью chkconfig хотя это не похоже на способ Debian/Ubuntu - Как мне обновить информацию об уровне выполнения для системных служб в Ubuntu?

В конечном итоге ищет эквиваленты:

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

5 ответов

Решение

Эквивалентно 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

Лучший вариант IMHO - это sysv-rc-conf. Для установки достаточно запустить команду:

sudo apt-get install sysv-rc-conf

После установки запустите команду:

sudo sysv-rc-conf

Вы можете установить или снять флажки для запуска службы на любом уровне выполнения и даже можете остановить или запустить службы из этой консоли. Это незаменимый инструмент для включения или отключения приложений на постоянной основе для загрузки вашей Ubuntu. Если вам нужно быстрое изменение, тогда вы можете использовать интерфейс CLI:

Например, чтобы остановить ssh на уровнях 3 и 5 выполнения:

sysv-rc-conf-off level 35 ssh

Atd для запуска на уровнях запуска 2,3,4 и 5:

sysv-rc-conf on atd

Если вы хотите узнать больше:

man sysv-rc-conf

Попробуй это:

apt-get install chkconfig

Это работает, по крайней мере, как выпуск Ubuntu 12.04.

На данный момент нет стабильного релиза для работы со сценариями Upstart. Джейкоб Педдикорд написал jobservice (backend daemon) и jobs-admin (GTK+ GUI, который говорит с ним) для своего проекта Google Summer of Code. Пакеты Lucid находятся в его PPA. Они также существуют во Вселенной в Maverick. Для jobservice пока нет интерфейса командной строки, только jobs-admin.

Пройдемся от нуля до цели - как сделать это шаг за шагом.

Шаг 1: давайте напишем привет мир

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 server.py автоматизированным

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 как демон и упростит автоматизацию.

Надеюсь, это помогло.

Другие вопросы по тегам