gpt4 book ai didi

Bash pid 什么都不返回

转载 作者:行者123 更新时间:2023-12-04 18:30:53 25 4
gpt4 key购买 nike

我正在通过一本名为《学习 bash shell》的书来学习 bash。一切都很好,直到我遇到 kill命令。我创建了一个名为 loop 的小脚本,然后使用 loop & 运行它.当我使用 kill %loop ,然后使用 ps -e | grep loop ,过程还在。那我是不是没能杀死它?我必须使用 kill -9 ?另外,pidof当我使用 pidof loop 时似乎根本不起作用.它什么也不返回。

我正在使用 Ubuntu 和 bash。尽管我认为脚本无关紧要,但以防万一:

#! /bin/bash
# Just a script
while true; do
sleep 60
done

最佳答案

Shell 脚本不作为脚本的名称运行。它们以您在 shebang 中指定的 shell 的名称运行。在你的情况下,那是 /bin/bash .如果你完成了pidof bash您将获得脚本的 pid(以及当时正在运行的所有其他 bash 脚本)。

话虽如此,你不能用它们的名字杀死脚本,因为你正在尝试使用 kill %loop . Kill 只接受 pid。如果您使用 %表示法,那么它指的是由 shell 分配的内部作业编号。例如,以循环脚本为例:

$ ./loop &  <-- first run of loop script
[1] 8077 <--- job #1, running as pid 8077
$ ./loop & <--- second run of loop script
[2] 8079 <-- job #2, running as pid 8079
$ jobs
[1]- Running ./loop &
[2]+ Running ./loop &
$ kill %2
$ jobs
[1]- Running ./loop &
[2]+ Terminated ./loop <-- note, showing 'terminated' now
$ kill -9 8077
$ jobs
[1]+ Killed ./loop
$ jobs
$

关于Bash pid 什么都不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9405910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com