Come posso tradurre gli script init.d da Ubuntu / Debian Linux a Solaris?
Domanda
Ho diversi script init.d che sto usando per avviare alcuni demoni. La maggior parte di questi script che ho trovato su Internet e usano tutti il ??demone start-stop. La mia comprensione è che " start-stop-daemon " è un comando specifico per le distribuzioni Linux o BSD e non è disponibile su Solaris.
Qual è il modo migliore per tradurre i miei script init.d da Linux a Solaris? Esiste un comando equivalente a start-stop-daemon che posso usare all'incirca?
Dato che non sono un utente di Solaris, sono disposto ad ammettere in anticipo che non so nemmeno se la mia domanda è intrinsecamente non valida o meno.
Soluzione
start-stop-daemon è una cosa di Linux e non è molto usata su Solaris. Immagino che tu possa eseguire il port del comando, se vuoi riutilizzare i tuoi script init.
Altrimenti dipende dalla versione di Solaris in uso. A partire da Solaris 10 e anche OpenSolaris usano un nuovo framework di script di avvio "Solaris Service Management Facility", che si configura con i comandi svcs
, svccfg
e svcadm
.
Vedi http://www.oracle.com/technetwork/ server-storage / solaris / overview / servicemgmthowto-jsp-135655.html per ulteriori informazioni.
Per le versioni precedenti di Solaris, la maggior parte degli script init sono scritti in pura shell senza alcun comando di aiuto come start-stop-daemon.
Altri suggerimenti
Su Solaris 10 o versioni successive si consiglia di utilizzare SMF, ma in una versione precedente si creava uno script init in /etc/init.d e si collegava ad esso dalle directory rcX.d. Ecco un esempio semplice di uno script di init per l'avvio di un demone 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: ln rsync /etc/rc3.d/S91rsync
for i in `ls -1d /etc/rc*.d | grep -v 3`; do ln rsync $i/K02rsync; done
{ start | stop | restart }"
exit 1
;;
esac
Crea un collegamento allo script da ciascuna directory rcX.d (seguendo la convenzione " S " / " K ").
<*>Vedi il README in ogni directory rcX.d e controlla la pagina man per init.d. Ecco un po 'della pagina man:
I nomi dei file nelle directory rc? .d sono nel formato [SK] nn, dove S significa iniziare questo lavoro, K significa termina questo lavoro e nn è il numero di sequenza relativo per uccidere o iniziare il lavoro.
Quando si entra in uno stato (init S, 0,2,3, ecc.) lo script rc [S0-6] esegue quegli script in /etc/rc[S0-6[.d che sono preceduti da K seguito da quegli script con il prefisso S. Durante l'esecuzione di ciascuno script in una delle directory / etc / rc [S0-6], / sbin / rc [S0-6] lo script passa un singolo argomento. Passa l'argomento 'stop' per gli script con il prefisso K e l'argomento 'start' per gli script con prefisso S. Non vi è alcun danno nell'applicazione della stessa sequenza numero a più script.