Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
唯一进程标识符的标准或最佳做法(在类Unix操作系统上)_Unix_Uniqueidentifier_Unix Timestamp_Pid_Ps - Fatal编程技术网

唯一进程标识符的标准或最佳做法(在类Unix操作系统上)

唯一进程标识符的标准或最佳做法(在类Unix操作系统上),unix,uniqueidentifier,unix-timestamp,pid,ps,Unix,Uniqueidentifier,Unix Timestamp,Pid,Ps,在Unix系统上,PID仅在任何给定的时间点是唯一的。它在给定的时间间隔内不是唯一的,因为在原始进程终止之后。为了存储自引导以来在系统上运行的所有进程的历史数据,我需要自引导以来的唯一标识符 这方面有什么标准或最佳做法吗?我下面的计划解决方案是否有任何错误或遗漏 预期解决方案 将PID和流程开始时间(作为标准)一起用作唯一的流程标识符似乎是合乎逻辑的。这样的标识符在重启之间甚至是唯一的 优势 PID和进程启动时间都有足够明确的定义,在所有类Unix系统上都有意义 这两个值都是整数,比较容易处理

在Unix系统上,PID仅在任何给定的时间点是唯一的。它在给定的时间间隔内不是唯一的,因为在原始进程终止之后。为了存储自引导以来在系统上运行的所有进程的历史数据,我需要自引导以来的唯一标识符

这方面有什么标准或最佳做法吗?我下面的计划解决方案是否有任何错误或遗漏

预期解决方案 将PID和流程开始时间(作为标准)一起用作唯一的流程标识符似乎是合乎逻辑的。这样的标识符在重启之间甚至是唯一的

优势

  • PID和进程启动时间都有足够明确的定义,在所有类Unix系统上都有意义
  • 这两个值都是整数,比较容易处理
  • 进程可以按开始时间和PID进行明确排序
  • 除了过程的唯一标识外,这两个值还可以用于其他用途
  • 缺点

  • 除了调用外部实用程序
    ps
    ,似乎没有可移植的方法来获取进程开始时间。例如在shell中:
    date-d“$(ps-p$PID-o lstart=)”+%s
    。在Linux中,可以从
    /proc/$PID/stat
    计算进程开始时间,但这种方法在其他系统上不起作用
  • 由于前一点中的事实,可移植方法可能会不必要地缓慢和资源密集

  • ntp服务总是调整系统时间,这会影响从“ps-p$pid-o lstart”读取的开始时间。因此,在调整系统时间后,您可以获得不同的开始时间。

    这是一个非常好的观点。谢谢你指出这个陷阱。