我正在编写一个 shell 脚本,让所有当前进程运行,并将它们导入grep过滤出我需要的。
但我还需要它给我一个时间戳,无论是发生时间ps
还是进程启动时间。没关系,我只需要一个时间。所有进程只需要几分之一秒的时间。
我的命令是这样的:
ps -U USERNAME -o rss=MEM,comm=CMD,pid=PID
我试着去
ps -U USERNAME -o rss=MEM,comm=CMD,pid=PID, start=START
但这只会给我一个时间hh:mm:ss
。我需要比这更精确的时间。时间戳是理想的选择。
我应该怎么办?
答案1
由于您需要比秒更精确的时间,因此您可以使用以下方式生成自己的时间戳:
date +%Y%m%d%H%M%s.%N
请记住,日期本身需要~.001 秒才能运行(取决于系统),因此纳秒可能不是正确的有效数字位数。
或者您可以使用 stat 查看 /proc/$THIS_PID/stat 以查看我们可以使用 /init 的启动时间:
stat -c %x /proc/1/stat
%x Time of last access
%X Time of last access as seconds since Epoch
%y Time of last modification
%Y Time of last modification as seconds since Epoch
%z Time of last change
%Z Time of last change as seconds since Epoch
2012-03-10 12:18:45.328784363 +0800
尽管如果过程真的当你找到它时,它可能会丢失,其他解决方案也是如此,但你可能需要先检查文件是否存在
答案2
尝试使用ps -ef
这个应该给出开始日期和时间