Prozess mit Parameter starten
-
Hallo,
ich starte über ein Startscript im /etc/init.d Verzeichnis diverse Programme.
Ich habe eine Liste mit Programmen die nacheinander gestartet werden sollen.
Soweit so gut. Nun habe ich das Problem das einige Programme mit Parameter aufgerufen werden sollen.programme=( "/srv/www/htdocs/data/mpi_csv 30" "/srv/www/htdocs/alert/alert 60" "/srv/www/htdocs/diagramm/save_data 20" "/srv/www/htdocs/kWh/kWh 25" "/srv/www/htdocs/betriebsmeldungen/status 2" ) for (( s=0; s < (${#programme[*]}); s++)); do test -x "${programme[s]}" || echo "Fehler bei Programm:${programme[s]}" exit 5 done . /etc/rc.status rc_reset case "$1" in start) echo "Starting Visual-System" for (( s=0; s < (${#programme[*]}); s++)); do echo -n "Starting ${programme[s]}" sudo -u meinuser startproc "${programme[s]}" rc_status -v done ;; stop) echo "Shutting down Visual-System " for (( s=0; s < (${#programme[*]}); s++)); do echo -n "Shutting down ${programme[s]}" killproc -TERM ${programme[s]} rc_status -v done ;; try-restart) $0 status >/dev/null && $0 restart rc_status ;; restart) $0 stop sleep 1 $0 start rc_status ;; status) echo "Checking for visual: " for (( s=0; s < (${#programme[*]}); s++)); do echo -n "Checking for : ${programme[s]} " checkproc ${programme[s]} rc_status -v done ;; *) echo "Usage: $0 {start|stop|try-restart|restart|status}" exit 1 ;; esac rc_exit
Ohne Parameter funktioniert mein Script, jedoch bringe ich es nicht "mit" Parameter zum laufen.
Gruß
worst_case
-
Hallo,
gibt es hier keinen Shell Profi
Wie musste ich es machen wenn jedes Programm mit separatem Parameter starten will.
Die Liste sollte dann z.B. so aussehenprogramme=( "/srv/www/htdocs/data/mpi_csv , 2" "/srv/www/htdocs/alert/alert , 60" "/srv/www/htdocs/diagramm/save_data , 20" "/srv/www/htdocs/kWh/kWh , 25" "/srv/www/htdocs/betriebsmeldungen/status , 2" )
Dann muss natürlich die for-Schleife abgeändert werden. Die aktuelle Variable
${#programme[*]}
muss in zwei teile zerlegt werden.
1. Parameter vor Komma
2. Parameter nach KommaWie könnte das aussehen ??
Danke
worst_case
-
versuchs mit awk, bzw. regular expressions
-
Hallo,
danke für den Tip.
Es funktioniert jetzt, bin mir aber nicht sicher ob man die Befehle nicht "sauberer" (kürzer) schreiben könnteprog=`echo "${programme[s]}" | awk -F"," '{print $1}'` prog=`echo $prog | sed -e "s/ //"` zeit=`echo "${programme[s]}" | awk -F"," '{print $2}'`
Danke
worst_case