Estou tentando adicionar ao início automático no horário de início um serviço linux através do
chkconfig -add <servicename>
e recebo uma mensagem dizendo
service <servicename> does not support chkconfig
Estou usando o Red Hat Enterprise 4. O script que estou tentando adicionar à inicialização automática em tempo de inicialização é o seguinte:
#!/bin/sh
soffice_start() { if [ -x /opt/openoffice.org2.4/program/soffice ]; then
echo "Starting Open Office as a Service"
#echo " soffice -headless -accept=socket,port=8100;urp;StarOffice.ServiceManager
-nofirststartwizard"
/opt/openoffice.org2.4/program/soffice
-headless -accept="socket,host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager"
-nofirststartwizard & else
echo "Error: Could not find the soffice program. Cannot Start SOffice." fi }
soffice_stop() { if [ -x /usr/bin/killall ]; then
echo "Stopping Openoffice"
/usr/bin/killall soffice 2> /dev/null else
echo "Eroor: Could not find killall. Cannot Stop soffice." fi }
case "$1" in 'start') soffice_start ;; 'stop') soffice_stop sleep 2 ;; 'restart') soffice_stop sleep 5 soffice_start ;; *) if [ -x /usr/bin/basename ]; then
echo "usage: '/usr/bin/basename $0' start| stop| restart" else
echo "usage: $0 start|stop|restart" fi esac
Respostas:
O script deve ter 2 linhas:
por exemplo:
Depois de adicionar os cabeçalhos acima, você pode executar
chkconfig --add <service>
.fonte
Embora o katriel já tenha respondido a isso com o mínimo necessário para criar um script init, acho que você também ficaria bem vendo
/etc/init.d/skeleton
e usando isso como um modelo no qual basear seu script init. Você terminará com um script muito mais consistente e legível.fonte
/etc/init.d/skeleton
não está presente nos sistemas RHEL, apenas no Debian e afins (Ubuntu, eu acho).Parece que o problema específico do Geo já foi resolvido, mas recebi uma mensagem semelhante ao tentar configurar um aplicativo Rails
sidekiq
como um serviço gerenciado. Vou explicar minha solução aqui, caso isso ajude outros novatos como eu.Estou trabalhando em uma instalação do CentOS, e o chkconfig já está configurado com vários outros serviços como httpd, mysql e redis. Note-se que a maioria dos serviços só precisa ser ativado em níveis de execução
3
através5
.Eu precisava adicionar um novo script para o
sidekiq
serviço, então peguei o script em https://gist.github.com/CD1212/5326706 , modifiquei-o para ajustar os parâmetros do meu aplicativo e salvei-o em/etc/rc.d/init.d/sidekiq
(de propriedade da raiz, como todos os outros scripts lá).No entanto, quando tentei registrar este novo serviço, recebi o erro chkconfig:
Após algumas leituras extras , descobri que os números de prioridade definidos na parte superior de cada script chkconfig devem ser únicos. Uma mensagem de erro mais clara teria sido legal! Outro script tinha o nível de prioridade 75 de desligamento, então mudei o meu para 76 e tentei novamente. Aqui está a cabeça do meu script init:
Desta vez,
sudo chkconfig --add sidekiq
não deu queixa. Então, quando eu executeisudo chkconfig --list sidekiq
, o serviço sidekiq foi mostrado comoon
nos níveis de execução apropriados.fonte
Os números de prioridade não precisam ser exclusivos. Eles representam apenas uma ordem de serviços.
O Chkconfig não apresentou problemas ao adicionar o serviço "it". Caso contrário, você estaria limitado a 100 serviços.
Também no meu exemplo, ele seria executado antes do oracle porque os scripts são executados em ordem alfabética.
fonte