我已经编写了一个shell脚本来使用inotifyt-tools的inotifywait实用程序监视目录。我希望该脚本在后台连续运行,但是我也希望能够在需要时将其停止。 为了使它连续运行,我习惯了while true;像这样: while true; do #a set of commands that use the inotifywait utility end 我已经将其保存在文件中/bin并使其可执行。为了使其在后台运行,我使用nohup <script-name> &并关闭了终端。 我不知道如何停止此脚本。我看过的答案在这里和非常密切相关的问题在这里。 更新1: 根据下面的@InfectedRoot的答案,我已经能够使用以下策略解决我的问题。初次使用 ps -aux | grep script_name 并sudo kill -9 <pid>用来杀死进程。然后,我不得不再次pgrep inotifywait使用sudo kill -9 <pid>ID作为返回值。 这行得通,但我认为这是一种凌乱的方法,我正在寻找更好的答案。 更新2: 答案包括杀死2个进程。这很重要,因为在命令行上运行脚本会启动2个进程,1个是脚本本身,2个是inotify进程。
在它的手册页中kill,内容如下 概要 kill [ -s signal | -p ] [ -a ] [ -- ] pid ... kill -l [ signal ] -p Specify that kill should only print the process id (pid) of the named processes, and not send any signals. 但是,由于我在RH和RHEL中都尝试了很多次,所以命令像kill -s SIGHUP |-p 123从未使用过,总是报告错误 bash:-p:找不到命令 我有没有犯错?