在 Bash 脚本中使用“ps”时如何获取当前时间戳?

在 Bash 脚本中使用“ps”时如何获取当前时间戳?

我正在编写一个 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这个应该给出开始日期和时间

相关内容