“kill -p”真的有效吗?

“kill -p”真的有效吗?

在它的手册页中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: 未找到命令

我犯了什么错误吗?

答案1

kill [ -s signal | -p ]

手册页中的此语法含义是:

您可以使用kill -s signal 或者您可以使用kill -p,但不能同时使用-s两者-p

管道 ( |) 代表(独占),或者在文档中,它不是命令的一部分。

当您输入时

foo | bar

在您的 shell 中,它将尝试启动foobar,并将 的输出通过管道传输foobar程序。 (这是 shell 执行的操作,而不是foo(或bar),不会|将 传递给任何一个进程。)在您的情况下,第二部分是-p 123,因此 shell 尝试查找名为的可执行文件-p,但失败并显示该错误消息。

答案2

我认为您会因为 Bash 有一个名为 的内置命令kill以及命令 而被绊倒kill

$ type -a kill
kill is a shell builtin
kill is /usr/bin/kill
kill is /bin/kill

您正在阅读的手册页指的是kill位于 下的命令/bin。使用完整路径来召唤它:

$ /bin/kill -p sleep
16486

顺便说一句,这/usr/bin/kill只是一个链接/bin/kill

$ ls -l /usr/bin/kill
lrwxrwxrwx 1 root root 14 Feb  9  2011 /usr/bin/kill -> ../../bin/kill

$ readlink -m /usr/bin/kill
/bin/kill

相关内容