RHEL 8中kill命令--verbose选项无法使用问题求助
kill命令--verbose选项无法使用的解决方法
问题现象
执行以下命令时出现报错:
- 尝试先指定
--verbose再指定信号:
$ kill --verbose -9 $(ps -eo pid,cmd | grep cmd_name | grep -v grep | awk '{ print $1 }') bash: kill: -verbose: invalid signal specification
- 将信号前置后仍报错:
$ kill -9 --verbose $(ps -eo pid,cmd | grep cmd_name | grep -v grep | awk '{ print $1 }') bash: kill: --verbose: arguments must be process or job IDs
移除--verbose选项后命令可正常执行,需要启用该选项查看信号发送详情。
--verbose选项说明(翻译自man手册)
--verbose
显示即将被kill发送信号的进程ID(PID)以及对应的信号信息。
问题根源
你当前使用的是bash内置的kill命令,它不支持--verbose长选项;而man手册中描述的是GNU coreutils包提供的/bin/kill命令,该版本才支持--verbose功能。
可以通过以下命令确认当前使用的kill类型:
type kill
若输出为kill is a shell builtin,则说明调用的是bash内置命令。
解决方案
方法1:调用外部kill命令(绝对路径)
直接使用/bin/kill执行命令,确保使用支持--verbose的版本:
/bin/kill --verbose -9 $(ps -eo pid,cmd | grep cmd_name | grep -v grep | awk '{ print $1 }')
方法2:跳过bash内置命令
使用command命令强制调用外部kill:
command kill --verbose -9 $(ps -eo pid,cmd | grep cmd_name | grep -v grep | awk '{ print $1 }')
选项顺序说明
GNU kill的正确语法为kill [OPTIONS] PID...,--verbose属于选项参数,需放在信号(如-9)和PID之前,确保命令解析正确。
内容的提问来源于stack exchange,提问作者user180574
相关产品推荐
相关产品推荐

