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


144

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

В кінцевому рахунку шукаємо еквіваленти:

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

1
BTW: ви також можете apt-get install chkconfigпакет на ubuntu. Однак він порушений з роками, наступне символьне посилання змусить його (дещо) працювати:ln -s /usr/lib/insserv/insserv /sbin/insserv
eckes

Відповіді:


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, якими Ubuntu не користується. Ubuntu використовує Upstart.
maco

11
"Зверніть увагу, що ця програма була розроблена для використання в скриптах для обслуговування пакунків і, відповідно, має лише дуже обмежену функціональність, необхідну для таких сценаріїв. Системним адміністраторам не рекомендується використовувати update-rc.d для управління рівнями запуску. Вони повинні редагувати посилання безпосередньо або використовувати редактори runlevel, наприклад sysv-rc-conf та bum. " З manpage: 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 сценаріїв init, а update-rc.d призначений лише для них.
maco

1
Є ще деякі сценарії sysv, які використовуються, і, особливо, вони також працюють із початком роботи. Тож якщо у вас не було часу для перетворення сценарію, ви все одно можете використовувати його таким чином.
eckes

53

Найкраща альтернатива 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

Це саме те, що мені було потрібно, за винятком того, що я робив sysv-rc-conf apache2 on/ sysv-rc-conf apache2 offтощо
Адам К Дін

Для мене це працює порівняно update-rc.d, який шукав сценарії програми в каталозі /etc/init.d/, де деякі програми, такі як vsftpd, не встановлені.
David Okwii

Працював для мене на Ubuntu 14.04
Хашид Хамед

У вас є помилка друку: sysv-rc-conf-off level 35 sshмає бутиsysv-rc-conf --level 35 ssh off
Шлем

Тестував працюючи на Ubuntu 16.04LTS , де update-rc.dцього не робив.
Sopalajo de Arrierez

10

Наразі в стабільному релізі немає рівнозначних рішень для роботи зі сценаріями Upstart. Джейкоб Педдікорд написав службу вакансій (бекенд-демон) та вакансії адміністратора (GTK + GUI, який спілкується з ним) для свого проекту Google Summer of Code. Lucid пакети є в його PPA . Вони також існують у Всесвіті в Маверику. Лише для командного рядка для сервісу вакансій немає командного рядка, просто робота-адміністратор.


10

Спробуйте це:

apt-get install chkconfig

Це працює, принаймні, як випуск Ubuntu 12.04.


6
Не працює 12.10
експерт

мають 12.04, а apt-get install chkconfig дає: "E: У пакета" chkconfig "немає кандидата на встановлення". Що у вашому /etc/apt/sources.list файлі?
Джон Маленький

Схоже, останнє було опубліковано точно: 12.04: 1.0-79.1-2 0 дюймів http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages. Деякі виправлення ніколи не вносилися в пакет.
eckes

2
Немає пакета на Ubuntu 14.04. Чи потрібно нам додати ще одне джерело?
Хашид Хамед

5

Дозволяє ходити від ZERO до цілі - як це зробити поетапно.

Крок 1: давайте написати світ привіт

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

EOF

Крок 2. Дозволяємо зробити наш привіт світовий додаток 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 як демон і полегшить автоматизацію

Сподіваюся, це допомогло.


2
+1: Дуже корисна відповідь, але я думаю, що до неї додано неправильне запитання.
Кларіс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.