Я столкнулся с проблемой при попытке симулировать "Ctrl + C" в скрипте bash. По сути, я пытаюсь симулировать нажатия клавиш после выполнения другой команды. Хотя у меня, кажется, нет проблем с завершением скрипта в целом, я просто пытаюсь прервать его, не убивая и не закрывая его, или, если возможно, продолжаю работу с остальной частью скрипта.
Вот проблемная строка:
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 ~]$
Я останавливаю процесс сигналом SIGSTOP через 10 секунд (я нетерпелив ;-)) и могу перезапустить его в любое время с помощью сигнала SIGCONT ( kill -CONT
PID)