bash スクリプト内で「Ctrl + C」をシミュレートしようとしたときに問題が発生しました。基本的に、別のコマンドが実行された後のキーストロークをシミュレートしようとしています。スクリプトを完全に終了することに問題はないようです。スクリプトを実際に終了または閉じることなく中断するか、可能であればスクリプトの残りの部分を続行しようとしています。
ここで問題となるのは次の行です。
netstat -a -c & sleep 60 && kill SIGHUP 26777
1 分間スキャンして、閉じたり終了したりせずに中断したいだけです。考えられるすべてのコマンドの組み合わせを試しました。私が見た解決策の中には、信じられないほど複雑で、エラーしか発生しないものもありました。これを実行するより簡単な方法はありますか? - よろしくお願いします
答え1
これはどう:
[user1@centos6 ~]$ netstat -a -c > /tmp/tmp.netstat-out & (nsPID=$! ; sleep 10 ; kill -STOP $nsPID)
[1] 25658
[user1@centos6 ~]$
[1]+ Stopped netstat -a -c > /tmp/tmp.netstat-out
[user1@centos6 ~]$ ps -p 25658
PID TTY TIME CMD
25658 pts/1 00:00:00 netstat
[user1@centos6 ~]$ jobs
[1]+ Stopped netstat -a -c > /tmp/tmp.netstat-out
[user1@centos6 ~]$ kill -CONT %1
[user1@centos6 ~]$ jobs
[1]+ Running netstat -a -c > /tmp/tmp.netstat-out &
[user1@centos6 ~]$
kill -CONT
10秒後にSIGSTOP信号でプロセスを停止します(私はせっかちです;-))そして、SIGCONT信号( PID)でいつでもプロセスを再開できます。