Alternativa Chkconfig para o Ubuntu Server?

144

Eu me acostumei a gerenciar startups de serviços em plataformas Redhat / RHEL, chkconfigembora isso não pareça o modo Debian / Ubuntu - Como atualizo informações de nível de execução para serviços de sistema no Ubuntu?

Por fim, procurando os equivalentes de:

chkconfig --add <service>
chkconfig --level 345 <service> on
chkconfig --del <service>
Marco Ceppi
fonte
11
BTW: você também pode apt-get install chkconfiginstalar o pacote no ubuntu. No entanto ele está quebrado desde anos, o seguinte link simbólico irá torná-lo (um pouco) trabalho:ln -s /usr/lib/insserv/insserv /sbin/insserv
Eckes

Respostas:

125

O equivalente a chkconfigéupdate-rc.d

Os equivalentes que você procura são

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

Consulte esta página útil para obter mais informações ou consulte man update-rc.d

Richard Holloway
fonte
5
update-rc.d é única concebido para ser utilizado em embalagens de scripts, e não por seres humanos. Também é para scripts init, que o Ubuntu não usa. O Ubuntu usa o Upstart.
maco
11
"Observe que este programa foi projetado para uso em scripts de mantenedor de pacotes e, portanto, possui apenas a funcionalidade muito limitada exigida por esses scripts. Os administradores de sistema não são incentivados a usar o update-rc.d para gerenciar os níveis de execução. Eles devem editar os links diretamente ou use editores de nível de execução, como sysv-rc-conf e bum. " A partir da página de manual: manpages.ubuntu.com/manpages/hardy/man8/update-rc.d.8.html
maco
4
Estou aceitando esta resposta porque as páginas de manual atualizadas removeram esse aviso. manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html
Marco Ceppi
4
O que ainda não muda o fato de o Ubuntu nem sequer usar scripts de inicialização do SysV atualmente e o update-rc.d ser apenas para eles.
maco 15/08/10
11
Ainda existem alguns scripts sysv usados ​​e, especialmente, eles também funcionam com upstart. Portanto, se você não teve tempo para converter um script, ainda pode usá-lo dessa maneira.
Eckes
53

Melhor alternativa IMHO é sysv-rc-conf Para instalar, basta executar o comando:

sudo apt-get install sysv-rc-conf

Uma vez instalado, execute o comando:

sudo sysv-rc-conf

Você pode marcar ou desmarcar as opções para iniciar um serviço em qualquer nível de execução e pode até parar ou iniciar os serviços nesse console. É uma ferramenta indispensável para habilitar ou desabilitar aplicativos de forma permanente para inicializar o ubuntu. Se você precisar de uma alteração rápida, poderá usar a interface da CLI:

Por exemplo, para parar o ssh nos níveis 3 e 5 de execução:

sysv-rc-conf-off level 35 ssh

Atd para iniciar nos níveis 2,3,4 e 5:

sysv-rc-conf on atd

Se você quiser saber mais:

man sysv-rc-conf
jokerulez
fonte
Este é exatamente o que eu precisava, só que eu fiz sysv-rc-conf apache2 on/ sysv-rc-conf apache2 offetc
Adam K Dean
Isso funciona para mim comparado ao update-rc.d, que estava procurando por scripts de programa no diretório /etc/init.d/, onde alguns programas como o vsftpd não estão instalados.
David Okwii
Trabalhou para mim no Ubuntu 14.04
Hashid Hameed 02/02
Você tem erro de digitação: sysv-rc-conf-off level 35 sshdeveria sersysv-rc-conf --level 35 ssh off
Slam
Testado trabalhando no Ubuntu 16.04LTS , onde update-rc.dnão.
Sopalajo de Arrierez
10

No momento, não há equivalente em uma versão estável para fazer as coisas com os scripts do Upstart. Jacob Peddicord escreveu o jobservice (daemon de back-end) e o jobs-admin (GTK + GUI que fala com ele) para seu projeto do Google Summer of Code. Pacotes lúcidos estão em seu PPA . Eles também existem no universo em Maverick. Ainda não existe um front-end da linha de comando para o jobservice, apenas jobs-admin.

maco
fonte
10

Tente o seguinte:

apt-get install chkconfig

Isso funciona, pelo menos na versão Ubuntu 12.04.

Andrew Davison
fonte
6
Não funciona em 12.10
expert
possui o 12.04, e o apt-get install chkconfig fornece: "E: O pacote 'chkconfig' não possui candidato à instalação". O que há no seu arquivo /etc/apt/sources.list?
John pouco
Parece que o mais recente foi publicado para ser preciso: 12.04: 1.0-79.1-2 0 pol http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages. Algumas correções nunca chegaram a um pacote.
Eckes
2
Nenhum pacote no Ubuntu 14.04. Precisamos adicionar outra fonte?
Hashid Hameed
5

Vamos caminhar de ZERO a Goal - como fazê-lo passo a passo.

Etapa 1: vamos escrever um olá mundo

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

EOF

Etapa 2: vamos automatizar nosso hello world 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

Etapa 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
  • Portanto, na etapa 3, o sistema na inicialização executará automaticamente o server.py como daemon e facilitará a automação

Espero que tenha ajudado.

YumYumYum
fonte
2
+1: resposta muito útil, mas acho que tem a pergunta errada anexada.
Claris