
私は次のトラップを使用しています:
trap OnExit EXIT
そして、私のOnExit
関数では、何が起こったかについてのあらゆる情報をキャプチャして、それをログ ファイルに書き込むことができるようにしたいと考えています。誰が、なぜ、どのように、いつ、などについて知りたいのです。
これらは可能なのでしょうか?
答え1
1. 誰- 別のユーザーはプロセスにシグナルを送信できないため、プロセス所有者ユーザーになる可能性が最も高くなります (root ユーザーは引き続きシグナルを送信できますが、root がプロセスを強制終了したかどうかを確認する方法はわかりません)。
2. なぜ- おそらく次のようになります:
echo "Why did you interrupted the process?" && read why && echo $why > log
(なぜという意味なのかよく分かりません)。
3. 方法- ユーザーが を押すかCtrl + C
、 を介して割り込みを送信するとkill
、BASH は同じ信号を受信するため、私の知る限り、割り込みがどのように発生したかを正確に調べることは不可能です。
4. いつ- それは簡単です。次のdate
コマンドを使用します:
date > log
編集:「なぜ」と「どのように」の信号タイプを決定することを意味している場合は、これStackOverflow の Q&A。