Avatar billede aggie Nybegynder
23. august 2007 - 15:16

shell scripting: udtræk af pid vha. expr

Jeg har et script (bash) der skal hhv. starte eller stoppe en process afhængig af om den kører i forvejen eller ej, som giver en del bøvl (mere specifikt er det 'expr' der driller):

      1 #!/bin/bash
      2 PROCESS_NAME=synergys
      3
      4 ps_out=`ps -ucx | grep "$PROCESS_NAME"`
      5 pid=`expr "$ps_out" : '.*?\([0-9]*\).*$'`
      6
      7 #debugging
      8 echo "ps: $ps_out"
      9 echo "pid: [$pid]"
    10
    11 if [ -z $pid ]; then
    12    # if there is no pid, the process isn't running
    13    echo "Synergy ($PROCESS_NAME) is not running, starting it.."
    14    # START_OK=$(/usr/local/bin/synergys -c /etc/synergy.conf -n macbook)
    15 else
    16    echo "Synergy is running - process id is: $pid"
    17    # kill -9 $pid
    18 fi


- problemet er, at regex matching opfører sig mildt sagt skørt og ikke fanger pid - er der nogen der kan give et bedre bud?

sample output:
--
ps: aggie  358  0.1 -0.7  369772  13668  ??  Ss    1:51PM  0:14.02 synergys
pid: []
Synergy (synergys) is not running, starting it..
--
Jeg sidder på en mac, så den har ikke pgrep..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester