use*_*312 11 shell man kill documentation
在它的手册页中kill是这样写的
概要
Run Code Online (Sandbox Code Playgroud)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: 命令未找到
我犯了什么错误吗?
Mat*_*Mat 51
kill [ -s signal | -p ]
Run Code Online (Sandbox Code Playgroud)
手册页中的这种语法意味着:
您可以使用
kill -s signal或可以使用kill -p,但不能同时使用-s,并-p在同一时间。
管道 ( |) 代表(独占)或在文档中,它不是命令的一部分。
当你输入
foo | bar
Run Code Online (Sandbox Code Playgroud)
在您的 shell 中,它将尝试启动foo和bar,并将 的输出通过管道foo传输到bar程序。(这是 shell 执行此操作,而不是foo(或bar),|未传递给任一进程。)在您的情况下,第二部分是-p 123,因此 shell 尝试查找调用的可执行文件-p并失败并显示该错误消息。
slm*_*slm 32
我认为您对 Bash 有一个内置命令kill和命令kill.
$ type -a kill
kill is a shell builtin
kill is /usr/bin/kill
kill is /bin/kill
Run Code Online (Sandbox Code Playgroud)
您正在阅读的手册页指的是kill位于/bin. 使用完整路径来召唤它:
$ /bin/kill -p sleep
16486
Run Code Online (Sandbox Code Playgroud)
顺便说一下,/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
Run Code Online (Sandbox Code Playgroud)