Aktualizace:trap
vyžaduje odstranění SIG
předpona pod podmínkou, ačkoli některé shelly ji podporují. Viz komentář níže.
Ampersand "&" spustí příkaz na pozadí v novém procesu. Když jeho nadřazený proces (ve vašem případě příkaz, který spouští bash skript), tento proces na pozadí resetuje svůj nadřazený proces na init (proces s PID
1), ale nezemře. Když stisknete ctrl+c
, posíláte signál přerušení do procesu na popředí a neovlivní proces na pozadí.
Chcete-li zastavit proces na pozadí, měli byste použít kill
příkaz s PID
nejnovějšího procesu na pozadí, který lze získat pomocí $!
.
Pokud chcete použít ctrl+c
Chcete-li ukončit proces skriptu i pozadí, můžete provést toto:
trap 'kill $BGPID; exit' INT
sleep 1024 & # background command
BGPID=$!
sleep 1024 # foreground command of the script
trap
upravuje obsluhu pasti SIGINT
(trap
vyžaduje odstranění SIG
prefix, ale některý shell může podporovat jeho zahrnutí), takže skript proces ukončí pomocí $BGPID
než vystoupí.