1
シグナルハンドラでシグナルが捕捉されたときに、誰がシグナルを実際に生成したのかを知りたいと思います。それがユーザー生成またはシステム生成か、またはOOM(Out-Of-Memory Management)によって生成されたか。 問題は、perconaツールキットを使用してデータベース変更を実行しており、2-3時間後にSIGHUPを使用して毎回停止しています。bash:トラップされたときに生成された信号のソースを知るには?
私は信号ハンドラをインストールしましたが、それを捕まえるのに、どこから来たのかを知りたいと思っています。 サンプルプログラムは以下の通りです:
trapCount=0
trapFunc()
{
trapCount=`expr $trapCount + 1`
echo "Sighup received...$trapCount" # But how to know who generated it
}
trap 'trapFunc' HUP
while [ 1 ]
do
echo "First Line"
sleep 1
echo "Second Line"
sleep 1
echo "Third Line"
sleep 1
echo "Fourth Line"
sleep 1
echo "Sixth Line"
sleep 1
echo "Seventh Line"
sleep 1
echo "Eighth Line"
done
したがって、デバッグトレースは絶対にありません。それは本当に残念です。 – kingsmasher1
しかし、少なくともこの場合、 'SIGHUP 'は制御端末が閉じられたことを意味します(少なくとも、制御端末が閉じられたと思う人があなたのコードを望んでいる)。 – chepner
スクリプトは 'nohup'を使って実行されましたが、それはまだ' sighup'によって閉じられていました。私はそのマシンを実行している唯一のユーザーであり、スクリプトに加えてmysqlは実行中の唯一のプログラムでした。 – kingsmasher1