Domanda Alternativa Chkconfig per Ubuntu Server?


Sono diventato molto abituato a gestire l'avvio di servizi su piattaforme Redhat / RHEL utilizzando chkconfig anche se questo non sembra essere il modo Debian / Ubuntu - Come posso aggiornare le informazioni sui 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>

136
2017-08-14 12:24


origine


A proposito: puoi apt-get install chkconfig il pacchetto su Ubuntu pure. Tuttavia è rotto da anni, il seguente link simbolico lo renderà (in qualche modo) funzionante: ln -s /usr/lib/insserv/insserv /sbin/insserv - eckes


risposte:


L'equivalente a 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

Vedere questa pagina utile per maggiori informazioni o consultare man update-rc.d


121
2017-08-14 12:47



update-rc.d è solo pensato per essere usato negli script di packaging, non negli umani. È anche per gli script di init, che Ubuntu non usa. Ubuntu usa Upstart. - maco
"Si noti che questo programma è stato progettato per essere utilizzato negli script del manutentore del pacchetto e, di conseguenza, ha solo le funzionalità molto limitate richieste da tali script. Gli amministratori di sistema non sono incoraggiati a utilizzare update-rc.d per gestire i runlevel. 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
Sto accettando questa risposta perché le pagine man aggiornate hanno rimosso quell'avvertimento. manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html - Marco Ceppi♦
Il che non cambia ancora il fatto che Ubuntu non usi nemmeno gli script di inizializzazione SysV al giorno d'oggi e update-rc.d è solo per loro. - maco
Ci sono ancora alcuni script sysv usati e specialmente funzionano anche con upstart. Quindi se non avessi avuto il tempo di convertire uno script potresti ancora usarlo in questo modo. - eckes


La migliore alternativa 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 persino arrestare o avviare i servizi da questa console. È uno strumento indispensabile per abilitare o disabilitare le applicazioni in modo permanente per avviare il tuo ubuntu Se hai bisogno di una modifica rapida, puoi utilizzare l'interfaccia CLI:

Ad esempio per fermare ssh ai livelli 3 e 5 di 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

53
2017-07-10 08:22



Questo è esattamente ciò di cui avevo bisogno, tranne che l'ho fatto sysv-rc-conf apache2 on / sysv-rc-conf apache2 off eccetera. - Adam K Dean
Questo funziona per me confrontato con 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 errori di battitura: sysv-rc-conf-off level 35 ssh dovrebbe essere sysv-rc-conf --level 35 ssh off - Slam
Testato su cui lavorare Ubuntu 16.04 LTS, dove update-rc.d no - Sopalajo de Arrierez


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


10
2017-08-14 17:28





Prova questo:

apt-get install chkconfig

Funziona, almeno in versione Ubuntu 12.04.


10
2018-06-17 23:52



Non funziona su 12.10 - expert
avere 12.04, e apt-get install chkconfig fornisce: "E: Package 'chkconfig' non ha candidati 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 inserite in un pacchetto. - eckes
Nessun pacchetto su Ubuntu 14.04. Abbiamo bisogno di aggiungere un'altra fonte? - Hashid Hameed


Passiamo da ZERO a Obiettivo: come farlo passo dopo passo.

Passo 1: lascia scrivere un mondo ciao

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

EOF

Passo 2: facciamo in modo che la nostra ciao world application server.py sia automatizzata

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, nel passaggio 3, il sistema all'avvio eseguirà automaticamente server.py come demone e renderà più semplice l'automazione

Spero che abbia aiutato.


5
2018-02-10 09:42



+1: Risposta molto utile ma penso che abbia una domanda sbagliata. - Claris