How can I see when a process started, assuming I know the pid. (On Linux)
If you want only the start time, you can select the field and suppress the header by doing this:
ps -p YOURPID -o lstart=
the output will look like this:
Mon Dec 14 17:17:16 2009
which is ctime(3)
format and you can parse it to split out the relevant parts.
Other start fields such as start
, stime
, bsdstart
and start_time
age the time (after 24 hours only the date is shown, for example).
You can, however, use them directly for recently started processes without further parsing:
ps -p YOURPID -o stime=
which would output something like:
09:26
awk '{print $22}' /proc/$pid/stat
- gives you the start time in jiffies after boot
-
-
Riddle me this. A system with an uptime of '17:57' has a process with a start time of '727975'. Looks like the process started 8 days from now? – Scott Pack Dec 18 '09 at 13:25
-
1
-
1Way too obscure! And besides, now you have to look up the boot time and do the math to convert jiffies to seconds and calculate the offset to get clock time. Easy, but too many steps. See Chopper3's answer. – Dennis Williamson Dec 18 '09 at 15:08
-
1The amount of jiffies per second is stored in system variable HZ. It is mostly 100. To calculate it in shell you might use this: stackoverflow.com/a/44524937/1950345 – reichhart Jun 24 '17 at 9:39
"ps -f" - it's in the man pages
-
2
-
Actually this works if the process was started the same day, but if it was started another day you only get the day, but not the time of day as on @DennisWilliamson answer – alphamikevictor Mar 24 '17 at 9:00
If there's a single process with a given name (e.g. openvpn
) on the host, you can do:
ps -p `pgrep openvpn` -o lstart=
one way you can ps -f |grep <pid>
as you said you the pid otherwise you can see in top also
-
1This will match far more things than planned.
ps
has the--pid
option to pass directly a specific pid you are interested in. – Patrick Mevzek Jan 11 '20 at 0:31