如何查找 CentOS 6 中某项服务的启动和运行时间?

如何查找 CentOS 6 中某项服务的启动和运行时间?

如何了解某个服务(例如 nginx)在 CentOS 6 中已经启动并运行了多长时间?

在 CentOS 7 中,我可以使用它systemctl status nginx,它显示服务上次启动了多长时间。

但是在 CentOS 6 中,等效命令service nginx status仅给我 PID 并说 nginx 正在运行。

答案1

ps -p ProcessID -o etime=将为您提供您正在寻找的进程的运行时间。
替换进程ID使用实际的或使用自动pidof查找nginx

ps -p $(pidof -s nginx) -o etime=

输出格式:“天-小时:分钟:秒”


如果您需要以秒为单位的运行时间,那么:

ps -p $(pidof -s nginx) -o etimes=

但请注意,虽然etime是 POSIX 标准,但etimes只能在较新的 Linux 发行版中找到


以人类可读的格式输出:

#!/bin/sh

Service='sshd'

PID=$(pidof -s ${Service} )
[ -z ${PID} ] && { echo "${Service} not running."; exit 1; }

rt=$(ps -p ${PID} -o etime=) ;  echo "${rt}";
[ -z "$(echo "${rt}" | grep '-')" ] && days=0 || {
  days=$(echo ${rt} | awk -F- '{print $1}')
}

ft=$(echo "${rt}" | grep -o ':' | awk 'BEGIN{RS=""; OFS="";}  {print length }' )
[ ${ft} -eq 1 ] && hours=0 || {
  hours=$(echo ${rt} | awk -F\: '{print $1}' | sed 's/[0-9]-//g')
}
[ ${ft} -eq 1 ] && {
  mins=$(echo ${rt} | awk -F\: '{print $1}')
} || {
  mins=$(echo ${rt} | awk -F\: '{print $2}' | sed 's/\:.*$//g')
}
[ ${ft} -eq 1 ] && {
  secs=$(echo ${rt} | awk -F\: '{print $2}')
} || {
  secs=$(echo ${rt} | awk -F\: '{print $3}')
}

echo "${Service} running: ${days} days, ${hours} hours, ${mins} minutes, ${secs} seconds."

相关内容