获取进程存活时间

创建:
更新:
ps -eo lstart,pid,cmd | grep "php-fpm: pool www" | grep -v 'grep'

要在 Linux 中获取子进程的存活时间(以 Unix 时间戳的形式表示),可以使用以下步骤:

  1. 获取子进程的 PID。
  2. 访问 /proc/<PID>/stat 文件,其中 <PID> 是子进程的 PID。
  3. /proc/<PID>/stat 文件中读取进程的启动时间(start_time),该值以时钟滴答数(clock ticks)的形式存储在第 22 列中。
  4. 获取系统的时钟滴答数,可以使用 getconf CLK_TCK 命令。
  5. 将进程的启动时间除以时钟滴答数,以获取进程的存活时间(单位为秒),然后将其添加到系统启动时间的 Unix 时间戳(即系统启动的时间,以秒为单位)中,即可得到子进程的存活时间(以 Unix 时间戳的形式表示)。
以下是获取子进程存活时间的 Unix 时间戳的示例命令:
# 获取进程存活时间
PID=<子进程的 PID>

# 获取进程的启动时间(以时钟滴答数的形式存储)
START_TIME=$(awk '{print $22}' /proc/${PID}/stat)

# 获取系统的时钟滴答数
CLK_TCK=$(getconf CLK_TCK)

# 计算进程的存活时间(以秒为单位)
UPTIME=$((($(awk '{print $1}' /proc/uptime) - ${START_TIME} / ${CLK_TCK})))

# 计算子进程的存活时间(以 Unix 时间戳的形式表示)
CHILD_UPTIME=$(( $(date +%s) - ${UPTIME} ))

echo "子进程的存活时间为:${CHILD_UPTIME} 秒(Unix 时间戳形式)"

注意,这个方法获取的存活时间不是绝对准确的,因为在读取进程的启动时间和计算子进程的存活时间期间,进程的存活时间可能会发生变化。

参考


千里之行,始于足下
本站总访问量 本文总阅读量