Chkconfig alternatywa dla Ubuntu Server?

144

Przyzwyczaiłem się do zarządzania start-upami usługowymi na platformach Redhat / RHEL, chkconfigchociaż nie wydaje się to być sposobem Debian / Ubuntu - Jak zaktualizować informacje o poziomie pracy dla usług systemowych na Ubuntu?

Ostatecznie szukamy odpowiedników:

chkconfig --add <service>
chkconfig --level 345 <service> on
chkconfig --del <service>
Marco Ceppi
źródło
1
BTW: możesz także apt-get install chkconfigzainstalować pakiet na Ubuntu. Jakkolwiek jest zepsuty od lat, następujący link symboliczny sprawi, że (nieco) zadziała:ln -s /usr/lib/insserv/insserv /sbin/insserv
eckes

Odpowiedzi:

125

Odpowiednikiem chkconfigjestupdate-rc.d

Odpowiednikami, których szukasz

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

Zobacz tę przydatną stronę, aby uzyskać więcej informacji lub sprawdź man update-rc.d

Richard Holloway
źródło
5
update-rc.d jest przeznaczony wyłącznie do użycia w skryptach do pakowania, a nie przez ludzi. Dotyczy to także skryptów inicjujących, których Ubuntu nie używa. Ubuntu używa Upstart.
maco
11
„Należy pamiętać, że ten program został zaprojektowany do użytku w skryptach obsługujących pakiety, a zatem ma tylko bardzo ograniczoną funkcjonalność wymaganą przez takie skrypty. Administratorzy systemu nie są zachęcani do używania update-rc.d do zarządzania poziomami działania. Powinni edytować linki bezpośrednio lub użyj edytorów poziomu pracy, takich jak sysv-rc-conf i bum. ” Z manpage: manpages.ubuntu.com/manpages/hardy/man8/update-rc.d.8.html
maco
4
Akceptuję tę odpowiedź, ponieważ zaktualizowane strony podręcznika usunęły to ostrzeżenie. manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html
Marco Ceppi
4
Co wciąż nie zmienia faktu, że Ubuntu nawet nie używa obecnie skryptów inicjujących SysV, a update-rc.d jest tylko dla nich.
maco
1
Nadal jest używanych kilka skryptów sysv, a zwłaszcza działają one z upstart. Jeśli więc nie miałeś czasu przekonwertować skryptu, nadal możesz go używać w ten sposób.
eckes
53

Najlepszą alternatywą IMHO jest sysv-rc-conf Aby zainstalować, wystarczy uruchomić polecenie:

sudo apt-get install sysv-rc-conf

Po zainstalowaniu uruchom polecenie:

sudo sysv-rc-conf

Możesz zaznaczyć lub odznaczyć opcje uruchamiania usługi na dowolnym poziomie wykonania, a nawet zatrzymać lub uruchomić usługi z tej konsoli. Jest niezbędnym narzędziem do włączania i wyłączania aplikacji na stałe, aby uruchomić system Ubuntu. Jeśli potrzebujesz szybkiej zmiany, możesz użyć interfejsu CLI:

Na przykład, aby zatrzymać ssh na poziomach 3 i 5 wykonania:

sysv-rc-conf-off level 35 ssh

Atd, aby rozpocząć na poziomach 2,3,4 i 5:

sysv-rc-conf on atd

Jeśli chcesz dowiedzieć się więcej:

man sysv-rc-conf
jokerulez
źródło
Właśnie tego potrzebowałem, tyle że zrobiłem sysv-rc-conf apache2 on/ sysv-rc-conf apache2 offitd.
Adam K Dean
Działa to dla mnie w porównaniu update-rc.d, który szukał skryptów programów w katalogu /etc/init.d/, w których niektóre programy, takie jak vsftpd, nie są zainstalowane.
David Okwii
Pracowałem dla mnie nad Ubuntu 14.04
Hashid Hameed
Masz literówkę: sysv-rc-conf-off level 35 sshpowinno byćsysv-rc-conf --level 35 ssh off
Slam
Testowane działanie na Ubuntu 16.04LTS , gdzie update-rc.dnie.
Sopalajo de Arrierez,
10

W tej chwili nie ma odpowiednika w stabilnej wersji do robienia rzeczy ze skryptami Upstart. Jacob Peddicord napisał jobservice (demon zaplecza) i jobs-admin (GTK + GUI, który z nim rozmawia) dla swojego projektu Google Summer of Code. Świadome paczki są w jego PPA . Istnieją również we Wszechświecie w Maverick. Nie ma jeszcze interfejsu front-end dla serviceservice, tylko jobs-admin.

maco
źródło
10

Spróbuj tego:

apt-get install chkconfig

Działa to przynajmniej w wersji Ubuntu 12.04.

Andrew Davison
źródło
6
Nie działa 12.10
ekspert
mają 12.04, a apt-get install chkconfig daje: „E: Pakiet„ chkconfig ”nie ma kandydata do instalacji”. Co znajduje się w twoim pliku /etc/apt/sources.list?
John Little
Wygląda na to, że ostatni został opublikowany precyzyjnie: 12.04: 1.0-79.1-2 0 in http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages. Niektóre poprawki nigdy nie trafiły do ​​pakietu.
eckes
2
Brak pakietu w systemie Ubuntu 14.04. Czy musimy dodać kolejne źródło?
Hashid Hameed
5

Przejdźmy od ZERO do celu - jak to zrobić krok po kroku.

Krok 1: Napiszmy cześć światu

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

EOF

Krok 2: Zróbmy nasz serwer hello world application.py zautomatyzowany

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

Krok 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
  • Tak więc w kroku 3 system po uruchomieniu automatycznie wykona server.py jako demon i ułatwi automatyzację

Mam nadzieję, że to pomogło.

Mniam mniam mniam
źródło
2
+1: Bardzo przydatna odpowiedź, ale myślę, że ma do niej niewłaściwe pytanie.
Claris