[SH] Variable wordt niet goed opgeslagen (denk ik)

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • wishmaster1986
  • Registratie: April 2004
  • Laatst online: 01:16
Mijn vraag
Ik heb hier een Bash script die bepaalde processen moet ophalen en 1 daarvan moet killen. Opvragen gaat goed maar ook weer niet helemaal. Mijn de output van een command wordt niet opgeslagen in een variable.

Relevante software en hardware die ik gebruik
Mac OSX

Hierbij het script:
#!/bin/sh

# Directory to check if exists
DATA_VOLUME="/Volumes/Data-Volume/PDF123"

# Gets PID of Ahsay Scheduler Process
AHSAY_SCHEDULER_PID=$(sudo pgrep -x java -Xms128m -Xmx768m -Djava.class.path=/Applications/AhsayOBM.app/bin:/Applications/AhsayOBM....
echo "Ahsay Scheduler PID is $AHSAY_SCHEDULER_PID"

# Gets PID of Ahsay backup job from Ahsay Scheduler parent PID
AHSAY_BACKUP_JOB_PID=$(sudo pgrep -P $AHSAY_SCHEDULER_PID)
echo "Ahsay backup job PID is $AHSAY_BACKUP_JOB_PID"

# Kills Ahsay backup job PID if data volume directory does not exits.
if [ -d $DATA_VOLUME ]
then
    echo "Directory $DATA_VOLUME  exists. Continuing backup"
else
    echo "Error: Directory $DATA_VOLUME does not exists. Killing backup job process."
    sudo pkill -P $AHSAY_SCHEDULER_PID
fi


En hierbij de output:

Ahsay Scheduler PID is 95
28947
Ahsay backup job PID is
Error: Directory /Volumes/Data-Volume/PDF123 does not exists. Killing backup job process.


Volgens mij gaat het fout op de regel: AHSAY_BACKUP_JOB_PID=$(sudo pgrep -P $AHSAY_SCHEDULER_PID)

pgrep vind dus wel het child process id maar zet deze niet in de variable. Ik snap even niet goed waarom, ik heb dan ook eigenlijk totaal geen ervaring met Unix scripting. Wat denken jullie?

Alle reacties


Acties:
  • 0 Henk 'm!

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Waarschijnlijk door dat "(sudo pgrep -P $AHSAY_SCHEDULER_PID) meer dan een resultaat geeft.
Is het niet een stuk eenvoudiger om te kijken of er niet gewoon ergens een pid file gedumpt wordt in /var/run ofzo?

Daarnaast: kan je in de scheduler niet beter de check doen of de map bestaat in plaats van achteraf als de job al aan het draaien is.