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 aussehen

    programme=(
                  "/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 Komma

    Wie 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önnte

    prog=`echo "${programme[s]}" | awk -F"," '{print $1}'`
    prog=`echo $prog | sed -e "s/ //"`
    zeit=`echo "${programme[s]}" | awk -F"," '{print $2}'`
    

    Danke
    worst_case


Anmelden zum Antworten