Вопрос Альтернатива Chkconfig для сервера Ubuntu?


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

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

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

136
2017-08-14 12:24


происхождения


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


ответы:


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


121
2017-08-14 12:47



update-rc.d - только предназначенные для использования в сценариях упаковки, а не для людей. Он также предназначен для сценариев init, которые Ubuntu не использует. Ubuntu использует Upstart. - maco
«Обратите внимание, что эта программа была разработана для использования в сценариях поддержки пакетов и, соответственно, имеет только очень ограниченную функциональность, требуемую такими сценариями. Системным администраторам не рекомендуется использовать update-rc.d для управления уровнями выполнения. Они должны редактировать ссылки напрямую или использовать редакторы уровня запуска, такие как sysv-rc-conf и bum вместо этого ». С manpage: manpages.ubuntu.com/manpages/hardy/man8/update-rc.d.8.html - maco
Я принимаю этот ответ, потому что обновленные страницы руководства удалили это предупреждение. manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html - Marco Ceppi♦
Что еще не меняет того факта, что Ubuntu даже не использует сценарии инициализации SysV в настоящее время, а update-rc.d - только для них. - maco
Есть еще некоторые скрипты sysv, и особенно они работают с выскочкой. Поэтому, если у вас не было времени для преобразования скрипта, вы все равно можете использовать его таким образом. - eckes


Лучшей альтернативой 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

53
2017-07-10 08:22



Это именно то, что мне нужно, кроме того, что я сделал sysv-rc-conf apache2 on / sysv-rc-conf apache2 off и т.п. - Adam K Dean
Это работает для меня, сравнивая update-rc.d, который ищет программные скрипты в каталоге /etc/init.d/, где некоторые программы, такие как vsftpd, не установлены. - David Okwii
Работал для меня на Ubuntu 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


Прямо сейчас, нет эквивалента в стабильном выпуске для работы с сценариями Upstart. Jacob Peddicord написал службу поддержки (backend daemon) и job-admin (GTK + GUI, который говорит с ним) для своего проекта Google Summer of Code. Пакеты Lucid - это в своем PPA, Они также существуют во Вселенной в Маверике. Пока нет службы командной строки для службы сервисов, просто jobs-admin.


10
2017-08-14 17:28





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

apt-get install chkconfig

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


10
2018-06-17 23:52



Не работает 12.10 - expert
имеют 12.04, а apt-get install chkconfig дает: «E: Пакет« chkconfig »не имеет кандидата на установку». Что в файле /etc/apt/sources.list? - John Little
Похоже, что последнее было опубликовано для точного: 12.04: 1.0-79.1-2 0 в http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages, Некоторые исправления никогда не превращали его в пакет. - eckes
Нет пакета на Ubuntu 14.04. Нужно ли нам добавить еще один источник? - Hashid Hameed


Переходим от 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: позволяет сделать наше приветственное приложение world.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 в качестве демона и упростит автоматизацию

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


5
2018-02-10 09:42



+1: Очень полезный ответ, но я думаю, что к нему относится не тот вопрос. - Claris