为了排除故障,我想每 15 秒记录一次 PID 及其命令并将它们写入文本文件。
所需的输出:时间戳、PID、命令
答案1
这将为您提供所需的三列:
$ ps -hopid,comm | perl -anle'print time, ", $F[0], $F[1]"'
1541626566, 6496, gedit
1541626566, 7513, bash
您可以限制或扩展 的范围ps
,即。它列出了哪些进程。然后将其放入带有重定向的循环中。
while true; do echo x; sleep 15; done > out
替换echo x
为正确的命令和out
您选择的文件名。
至于生成信息的命令,这里有一个概要。
ps -hopid,comm
-ps
很明显,-h
关闭标题行并-o
代表输出(PID 和命令)。- 这将转到 Perl 命令,即
perl -anle'print time, ", $F[0], $F[1]"'
.这perl
是珀尔。这些-anle
标志相应地表示:a
- 将输入加载到数组中,n
- 处理新行,l
- 处理每一行,最后e
- 执行后面的代码。 - 现在代码如下
'print time, ", $F[0], $F[1]"'
:首先打印时间戳,然后打印保存输入材料的数组的第一列,然后是第二列。