我在尝试在 bash 脚本中模拟“Ctrl + C”时遇到了一个问题。基本上,我试图在运行另一个命令后模拟按键。虽然我似乎可以毫无问题地终止整个脚本,但我只是试图中断它,而实际上并没有将其杀死或关闭,或者如果可能的话,继续执行脚本的其余部分。
这是这里的麻烦行:
netstat -a -c & sleep 60 && kill SIGHUP 26777
我只想扫描一分钟,然后中断而不关闭/终止。我尝试了我能想到的所有命令组合。我看到的一些解决方案看起来非常复杂,只会导致我出错。有没有更简单的方法可以解决这个问题?-提前谢谢
答案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 ~]$
10 秒后,我会使用 SIGSTOP 信号停止该进程(我很不耐烦 ;-)),并且可以随时使用 SIGCONT 信号(kill -CONT
PID)重新启动它