Eu criei um script para iniciar um servidor (minha primeira pergunta). Agora eu quero que ele seja executado na inicialização do sistema e inicie o servidor definido. O que devo fazer para fazer isso?
Minhas descobertas me dizem para colocar esse arquivo no /etc/init.d
local e ele será executado quando o sistema inicializar. Mas não consigo entender como será o primeiro argumento na inicialização start
? Isso é predefinido em algum lugar para usar start
como $1
? Se eu quiser ter um caso startall
que inicie todos os servidores no script, quais são as opções que eu posso gerenciar?
Meu script é assim:
#!/bin/bash
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 (start|stop|restart)"
;;
esac
linux
shell-script
centos-5
vijay.shad
fonte
fonte
Respostas:
/etc/init.d
é o diretório do script, no qual os scripts executáveis aparecem. No entanto, para executar scripts em uma ordem específica após o início do sistema, você precisa adicionar arquivos ao/etc/rc#.d
diretório. As entradas que aparecem aqui informam ao sistema em que ordem e em que scripts no nível de execução/etc/init.d
devem ser executados. O número após o rc indica em que nível de execução a máquina está executando, de acordo com esta tabela:http://en.wikipedia.org/wiki/Runlevel
Então, se você tem:
Então você precisa dos arquivos (vazios):
OS significa começar e K significa matar. Quando sua máquina iniciar, o sistema dirá "Ah, estou executando o RunLevel 3, vamos para o rc3.d para ver quais scripts no '/etc/init.d' precisam ser executados e em que ordem". Nesse caso, o sistema classificará por 'S' e depois o número após 'S' e executará '/etc/init.d/importantscript start'. O 20 é apenas para fins de pedido ... seu script será executado atrás de 'S19' e na frente de 'S21'. Você pode criar esses arquivos simplesmente fazendo:
sudo touch /etc/rc.d/rc3.d/S20importantscript
Aqui também está um bom resumo: http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts
fonte
Você não precisa --- e não deve --- criar arquivos
/etc/rc.d/rcN.d/
; o que você deve fazer é colocar um comentário na leitura do script initonde
NNN
é o conjunto de níveis de execução em que deseja que o script ativo (por exemplo,345
se é ativo nos níveis de execução3
,4
e5
), eA
eB
são as prioridades de início e de parada. Entãochkconfig --add foo
(supondo que seu script seja nomeadofoo
) criará os arquivos/etc/rc.d/rcN.d/
com os nomes apropriados.Então você pode usar
service foo bar
para enviar abar
mensagem para o seu script (por exemplo,start
,stop
, qualquer que seja - que é onde o seu$1
vem).fonte
O $ 1 é o argumento da linha de comando que é passado para o seu script, é um de iniciar, parar ou reiniciar. No openSUSE , não me lembro de ter a opção de passar outros argumentos para o script ao usar o editor de nível de execução, então acho que esses provavelmente são os únicos que você deve usar.
Eu não uso o CentOS , mas parece que o programa para controlar o que é iniciado no qual o nível de execução é ntsysv .
fonte