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
ctime(3) format and you can parse it to split out the relevant parts.
Other start fields such as
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:
Following Dennis Williamson's excellent answer, the
ps command also has the
-O option which, according to the man page: is "Like -o, but preloaded with some default columns." This allows you to grep for the command (program) associated with the PID, if you don't know the PID itself.
Example: finding when an
apt-get process hanging on Debian/Ubuntu started:
ps -A -O lstart= | grep apt-get | grep -v grep
grep -v grep filters out lines containing the string "grep", which removes the command we just typed in (since we don't want it).
On my system right now, this gives:
1461407 Apr 15 06:00:00 2021 S ? 00:05:09 apt-get autoremove -y