send signal between scripts (bash)
Ich habe ein kleines Problem, wahrscheinlich ist es eine dumme Frage, aber ich habe vor ungefähr einer Woche angefangen, Bash zu lernen ... Ich habe 2 Skripte, a.sh und b.sh. Ich muss beide ständig zum Laufen bringen. b.sh sollte auf ein Signal von a.sh @ wart
(Ich versuche zu erklären: a.sh und b.sh laufen -> a.sh sendet ein Signal an b.sh -> b.sh fängt ein Signal ein, macht etwas -> a.sh macht etwas anderes und sendet dann noch ein signal -> b.sh fängt signal ein, macht was -> etc.)
Das ist, was ich versucht habe:
Asche
#!/bin/bash
./b.sh &;
bpid=$!;
# do something.....
while true
do
#do something....
if [ condition ]
then
kill -SIGUSR1 $bpid;
fi
done
b.sh:
#!/bin/bash
while true
do
trap "echo I'm here;" SIGUSR1;
done
Wenn ich a.sh ausführe, erhalte ich keine Ausgabe von b.sh, auch wenn ich die Standardausgabe in eine Datei umleitung ... Wenn ich jedoch b.sh im Hintergrund von meiner Bash-Shell aus ausführe, scheint dies auf meine zu antworten SIGUSR1 (wird mit demselben Befehl direkt von der Shell gesendet) (ich erhalte die richtige Ausgabe) Was fehlt mir?
EDIT: Dies ist ein einfaches Beispiel, das ich ausführen möchte:
Asche
#!/bin/bash
./b.sh &
lastpid=$!;
if [ "$1" == "something" ]
then
kill -SIGUSR1 $lastpid;,
fi
b.sh:
#!/bin/bash
trap "echo testlog 1>temp" SIGUSR1;
while true
do
wait
done
Ich kann die Datei "temp" nicht abrufen, wenn a.sh ausgeführt wird. Wenn ich jedoch./b.sh &
und dannkill -SIGUSR1 PIDOFB
manuell, alles funktioniert gut ...