タグ付けされた質問 「trap」

2
Ctrl + Cで、現在のコマンドを強制終了しますが、スクリプトの実行は続行します
私はライン、いつかのために睡眠してから実行して前記Iは、bashスクリプトを持ってtail -f、特定のパターンが見られていることを確認するために私のログファイルを、私はCtrl + Cを押してから抜け出すために、tail -fその後、bashスクリプトの終了の実行までに次の行に移動します: これが私がこれまでに行ったことです: #!/bin/bash # capture the hostname host_name=`hostname -f` # method that runs tail -f on log_file.log and looks for pattern and passes control to next line on 'ctrl+c' echo "===================================================" echo "On $host_name: running some command" some command here echo "On $host_name: sleeping for 5s" …
10 bash  shell  signals  trap 

3
親プロセスへのSIGINTの伝播の防止
子シェルスクリプトの実行中にControl + C(またはINTR文字に設定されている文字)を押すと、親プログラム(C ++プログラムまたはシェルスクリプト)が子シェルスクリプトを実行するシナリオを考えます。 SIGINTは、フォアグラウンドプロセスグループのすべてのプロセスに送信されます。これには、親プロセスが含まれます。 出典:POSIX.1-2008 XBDセクション11.1.9 このデフォルトの動作をオーバーライドする方法はありますか?子プロセスだけが親に伝播せずに信号を処理することですか? 参照:スタックオーバーフローポスト-子が中断されたときに親プロセスが完了しない(TRAP INT)

1
標準サブシェルとコマンド置換サブシェル
これらのトラップ出力について説明してください: $ line(){ echo -------------; echo $BASHPID; } $ trap 'echo bye' EXIT; trap -p; line; (trap -p; line); echo "$(trap -p; line)" trap -- 'echo bye' EXIT trap -- '' SIGTSTP trap -- '' SIGTTIN trap -- '' SIGTTOU ------------- 6176 trap -- '' SIGTSTP trap -- '' SIGTTIN …
8 bash  trap 

1
awkスクリプトでCtrl-Cをトラップする
私は信じているCtrl- Cのbashスクリプトでトラップすることができます。そのイベントを処理するために、Awkスクリプト内にトラップすることもできますか? たとえば、処理を中止するが、静かに終了するのではなく、すでに処理された結果を出力する場合はどうでしょうか。

1
SIGINTが子プロセスに到達しないようにする
サーバーを実行するためのbashスクリプトがあります。これは通常、ユーザーがを使用して終了しますCtrl-C。終了時にクリーンアップ関数を実行しますが、これは1秒で中断されることはありませんCtrl-C。 #!/bin/bash ... function cleanup { trap '' INT echo -n " Cleaning up..." scp $SRV:~/$DIR/server.log . && ssh -t $SRV "rm -rf ~/$DIR" echo " Finished." exit 0 } trap cleanup EXIT ... 現時点ではCtrl-C、scpが終了する1秒前にスクリプトが無期限にハングします。これはSIGINTbashスクリプトとscpプロセスの両方に送信されることと関係があることは理解していますが、クリーンアップが失敗するだけでなく、これによりスクリプトがハングする原因については迷っています。 だから私の質問は: なぜこれによりスクリプトがハングするのですか? どのように私は達することからSIGINTを防ぐことができますscpし、ssh子プロセスを?
4 bash  process  signals  trap 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.