Alternativa a Chkconfig per Ubuntu Server?


144

Mi sono abituato molto alla gestione degli avvii di servizio su piattaforme Redhat / RHEL usando chkconfigperò quello che non sembra essere il modo Debian / Ubuntu - Come posso aggiornare le informazioni di runlevel per i servizi di sistema su Ubuntu?

In definitiva alla ricerca degli equivalenti di:

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

1
A proposito: puoi anche apt-get install chkconfigil pacchetto su Ubuntu. Tuttavia è rotto da anni, il seguente link simbolico lo farà (in qualche modo) funzionare:ln -s /usr/lib/insserv/insserv /sbin/insserv
diamine

Risposte:


125

L'equivalente di chkconfigèupdate-rc.d

Gli equivalenti che cerchi sono

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

Vedi questa utile pagina per maggiori informazioni o dai un'occhiata a man update-rc.d


5
update-rc.d è pensato solo per essere utilizzato negli script di packaging, non dagli umani. È anche per gli script init, che Ubuntu non usa. Ubuntu utilizza Upstart.
maco,

11
"Si noti che questo programma è stato progettato per essere utilizzato negli script del manutentore del pacchetto e, di conseguenza, ha solo la funzionalità molto limitata richiesta da tali script. Gli amministratori di sistema non sono incoraggiati a utilizzare update-rc.d per gestire i runlevel. Dovrebbero modificare i collegamenti direttamente o utilizzare invece editor di runlevel come sysv-rc-conf e bum ". Dalla pagina di manuale: manpages.ubuntu.com/manpages/hardy/man8/update-rc.d.8.html
Maco

4
Accetto questa risposta perché le pagine man aggiornate hanno rimosso questo avviso. manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html
Marco Ceppi

4
Il che non cambia ancora il fatto che Ubuntu non usi nemmeno gli script di init SysV al giorno d'oggi e update-rc.d è solo per loro.
maco,

1
Ci sono ancora alcuni script sysv usati e soprattutto funzionano anche con upstart. Quindi, se non hai avuto il tempo di convertire uno script, potresti comunque usarlo in questo modo.
Controlla il

53

La migliore alternativa a IMHO è sysv-rc-conf Per installare è sufficiente eseguire il comando:

sudo apt-get install sysv-rc-conf

Una volta installato esegui il comando:

sudo sysv-rc-conf

È possibile selezionare o deselezionare le opzioni per avviare un servizio a qualsiasi livello di esecuzione e può anche interrompere o avviare i servizi da questa console. È uno strumento indispensabile per abilitare o disabilitare le applicazioni in modo permanente per avviare Ubuntu Se hai bisogno di una modifica rapida, puoi utilizzare l'interfaccia CLI:

Ad esempio per interrompere ssh ai livelli 3 e 5 dell'esecuzione:

sysv-rc-conf-off level 35 ssh

Atd per iniziare nei runlevel 2,3,4 e 5:

sysv-rc-conf on atd

Se vuoi saperne di più:

man sysv-rc-conf

Questo è esattamente ciò di cui avevo bisogno, tranne che lo facessi sysv-rc-conf apache2 on/ sysv-rc-conf apache2 offecc.
Adam K Dean,

Questo per me ha funzionato rispetto a update-rc.d che cercava script di programma nella directory /etc/init.d/ in cui alcuni programmi come vsftpd non sono installati.
David Okwii,

Ha funzionato per me su Ubuntu 14.04
Hashid Hameed

Hai un refuso: sysv-rc-conf-off level 35 sshdovrebbe esseresysv-rc-conf --level 35 ssh off
Slam

Testato su Ubuntu 16.04LTS , dove update-rc.dno.
Sopalajo de Arrierez,

10

Al momento, non esiste un equivalente in una versione stabile per fare cose con gli script Upstart. Jacob Peddicord ha scritto jobservice (demone backend) e jobs-admin (GTK + GUI che ne parla) per il suo progetto Google Summer of Code. I pacchetti lucidi sono nel suo PPA . Esistono anche nell'universo di Maverick. Non esiste ancora un front-end della riga di comando per jobservice, solo jobs-admin.


10

Prova questo:

apt-get install chkconfig

Questo funziona, almeno come versione di Ubuntu 12.04.


6
Non funziona il 12.10
esperto

avere 12.04 e apt-get install chkconfig fornisce: "E: Il pacchetto 'chkconfig' non ha un candidato all'installazione". Cosa c'è nel tuo file /etc/apt/sources.list?
John Little

Sembra che l'ultimo sia stato pubblicato per la precisione: 12.04: 1.0-79.1-2 0 in http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages. Alcune correzioni non sono mai state trasformate in un pacchetto.
Controlla il

2
Nessun pacchetto su Ubuntu 14.04. Dobbiamo aggiungere un'altra fonte?
Hashid Hameed

5

Cammina da ZERO a obiettivo - come farlo passo dopo passo.

Step 1: lascia scrivere un mondo di ciao

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

EOF

Step 2: rendiamo automatizzato il nostro ciao mondo application 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

Passaggio 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
  • Quindi al passaggio 3, il sistema all'avvio, eseguirà automaticamente server.py come demone e faciliterà l'automazione

Spero che abbia aiutato.


2
+1: Risposta molto utile, ma penso che abbia una domanda sbagliata.
Claris,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.