Execute um script de shell na inicialização do Ubuntu

1

Eu tenho um shell script que roda em jvm, funciona enquanto eu escrevo: sh /opt/bin/myshel.sh Eu adicionei um script de shell para /etc/inti.d com este detalhe:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          WSO2Services.sh
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

/opt/bin/myshel.sh

Eu salvei esse arquivo como "myShell.sh" em "/etc/init.d" e mude o modo para executável. E também usei sudo update-rc.d myShell.sh defaults para atualizar os arquivos "rc * .d". O problema é que ele não está sendo executado na reinicialização.

    
por Reza Ameri 25.05.2013 / 10:04

2 respostas

1

A maneira mais fácil de executar algo no boot é colocá-lo em /etc/rc.local. Se você quiser escrever um script de inicialização completo do Sys V, provavelmente desejará usar um dos scripts existentes como modelo. Você também pode querer considerar o uso de um trabalho inicial.

    
por 25.05.2013 / 11:20
1

Na primeira vez, verifique o arquivo /etc/inittab . Existe uma linha como id:2:initdefault Por isso, vai começar em runlevel 2 (no meu caso). Então isso vai começar na inicialização: /etc/init.d/rc 2 . Então, todos os scripts que iniciam S ## somename (# é um dígito decimal) em /etc/rc2.d serão executados. Estes são links simbólicos para os scripts em /etc/init.d .

Tão semelhante tem que ser feito no seu caso. Se o seu runlevel for 2 , crie um link simbólico em /etc/rc2.d/S##myshell.sh para o script em ../init.d/myshel.sh . Em seguida, ele será executado durante a inicialização. Lembre-se de que os scripts que possuem o mesmo nível de script (os dois dígitos decimais após S ) são executados em paralelo.

Eu sugiro que você verifique os arquivos em /etc/init.d como devem ser, quais argumentos devem ser suportados.

    
por 25.05.2013 / 13:21