[ srleiqnet @ 24.06.2006. 18:19 ] @
Imam pocetnicko pitanje u vezi bash shell scripte. Hocu da posaljem script-i ime programa kao jedini parametar, i ako je aktivan, da ga ubije i ponovo startuje. Ubija ga OK, ali se onda shell script zaustavlja sa porukom "Terminated" (ili "Killed" ako koristim -9). Moje pitanje je, kako da nastavim script posle kill-a?

Ovako izgleda script, broj 4 se nikada ne prikaze:

Code:

#!/bin/bash
echo "1"
PROCESS_NAME="$1"
echo "2"
PROCESS_NUMBER=`ps ax | grep "$PROCESS_NAME" | awk '{print $1}'`
echo "3"
kill $PROCESS_NUMBER
echo "4"


Pozdrav, Srle
[ srleiqnet @ 25.06.2006. 01:50 ] @
Nasao sam resenje, kada se koristi 'killall <imeprograma>', script nastavlja sa egzekucijom.
[ random @ 26.06.2006. 12:40 ] @
Greška u gornjem kodu ti je ta što previše labavo grepuješ i ubijaš proces koji ne treba, jer će ime tvog skripta takođe proći kroz grep filter, zato što si mu kao prvi argument prosledio string koji grepuješ. Naravno, to se može rešiti na milion načina, evo nekih:

Code:
PROCESS_NUMBER=`ps axw | cut -c28- | grep "^${PROCESS_NAME}" | awk '{print $1}'`


Code:
PROCESS_NUMBER=`ps axw | grep "${PROCESS_NAME}"  | grep -v "$0" | awk '{print $1}'`


Code:
PROCESS_NUMBER=`ps -C "${PROCESS_NAME}" -o pid=`