ps -p ProcessID -o etime=
lhe dará tempo de processamento que você está procurando.
Substitua ProcessID pelo atual ou use pidof
para localizar nginx
automaticamente:
ps -p $(pidof -s nginx) -o etime=
Formato da saída: "Dias-Horas: Mins: Seg"
Se você precisar de tempo de execução em segundos, então:
ps -p $(pidof -s nginx) -o etimes=
mas seja notado, enquanto etime
é o padrão POSIX, etimes
pode ser encontrado somente nas distribuições linux recentes
Saída em formato legível:
#!/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."