Wie kann ich init.d-Skripte von Ubuntu / Debian Linux auf Solaris übersetzen?
Frage
Ich habe mehr init.d-Skripte, die ich einige Daemons starten bin mit. Die meisten dieser Skripte ich im Internet gefunden habe und sie alle verwenden Start-Stop-Daemon. Mein Verständnis ist, dass „start-stop-daemon“ ist ein Befehl, der auf Linux oder BSD-Distributionen spezifisch ist, und ist auf Solaris nicht zur Verfügung.
Was ist der beste Weg, um meinen init.d-Skripte von Linux auf Solaris zu übersetzen? Gibt es einen Befehl entspricht Start-Stopp-Daemon, die ich verwenden kann, grob?
Da ich nicht viel von einem Solaris-Benutzer, ich bin bereit, im Voraus zu sagen, dass ich weiß nicht einmal, wenn meine Frage an mich ungültig ist oder nicht.
Lösung
Start-Stop-Daemon ist ein Linux-Ding, und verwendet nicht so viel auf Solaris. Ich denke, man kann jedoch den Befehl Port, wenn Sie Ihren Init-Skripte wieder verwenden wollen.
Ansonsten hängt es davon ab, welche Version von Solaris Sie verwenden. Beginnend mit Solaris 10 und Opensolaris verwenden sie auch einen neuen Startup-Skript Framework "Solaris Service Management Facility", die Sie mit den Befehlen svcs
, svccfg
und svcadm
konfigurieren.
Siehe http://www.oracle.com/technetwork/ Server-Speicher / solaris / Übersicht / servicemgmthowto-jsp-135655.html für weitere Informationen.
Für ältere Solaris-Versionen der meist Init-Skripte geschrieben werden, in rein Shell ohne Helfer-Befehle wie Start-Stopp-Daemon.
Andere Tipps
Unter Solaris 10 oder höher SMF verwendet, wird empfohlen, ist aber auf einer früheren Version würden Sie ein Init-Skript in /etc/init.d und Link, um es aus den rcX.d Verzeichnisse erstellen. Hier ist ein nackten Knochen Beispiel eines Init-Skript zum Starten eines Rsyncdaemons:
#!/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
Erstellen Sie einen Link auf das Skript von jedem rcX.d Verzeichnis (nach der „S“ / „K“ Konvention).
ln rsync /etc/rc3.d/S91rsync
for i in `ls -1d /etc/rc*.d | grep -v 3`; do ln rsync $i/K02rsync; done
Sehen Sie die README in jedem rcX.d Verzeichnis und überprüfen Sie die man-Seite für init.d. Hier ist ein wenig von der man-Seite:
Die Dateinamen in rc? .D Verzeichnisse sind von der Form [SK] nn, wo bedeutet S Job starten, Mittel K töten diesen Job, und nn ist die relative Sequenznummer für das Töten oder Starten Sie den Job.
Wenn ein Zustand eintritt (init S, 0,2,3, etc.) Die rc [S0-6] Skript diese Skripte in /etc/rc[S0-6].d ausführt, die mit K Präfix gefolgt von denen mit S. Präfix Skripte Wenn jede Ausführung Skript in einem der Datei / etc / rc [S0-6] Verzeichnisse, die / sbin / rc [S0-6] Skript übergibt ein einziges Argument. Er übergibt das Argument ‚stop‘ für Skripte mit K und das Argument ‚Start‘ für Skripte voran mit vorangestelltem S. Es gibt keinen Schaden in der gleichen Reihenfolge der Anwendung Anzahl an mehrere Skripte.