I had read a discussion on bash's callback,jlliagre post an amazing example.
callback example posted by jlliagre
Recite the main points here.
1.Create callback-example and run it on terminal with ./callback-example
.
#!/bin/bash
myCallback() {
echo "I've been called at $(date +%Y%m%dT%H%M%S)"
}
# Set the handler
trap myCallback SIGUSR1
# Main loop. Does nothing useful, essentially waits
while true; do
read foo
done
2.On another terminal, send the USR1 signal to the shell process.
$ pkill -USR1 callback-example
The author say :Each signal sent should trigger the display of lines like these ones in the first terminal:
I've been called at 20180925T003515
I've been called at 20180925T003517
I found that it never happen in my bash,how to fix it and run in bash?
Your script appears in the process list as
/bin/bash ./callback-example
and not only as./callback-example
.Add option
-f
to yourpkill
command.From
man pkill
: