
Quero que meu servidor me notifique (via rosnado) que a (re) inicialização foi concluída. Tenho o arquivo php que envia o rosnado pronto, mas não sei em qual arquivo devo adicionar a linha.
Qual arquivo eu preciso adicionar meu código para que ele seja executado somente após a inicialização do SuSE terminar?
Responder1
(aberto)O SUSE usa /etc/init.d/after.local
para essa finalidade. Basta adicionar os comandos que você precisa para serem executados nesse arquivo. Observe que isso funciona bem com o SystemV init, mas com o systemd isso precisaria que o AFAIK fosse resolvido de forma diferente.
Responder2
Sintaxe mais recente para Suse Linux Enterprise 11 SP2 (e openSUSE?)
A melhor maneira seria criar um script de shell que chamaria seu script PHP. Este shell script deve ter em seu cabeçalho o seguinte comentário:
#!/bin/sh
### BEGIN INIT INFO
# Provides: nothing
# Required-Start: $all
# Default-Start: 3 5
# Default-Stop: 4
# Short-Description: single_line_description
# Description: multiline_description
### END INIT INFO
Você pode encontrar um modelo típico (com muitos comentários explicativos) em /etc/init.d/skeleton
. Este modelo inclui o código necessário para conectar seu script PHP. Você verá um caso inicial em que teria que chamar seu script PHP.
Descartei vários parâmetros opcionais no cabeçalho, pois não parece que você precisaria deles.
Importante
É importante usar o esqueleto pelo menos na declaração de caso (vejaações de scripts de inicialização) e para implementar pelo menos o caso inicial. No caso inicial, é aí que você deve chamar seu script.
Você pode encontrar aqui um pequeno exemplo de script que será chamado no final de uma inicialização:veja minha essência. Coloquei um nível de execução inválido para Default-Stop, mas de alguma forma o script ainda é chamado durante o desligamento. De qualquer forma, o código no caso "stop" é executado, não aquele no caso "start" durante o desligamento.
Depois de escrever seu script, copie-o, /etc/init.d
vamos supor que seu script de inicialização seja chamado de notificação de inicialização, então você faria (como root):
chown root:root boot-notification
chmod 0750 boot-notification
mv boot-notification /etc/init.d/
Então você precisa “registrar” o script no sistema init. Você usará o insserv
comando (novamente como root) ou poderá usar o YaST:
insserv boot-notification
Em seguida, você pode verificar ainda se o script é um dos últimos a ser executado examinando cada nível de inicialização. Se você escolher apenas o nível de execução 3, poderá fazer o seguinte:
ls -l /etc/init.d/rc3.d/S*
Isso retornará uma lista de links para scripts de inicialização. O link para o seu script deve estar no final (ou próximo a ele) da lista.
Nota: Se você quiser experimentar a forma mais dinâmica de escrever scripts de inicialização, recomendo a leitura destas 2 páginas:
Responder3
Para OpenSUSE 12.2 (Mantis), oroteiropara "after local" deveria ser /etc/init.d/after-local
, e pode ser necessário habilitá-lo via systemctl, assim...
Parahabilitar/etc/init.d/after-local,
systemctl enable after-local.service
Paraverificar statusde /etc/init.d/after-local,
systemctl status after-local.service
Responder4
Descobri que existem 2 maneiras de fazer isso:
- O primeiro e mais importante é abrir o terminal e digitar:
sudo crontab -e
então digite
@reboot sudo <command_to_execute_at_startup>
- Em segundo lugar, você pode criar um arquivo de serviçousando este método