我刚才杀了什么?

dot*_*hen 6 linux kill

有什么办法可以查出我刚才杀了什么?

$ ps -A -o pid,cmd | grep someApp | grep -v grep
2802 python someApp.py
$ sudo kill 2302
$
Run Code Online (Sandbox Code Playgroud)

编辑:为了澄清,我需要在杀死它之前知道 PID 2302 是什么。这ps条线是为了说明我是如何杀死 2302 的,而我什至不知道它是什么。

Gil*_*il' 8

没有一般的方法可以知道,但你可能有线索。

您发送了一个 TERM 信号,而不是一个 KILL 信号,这样程序就有机会运行信号处理程序。它可能根本没有死,或者它可能在某处留下了日志条目。检查进程是否仍在运行 ( ps 2302),如果没有,请检查您的系统日志。

如果启用了进程记帐,则会有所有进程的日志。这可以通过GNU acct在 Linux 上获得,但对于大多数发行版,默认情况下不安装该软件包。如果启用了进程记帐,请运行lastcomm(您可能需要是 root 用户)以查看最近被杀死的进程(最新的在前)。使用lastcomm,仅跟踪命令名称,而不跟踪 PID 或参数;您必须通过环境匹配来确定它是哪个过程。在 Linux 下,lastcomm显示进程退出的日期,但只有 1 分钟的粒度,X如果命令被信号杀死,则在命令名称后面有一个标志。

GNU acct 跟踪更多信息,包括进程 ID,但该lastcomm命令不显示它:您必须运行dump-acct,不幸的是,它没有指示命令是否被信号杀死。

dump-acct /var/log/account/pacct | awk -F '|' '$10 ~ / *2302($| )/'
Run Code Online (Sandbox Code Playgroud)

还有其他子系统可以记录进程,例如 Linux 的审计,但它们通常没有配置为这样做。