1

Как я могу узнать, как долго работает, например. nginx был запущен в CentOS 6?

В CentOS 7 я могу использовать systemctl status nginx и он показывает, как долго последний раз запускалась служба.

Но в CentOS 6 эквивалентный статус службы команд service nginx status только дает мне PID и говорит, что nginx запущен.

1 ответ1

1

ps -p ProcessID -o etime= даст вам время выполнения процесса, который вы ищете.
Замените ProcessID фактическим или используйте 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."

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .