ole@enterprise:~> ls /sbin/rc* /sbin/rcSuSEfirewall2 /sbin/rcgpm /sbin/rcnetwork /sbin/rcsyslog /sbin/rcdhclient /sbin/rchotplug /sbin/rcportmap ole@enterprise:~> ls /usr/sbin/rc* /usr/sbin/rcalsasound /usr/sbin/rckdm /usr/sbin/rcsmbfs /usr/sbin/rcapache /usr/sbin/rcksysguardd /usr/sbin/rcsmpppd /usr/sbin/rcapid /usr/sbin/rclpd /usr/sbin/rcsnmpd /usr/sbin/rcatd /usr/sbin/rcmysql /usr/sbin/rcsplash /usr/sbin/rcautofs /usr/sbin/rcnfs /usr/sbin/rcsshd /usr/sbin/rccron /usr/sbin/rcnfsserver /usr/sbin/rcxdm /usr/sbin/rcfam /usr/sbin/rcnscd /usr/sbin/rcxfs /usr/sbin/rcfbset /usr/sbin/rcpcscd /usr/sbin/rcxntpd /usr/sbin/rci4l /usr/sbin/rcpersonal-firewall /usr/sbin/rcypbind /usr/sbin/rci4l_hardware /usr/sbin/rcpowerfail /usr/sbin/rcyppasswdd /usr/sbin/rcinetd /usr/sbin/rcrandom /usr/sbin/rcypserv /usr/sbin/rcisdn /usr/sbin/rcraw /usr/sbin/rcypxfrd /usr/sbin/rcjoystick /usr/sbin/rcsendmail /usr/sbin/rckbd /usr/sbin/rcsingle
Das folgende Beispiel zeigt das Prinzip, das hinter dieser Idee steckt.
1: #!/bin/bash 2: 3: # Steuert einen Dienst. Beispiel für case ... in Struktur 4: # dienst start|restart|stop 5: 6: # Nach dem Inhalt des Parameters $1 wird entschieden, was gemacht werden soll. 7: case $1 in 8: start) 9: # Der Dienst wird gestartet 10: echo "Der Dienst wird gestartet." 11: ;; 12: 13: restart) 14: # Der Dienst wird neu gestartet 15: echo "Der Dienst wird neu gestartet." 16: ;; 17: 18: stop) 19: # Der Dienst wird gestoppt 20: echo "Der Dienst wird gestoppt." 21: ;; 22: 23: *) 24: # Falsches Kommando 25: echo "Falsches Kommando." > /dev/stderr 26: echo "Syntax:" > /dev/stderr 27: echo " dienst start|restart|stop" > /dev/stderr 28: exit 1 # Beenden mit Fehlercode 29: ;; 30: esac
Jenachdem ob start, restart oder stop hinter dem Skriptnamen steht, wird ein anderer Abschnitt des Skripts ausgeführt. Sollte es zu keiner Übereinstimmung kommen, wird der Abschnitt mit dem Asterisk ausgeführt, der in diesem Fall einen Hilfetext enthält.
ole@enterprise:~/test> dienst start Der Dienst wird gestartet. ole@enterprise:~/test> dienst restart Der Dienst wird neu gestartet. ole@enterprise:~/test> dienst stop Der Dienst wird gestoppt. ole@enterprise:~/test> dienst Falsches Kommando. Syntax: dienst start|restart|stop
Hier eine praktische Anwendung um zwei VNC-Server und einen Viewer für eine Vorführung zu starten und zu beenden. Weitere Informationen über den VNC-Server und seine Konfiguration finden Sie in Abschnitt B.1.
1: #!/bin/sh 2: # Startet zwei VNC-Server (Master und Slave) 3: 4: # Auflösung festlegen 5: GEOM=950x680 6: CDEPTH=16 7: 8: # Variable auswerten 9: case $1 in 10: start) 11: # Starten der VNC-Server 12: # Master starten 13: # Passworddatei ~/.vnc/privat 14: vncserver :1 \ 15: -geometry $GEOM \ 16: -depth $CDEPTH \ 17: -alwaysshared \ 18: -name master \ 19: -rfbauth $HOME/.vnc/privat 20: 21: # Slave starten 22: # Passworddatei ~/.vnc/public 23: vncserver :2 \ 24: -geometry $GEOM \ 25: -depth $CDEPTH \ 26: -alwaysshared \ 27: -name slave \ 28: -rfbauth $HOME/.vnc/public 29: 30: # Viewer zur Kontrolle des Master-Servers starten 31: # Falls in einem X-Terminal als anderer Benutzer gestartet zeigt 32: # die Display-Variable auf das aktuelle X-Window 33: # Der Server muß aber vorher mit 34: # xhost localhost 35: # freigegeben werden 36: DISPLAY=:0.0 37: export DISPLAY 38: # Viewer starten 39: vncviewer :1 40: ;; 41: 42: stop) 43: # Beenden des VNC-Servers 44: vncserver -kill :1 45: vncserver -kill :2 46: ;; 47: 48: *) 49: # Falsches Kommando 50: echo "Syntax: vnc start|stop" 51: exit 1 52: ;; 53: esac 54: 55: # Ende