我使用 openconnect 连接到我的 VPN 服务器,我注意到一件奇怪的事情是,如果我使用kill
或pkill
命令杀死正在后台运行的 openconnect 进程,那么整个 Linux 网络将无法使用,我必须重新启动系统才能使其再次运行,但使用 Ctrl + C 杀死前台 openconnect 不会影响网络可用性,我想制作一个脚本来在每天凌晨 12 点自动重启(杀死并重新连接)openconnect,所以我希望能够使用 pkill 命令终止它。
我想知道用 pkill 杀死它和用 Ctrl + C 杀死它之间的区别,以及如何在 shell 脚本中正确终止该进程。
谢谢。
日志
root@vagrant:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=144 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 138.338/141.269/144.200/2.931 ms
root@vagrant:~# ps
PID TTY TIME CMD
1397 pts/0 00:00:00 sudo
1398 pts/0 00:00:00 bash
1493 pts/0 00:00:00 openconnect
1495 pts/0 00:00:00 ps
root@vagrant:~# pkill openconnect
root@vagrant:~# ping 8.8.8.8
connect: Network is unreachable
答案1
我明白了,我应该用它$ kill -2 ID
来终止 openconnect 进程,-2
选项发送“从键盘中断”,这对我来说很有帮助。