Bash SIGUSR1 循环脚本
Bash SIGUSR1 loop script
我在 3-4 天前开始学习 bash,我有一项任务要完成,但我很难完成。我需要制作一个脚本,运行 一个循环,在收到 SIGUSR1 信号后,它应该打印进程 ID 并退出。如果能得到一些帮助,我将不胜感激。
您可以添加一个trap
命令来在收到信号时执行命令:
trap 'echo "Hmm, SIGUSR1??!"' SIGUSR1
为了让代码更简洁,让我们用一个函数来做到这一点:
exit_program(){
echo "Here is the PID: $$"
exit
}
如何调用trap中的函数?
trap "exit_program" SIGUSR1
希望这会有所帮助:
#!/usr/bin/env bash
# Cancel Program
exit_program(){
echo "Here is the PID: $$"
exit
}
# Reciever
trap "exit_program" SIGUSR1
你会这样做:
#!/usr/bin/env bash
# Our USR1 signal handler
usr1_trap(){
printf 'Here is the PID: %d\nExiting right-now!\n' $$
exit
}
# Register USR1 signal handler
trap usr1_trap USR1
printf 'Run this to stop me:\nkill -USR1 %d\n' $$
# Wait in background, not consuming CPU
while :; do
sleep 9223372036854775807 & # int max (2^63 - 1)
wait $!
done
我在 3-4 天前开始学习 bash,我有一项任务要完成,但我很难完成。我需要制作一个脚本,运行 一个循环,在收到 SIGUSR1 信号后,它应该打印进程 ID 并退出。如果能得到一些帮助,我将不胜感激。
您可以添加一个trap
命令来在收到信号时执行命令:
trap 'echo "Hmm, SIGUSR1??!"' SIGUSR1
为了让代码更简洁,让我们用一个函数来做到这一点:
exit_program(){
echo "Here is the PID: $$"
exit
}
如何调用trap中的函数?
trap "exit_program" SIGUSR1
希望这会有所帮助:
#!/usr/bin/env bash
# Cancel Program
exit_program(){
echo "Here is the PID: $$"
exit
}
# Reciever
trap "exit_program" SIGUSR1
你会这样做:
#!/usr/bin/env bash
# Our USR1 signal handler
usr1_trap(){
printf 'Here is the PID: %d\nExiting right-now!\n' $$
exit
}
# Register USR1 signal handler
trap usr1_trap USR1
printf 'Run this to stop me:\nkill -USR1 %d\n' $$
# Wait in background, not consuming CPU
while :; do
sleep 9223372036854775807 & # int max (2^63 - 1)
wait $!
done