Portál AbcLinuxu, 7. května 2025 01:05
zaloha1.sh
:
#!/bin/sh rsyncdir() { rsync $1 sync } ( while true; do rsyncdir adresar1 sleep 10 rsyncdir adresar2 sleep 10 done ) &Potrebuji vedet jak skript jednoduse ukoncim kdyz v seznamu procesu bezi jak
/bin/sh ./zaloha1.sh
s PID1 tak i - rsync adresarn
s PID2. Kdyz totiz zadam kill PID1
proces s rsync adresarn
stale bezi. Doufam ze jsem popsal svuj problem spravne.
rsync
u:
EXIT VALUES 0 Success ... 20 Received SIGUSR1 or SIGINTTakže pokud ukončíte ten
rsync
signálem SIGUSR1
, tak by mělo stačit změnit:
rsyncdir() { rsync $1 [ "$?" -eq 20 ] && exit sync }Další možnost je ukončovat pokud existuje nějaký soubor (tj. například vytvořením
/tmp/skonci.zalohu
by se skript ukončil):
rsyncdir adresar1 [ -e "/tmp/skonci.zalohu" ] && exit
/bin/sh ./zaloha1.sh
s PID1. Proces rsync adresarn
s PID2 bezi dale.
/bin/sh ./zaloha1.sh
tak rsync
ktery ten skript spustil bezi dale a ja chci ukoncit vse co dany skript spustil.
rsync
.
Při řešení se souborem (řešení s výmazem souboru je elegantnější) pak jen přidáte ten test do každého místa, kde je OK skončit. To má výhodu, že nemusíte nic ukončovat násilně, což je obvykle lepší řešení.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.