唯一进程标识符的标准或最佳做法(在类Unix操作系统上)
在Unix系统上,PID仅在任何给定的时间点是唯一的。它在给定的时间间隔内不是唯一的,因为在原始进程终止之后。为了存储自引导以来在系统上运行的所有进程的历史数据,我需要自引导以来的唯一标识符 这方面有什么标准或最佳做法吗?我下面的计划解决方案是否有任何错误或遗漏 预期解决方案 将PID和流程开始时间(作为标准)一起用作唯一的流程标识符似乎是合乎逻辑的。这样的标识符在重启之间甚至是唯一的 优势唯一进程标识符的标准或最佳做法(在类Unix操作系统上),unix,uniqueidentifier,unix-timestamp,pid,ps,Unix,Uniqueidentifier,Unix Timestamp,Pid,Ps,在Unix系统上,PID仅在任何给定的时间点是唯一的。它在给定的时间间隔内不是唯一的,因为在原始进程终止之后。为了存储自引导以来在系统上运行的所有进程的历史数据,我需要自引导以来的唯一标识符 这方面有什么标准或最佳做法吗?我下面的计划解决方案是否有任何错误或遗漏 预期解决方案 将PID和流程开始时间(作为标准)一起用作唯一的流程标识符似乎是合乎逻辑的。这样的标识符在重启之间甚至是唯一的 优势 PID和进程启动时间都有足够明确的定义,在所有类Unix系统上都有意义 这两个值都是整数,比较容易处理
ps
,似乎没有可移植的方法来获取进程开始时间。例如在shell中:date-d“$(ps-p$PID-o lstart=)”+%s
。在Linux中,可以从/proc/$PID/stat
计算进程开始时间,但这种方法在其他系统上不起作用ntp服务总是调整系统时间,这会影响从“ps-p$pid-o lstart”读取的开始时间。因此,在调整系统时间后,您可以获得不同的开始时间。这是一个非常好的观点。谢谢你指出这个陷阱。