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..