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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top