我很疑惑,为什么我们不能使用kill -s 9 <pid>
或kill -s 15 <pid>
杀死前台进程?当我尝试执行相同操作时,得到的结果是进程 ID 不存在,而当我使用上述命令在后台杀死该程序时,操作却正常。
root@onXXXX:~/Documents/Testing_Scripts/NEW_Scrits# sh infinite.sh 20
My process id is 23873
Counting 20
Counting 19
kCounting 18
ill Counting 17
-s Counting 16
15Counting 15
Counting 14
23Counting 13
8Counting 12
73Counting 11
Counting 10
Counting 9
Counting 8
Counting 7
Counting 6
Counting 5
Counting 4
Counting 3
Counting 2
Counting 1
root@onxXXXX:~/Documents/Testing_Scripts/NEW_Scrits# kill -s 15 23873
-bash: kill: (23873) - No such process
答案1
从我看到的输出来看,您的 shell 脚本已关闭,然后您正试图终止它。您无法终止不存在的进程...
同时,您不能在有另一个程序在前台运行的 shell 中运行某个程序/命令。
所以这里实际发生的事情是,你运行你的脚本,等到它的工作完成,现在 shell 可以自由地运行其他程序,现在你正试图终止已经完成的进程。同时,当你在后台发送一个进程时,你就能够使用 shell 并且在它仍在运行时成功终止该进程。