4
我正在爲應用程序編寫bash包裝。這個包裝器負責更改用戶,運行軟件並記錄其輸出。 我也希望它傳播SIGINT信號。防止在處理SIGINT後終止bash腳本
這是到目前爲止我的代碼:
#!/bin/bash
set -e; set -u
function child_of {
ps --ppid $1 -o "pid" --no-headers | head -n1
}
function handle_int {
echo "Received SIGINT"
kill -int $(child_of $SU_PID)
}
su myuser -p -c "bash /opt/loop.sh 2>&1 | tee -i >(logger -t mytag)" &
SU_PID=$!
trap "handle_int" SIGINT
wait $SU_PID
echo "This is the end."
我的問題是,當我送一個SIGINT給這個包裝,handle_int
被調用但隨後的腳本已經結束了,而我希望它繼續等待$SU_PID
。
有沒有辦法捕捉int信號,做一些事情,然後阻止腳本終止?
如果我明白你的問題:接收後'SIGINT'你希望你的包裹腳本要等到你'su'命令退出之前死亡? – rkyser
@rkyser是的,這正是我想要的。 – mistyrouge