GNU Kill(1) 接受名称参数多久了?

GNU Kill(1) 接受名称参数多久了?

我们最近发现 GNU Kill 超越了规格,将以名称作为参数并尝试终止具有该名称的所有进程,与 pkill(1) 或 Killall 的某些实现相同。

我还没有找到 GNU 的 Kill 变更日志。这个“功能”是什么时候添加的?

答案1

您可以浏览源码萨凡纳上的 Gnu coreutils(或在您的计算机上克隆存储库),特别是查看来源变更日志kill实用程序。没有也从来没有这样的功能。

do {
      intmax_t n = (errno = 0, strtoimax (arg, &endp, 10));
      if (errno == ERANGE || pid != n || arg == endp || *endp)
        {
          error (0, 0, _("%s: invalid process id"), arg);
          status = EXIT_FAILURE;
        }
} while ((arg = *++argv));

您链接到的联机帮助页用于kill来自的命令util-linux 集合。从手册页的日期可以看出,这个功能已经很老了。许多 Linux 系统都提供kill来自 GNU coreutils 的命令,或者来自过程包,大多数时候你会看到 shell 的内置命令而不是外部命令。这些都不允许您将裸命令名称作为参数传递。

与此相关的是,在 bash、ksh 和 zsh 中,您可以将任何作业规范作为参数传递给kill.作业规范以 a 开头%,后面可以跟作业编号或该作业命令名称的一部分。

$ jobs
[3] +  Running                 sleep 9999 &
[2] - Stopped                  vim foo
[1]    Running                 xterm &
$ kill %sleep
[3] + Terminated               sleep 9999 &
$ jobs
[2] + Stopped                  vim foo
[1] -  Running                 xterm &

相关内容