![如何查看最近10秒执行的进程的命令行](https://linux22.com/image/44562/%E5%A6%82%E4%BD%95%E6%9F%A5%E7%9C%8B%E6%9C%80%E8%BF%9110%E7%A7%92%E6%89%A7%E8%A1%8C%E7%9A%84%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%91%BD%E4%BB%A4%E8%A1%8C.png)
是否有一个视图可以记录并列出过去 10 秒内执行的进程?
我特别想跟踪命令行。
答案1
如果过程未完成,您可以通过以下方式找到它们:
ps axho etime,cmd| sed ':a;s/^\(0*\) /\10/g;ta' | sort | less
但如果过程已经完成,那就不太确定了:
您必须知道在哪里搜索...
警告!仅当二进制文件不在高速缓存中时,以下工作才会起作用:如果它们有一段时间没有被访问。
也许一个简单的ls -ltru
就足够了:
/bin/ls -ltru /etc/init.d | tail
否则,更复杂的命令可能是:
find /usr/bin -type f -amin -1
find ${PATH//:/ } -type f -amin -1
find ${PATH//:/ } /home/*/bin -type f -amin -1
将显示一分钟内访问的所有文件。
10秒,就更困难了:
while read time;do
read name
[ $time -lt 10 ] && echo $name
done < <(find ${PATH//:/ } /home/*/bin -type f -amin -1 -print0 |
xargs -0 --no-run-if-empty stat -c $(date +%s)$'-%X ;"%n\n"' |
bc)
答案2
尝试这个:
ps k-etime h -eo etimes,command | while read etime comm; do [ $etime -lt 10 ] && echo -e "$etime\t$comm"; done
这将显示过去 10 秒内启动且仍在运行的所有进程。