打印到 stdout 被杀死的进程 ID

打印到 stdout 被杀死的进程 ID

使用kill命令,有没有办法打印到stdout被杀死的后台进程的进程ID?通过 Google 搜索后,似乎有(在某些 Unix 或 Linux 上)一个--verbose选项,但在 Ubuntu 20.x 或 CentOS 7.x 上似乎不可用。

如果仅使用命令无法完成此操作kill,是否可以通过 CLI 以其他方式完成(例如使用命令kill和其他命令)?

这是我用来终止后台进程的命令的示例:

kill $(jobs -p)

运行此示例时,如果可能的话,我希望查看正在被终止的进程 ID。

这是我在互联网上找到的:

To enable verbose logging pass the --verbose flag to the kill command. 
Note that this is not supported by all shell built-ins so may not be available on your system.
    
    kill --verbose 17146
    sending signal 15 to pid 17146

更多信息:

/usr/bin/kill --verbose 8411
Usage:
 kill [options] <pid|name> [...]
Options:
 -a, --all              do not restrict the name-to-pid conversion to processes
                        with the same uid as the present process
 -s, --signal <sig>     send specified signal
 -q, --queue <sig>      use sigqueue(2) rather than kill(2)
 -p, --pid              print pids without signaling them
 -l, --list [=<signal>] list signal names, or convert one to a name
 -L, --table            list signal names and numbers
 -h, --help     display this help and exit
 -V, --version  output version information and exit
For more details see kill(1).

因此,在我的系统上,它显然不可用。关于解决方法或等效解决方案有什么建议吗?

解决方案:jobs -p | xargs -t kill

答案1

kill是一个内置的外壳

   $ type -a kill

    kill is a shell builtin
    kill is /usr/bin/kill

如果你想使用--verbose你需要调用kill命令

   $ /usr/bin/kill --verbose 4935

    sending signal 15 to pid 4935

我在SUSE 12 (util-linux 2.33.2)和Centos 8 (util-linux 2.32.1)中检查过, verbose是一个有效的选项。也许您的发行版已kill使用不同的标志进行编译。作为一种解决方法,您可以-p仅出于日志记录目的运行prints the pids.

/usr/bin/kill --help

Usage:
 kill [options] <pid>|<name>...

Forcibly terminate a process.

Options:
 -a, --all              do not restrict the name-to-pid conversion to processes
                          with the same uid as the present process
 -s, --signal <signal>  send this <signal> instead of SIGTERM
 -q, --queue <value>    use sigqueue(2), not kill(2), and pass <value> as data
 -p, --pid              print pids without signaling them
 -l, --list[=<signal>]  list signal names, or convert a signal number to a name
 -L, --table            list signal names and numbers
     --verbose          print pids that will be signaled

 -h, --help             display this help
 -V, --version          display version

相关内容