Portál AbcLinuxu, 1. listopadu 2025 01:01
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.
rsyncu:
EXIT VALUES
0 Success
...
20 Received SIGUSR1 or SIGINT
Takž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.