init Script
-
Hi,
ich habe mir für meine Programme ein init-Shell-Script geschrieben (Greenhorn)
Das Script startet mehrere Programme hintereinander.
Wie kann ich aber die Programme (mit Parameter) über eine Liste übergeben und dann per Schleife starten und stoppen. Das Script habe ich eigentlich nur für meine Zwecke modifiziert.[code]
#! /bin/sh# Author: Ich
### BEGIN INIT INFO
# Provides: visual
# Required-Start: $remote_fs $syslog
# X-UnitedLinux-Should-Start: setserial hotplug
# Required-Stop: $remote_fs $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 6
# Description: starting and stopping the visual Daemon
### END INIT INFOprog_1=/srv/www/htdocs/data/variablen
prog_2=/srv/www/htdocs/diagramm/save_data
prog_3=/srv/www/htdocs/kWh/kwh_zaehlertest -x $prog_1 || exit 5
test -x $prog_2 || exit 5
test -x $prog_3 || exit 5. /etc/rc.status
rc_resetcase "$1" in
start)
echo "Starting visual"echo -n "Starting $prog_1"
startproc $prog_1
rc_status -vecho -n "Starting $prog_2"
startproc $prog_2
rc_status -vecho -n "Starting $prog_3"
startproc $prog_3
rc_status -v
;;
stop)
echo "Shutting down visual "
echo -n "Shutting down $prog_1"
killproc -TERM $prog_1
rc_status -vecho -n "Shutting down $prog_2"
killproc -TERM $prog_2
rc_status -vecho -n "Shutting down $prog_3"
killproc -TERM $prog_3
rc_status -v
;;
try-restart)
$0 status >/dev/null && $0 restart
rc_status
;;
restart)
$0 stop
sleep 1
$0 start
rc_status
;;
status)
echo "Checking for visual: "
echo -n "Checking for $prog_1: "
checkproc $prog_1
rc_status -vecho -n "Checking for $prog_2: "
checkproc $prog_2
rc_status -vecho -n "Checking for $prog_3: "
checkproc $prog_3
rc_status -v
;;
echo "Usage: $0 {start|stop|try-restart|restart|status}"
exit 1
;;
esac
rc_exitIst nicht ganz edel... naja
Danke
worst_case
-
Versuch's mal so:
#!/bin/sh while [ $# -gt 0 ]; do $1 shift done
Aufruf:
my_init prog1 "prog2 arg1 arg2" prog3 ...
(Hab' ich nicht getestet, müsste aber vom Ansatz her funktionieren.)
Martin
-
Hi Martin,
was bedeutet
Code: ...
Danke
worst_case
-
Das soll der Aufruf des Skriptes in der Kommandozeile sein! "..." heißt hier: und so weiter.
(Das "Code:" wird von dem Tag automatisch eingeblendet, vergiss es einfach.)
-
Hi Martin,
ich glaube ich habe mich etwas falsch ausgedrückt.
Das Script an sich funkt.Nur muss ich für jedes Programm das ich starte das Script komplett verändern.
Ich möchte so eine Art Liste habe die dann per Schleife abgearbeitet wird.Liste =(/srv/...prog_1 , /srv/..prog_2, usw)
for @liste
und dann verliesen sie ihn
worst_case
-
Abend,
ich hab jetzt mein script so am laufen.
ich erzeuge eine liste mit pfad und programmnamenprogramm = "/bin/...prog1 /srv/www/prog2 usw"
bei jedem leerzeichen ist der block zu ende. jedoch wie kann ich ein prog mit parametern starten
z.B.programm = "/bin/hallo -f -o /srv/www/prog2 usw"
jetzt erkennt er einfach bei jedem blank einen neuen block.
wie kann ich das verhindern ?Danke
worst_case