是否有可能获得一个旧的正在运行的进程的开始时间?如果不是今天开始,ps似乎会报告日期(而不是时间),如果不是今年开始,ps只会报告年份。老工艺的精确度会永远消失吗?


当前回答

    ps -eo pid,cmd,lstart | grep YOUR-PID-HERE

其他回答

$ ps -p 182454 -o lstart=
Mon Oct 18 17:26:44 2021

但是我能得到以epoch秒为单位的答案吗?

 ps -eo pid,etime,cmd|sort -n -k2
    ps -eo pid,cmd,lstart | grep YOUR-PID-HERE

ps命令(至少是许多Linux发行版使用的procps版本)有许多与进程启动时间相关的格式字段,包括lstart,它总是给出进程启动的完整日期和时间:

# ps -p 1 -wo pid,lstart,cmd
  PID                  STARTED CMD
    1 Mon Dec 23 00:31:43 2013 /sbin/init

# ps -p 1 -p $$ -wo user,pid,%cpu,%mem,vsz,rss,tty,stat,lstart,cmd
USER       PID %CPU %MEM    VSZ   RSS TT       STAT                  STARTED CMD
root         1  0.0  0.1   2800  1152 ?        Ss   Mon Dec 23 00:31:44 2013 /sbin/init
root      5151  0.3  0.1   4732  1980 pts/2    S    Sat Mar  8 16:50:47 2014 bash

有关如何在/proc文件系统中发布信息的讨论,请参见 https://unix.stackexchange.com/questions/7870/how-to-check-how-long-a-process-has-been-running

(根据我在Linux下的经验,/proc/目录上的时间戳似乎与虚拟目录最近被访问的时间有关,而不是进程的开始时间:

# date; ls -ld /proc/1 /proc/$$ 
Sat Mar  8 17:14:21 EST 2014
dr-xr-xr-x 7 root root 0 2014-03-08 16:50 /proc/1
dr-xr-xr-x 7 root root 0 2014-03-08 16:51 /proc/5151

注意,在这种情况下,我在大约16:50运行了“ps -p 1”命令,然后生成了一个新的bash shell,然后在该shell中运行“ps -p 1 -p $$”命令,随后不久....)

使用ls -ld /proc/process_id命令,其中process_id可以通过top命令找到