我启动了一个程序并将输出写入ps -p PID -o lstart=
一个文件,如下所示:
$ long_running_command &
[1] 4562
$ ps -p $! -o lstart= > start_time
$ cat start_time
Wed Apr 6 06:16:31 2016
但当我稍后重新运行时,ps
我得到的结果略有不同:
$ ps -p 4562 -o lstart=
Wed Apr 6 06:16:53 2016
我的印象是lstart=
会打印给定进程的开始时间。为什么我再次致电时得到的开始时间不同ps
?
答案1
我曾怀疑(但无法复制)该问题在某种程度上与exec
调用或类似的替换正在运行的进程有关,保持相同的 PID 但重置开始时间。事实证明,解释要简单得多(不幸的是我没有在原来的问题中包含足够的细节)。
详见这个后续,NTP 更新正在更改ps
通话之间的系统时钟。显然lstart
尊重时钟更新(这是有道理的,但仍然让我有些惊讶),这意味着您不能依赖 的输出lstart
在单个进程的生命周期内保持一致。