Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Under Linux I can get a process's uptime in seconds with:

echo $(($(cut -d "." -f1 /proc/uptime) - $(($(cut -d " " -f22 /proc/$PID/stat)/100))))

But how can I get it under different OS? ex.: SunOS, HP-UX, AIX?

share|improve this question
add comment

5 Answers

up vote 3 down vote accepted

On any POSIX-compliant system, you can use the etime column of ps.

LC_ALL=POSIX ps -o etime= $PID

The output is broken down into days, hours, minutes and seconds with the syntax [[dd-]hh:]mm:ss. You can work it back into a number of seconds with simple arithmetic:

t=$(LC_ALL=POSIX ps -o etime= $PID)
d=0 h=0
case $t in *-*) d=${t%%-*}; t=${t#*-};; esac
case $t in *:*:*) h=${t%%:*}; t=${t#*:};; esac
s=$((d*86400 + h*3600 + ${t%%:*}*60 + ${t#*:}))
share|improve this answer
add comment

I don't know if there is one command for all systems, but you can use the Unix Rosetta Stone to translate the commands to each system.

share|improve this answer
add comment
echo $(( $(date +'%s') - $(stat -c '%Y' /proc/$PID) ))

This should work in any system with a /proc filesystem. Unfortunately I don't have the means to test it.

share|improve this answer
add comment

This will work:

ps -eo etime,cmd | grep process_name
share|improve this answer
add comment

Discovered one that works across Linux (probably all versions) and Solaris (at least, 5.9) - no access to other OS's to test it and too lazy to check docs :)

boottime=$(who -b | awk '/ /{print $3 " " $4}')")

is the time the system was booted in yyyy/mm/dd HH:MM:SS format, so converting to epoch-seconds is:

bootepoc=date -d "$boottime" +%s

and time its been up in seconds is obviously just current epoc-time minus that ie. $(( $(date +%s) - $bootepoc ))

If you want that as a more formatted date, might be easier going with another answer although other scripting languages can get you there (probably possible other ways too).

(you didnt say how you wanted it but gave a different example).

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.