Como faço para traduzir init.d scripts do Ubuntu / Debian Linux para Solaris?
Pergunta
Eu tenho vários scripts init.d que eu estou usando para iniciar alguns daemons. A maioria desses scripts que eu encontrei na internet e que todo o uso de start-stop-daemon. Meu entendimento é que "start-stop-daemon" é um comando que é específico para distribuições Linux ou BSD e não está disponível no Solaris.
Qual é a melhor maneira de traduzir meus scripts init.d do Linux para o Solaris? Existe um comando equivalente a start-stop-daemon que eu posso usar, mais ou menos?
Desde que eu não sou muito de um usuário Solaris, eu estou disposto a admitir antecipadamente que eu não sei mesmo se a minha pergunta é inerentemente inválido ou não.
Solução
start-stop-daemon é uma coisa Linux, e não utilizados que muito em Solaris. Eu acho que você pode porta o comando, porém, se você quiser reutilizar seus scripts de inicialização.
Caso contrário, depende de qual versão do Solaris que você está usando. A partir do Solaris 10 e também OpenSolaris eles usam um novo quadro script de inicialização "Solaris Service Management Facility", que você configura com a comandos svcs
, svccfg
e svcadm
.
http://www.oracle.com/technetwork/ servidor-storage / solaris / overview / servicemgmthowto-jsp-135655.html para obter mais informações.
Para versões mais antigas do Solaris scripts mais de inicialização são escritos em shell puro, sem quaisquer comandos auxiliares como start-stop-daemon.
Outras dicas
No Solaris 10 ou mais tarde usando SMF é recomendado, mas em um mais cedo liberar você criar um script de inicialização em /etc/init.d e vinculá-lo a partir dos diretórios rcX.d. Aqui está um bare-ossos exemplo de um script de inicialização para o lançamento de um daemon rsync:
#!/sbin/sh
startcmd () {
/usr/local/bin/rsync --daemon # REPLACE WITH YOUR COMMANDS
}
stopcmd () {
pkill -f "/usr/local/bin/rsync --daemon" # REPLACE WITH YOUR COMMANDS
}
case "$1" in
'start')
startcmd
;;
'stop')
stopcmd
;;
'restart')
stopcmd
sleep 1
startcmd
;;
*)
echo "Usage: $0 { start | stop | restart }"
exit 1
;;
esac
Criar um link para o script de cada diretório rcX.d (seguindo o "S" / convenção "K").
ln rsync /etc/rc3.d/S91rsync
for i in `ls -1d /etc/rc*.d | grep -v 3`; do ln rsync $i/K02rsync; done
Veja o README em cada diretório rcX.d e verifique a página de manual para init.d. Aqui está um pouco da página man:
Os nomes dos arquivos em rc? .D diretórios são da forma [SK] nn, onde os meios S começar este trabalho, meio K matar esse trabalho, e nn é o número de sequência relativo para matar ou iniciar o trabalho.
Ao inserir um estado (init S, 0,2,3, etc.) O rc [S0-6] roteiro executa os scripts em /etc/rc[S0-6].d que são prefixados com K seguido por aqueles certificados prefixado com S. Quando a execução de cada de script em um dos / etc / rc [S0-6] diretórios, o / sbin / rc [S0-6] roteiro passa um único argu- mento. Ele passa o argumento 'stop' para scripts prefixados com K eo argumento 'start' para scripts prefixado com S. Não há nenhum dano ao aplicar a mesma sequência número para vários scripts.