คำสั่ง ps (อย่างน้อยรุ่น procps ที่ใช้โดยลีนุกซ์จำนวนมาก) มีฟิลด์ฟอร์แมทจำนวนมากที่เกี่ยวข้องกับเวลาเริ่มต้นกระบวนการ, lstart
ซึ่งมักจะให้วันที่และเวลาแบบเต็มรูปแบบที่กระบวนการเริ่มต้น:
# ps -p 1 -wo pid,lstart,cmd
PID STARTED CMD
1 Mon Dec 23 00:31:43 2013 /sbin/init
# ps -p 1 -p $$ -wo user,pid,%cpu,%mem,vsz,rss,tty,stat,lstart,cmd
USER PID %CPU %MEM VSZ RSS TT STAT STARTED CMD
root 1 0.0 0.1 2800 1152 ? Ss Mon Dec 23 00:31:44 2013 /sbin/init
root 5151 0.3 0.1 4732 1980 pts/2 S Sat Mar 8 16:50:47 2014 bash
สำหรับการอภิปรายถึงวิธีการเผยแพร่ข้อมูลในระบบไฟล์ / proc ดูที่
/unix/7870/how-to-check-how-long-a-process-has-been-running
(จากประสบการณ์ของฉันภายใต้ Linux, การประทับเวลาในไดเรกทอรี / proc / ดูเหมือนจะเกี่ยวข้องกับช่วงเวลาที่ไดเรกทอรีเสมือนถูกเข้าถึงเมื่อเร็ว ๆ นี้มากกว่าเวลาเริ่มต้นของกระบวนการ:
# date; ls -ld /proc/1 /proc/$$
Sat Mar 8 17:14:21 EST 2014
dr-xr-xr-x 7 root root 0 2014-03-08 16:50 /proc/1
dr-xr-xr-x 7 root root 0 2014-03-08 16:51 /proc/5151
โปรดทราบว่าในกรณีนี้ฉันรันคำสั่ง "ps -p 1" ที่เวลา 16:50 จากนั้นจึงสร้างเชลล์ bash ใหม่จากนั้นรันคำสั่ง "ps -p 1 -p $$" ภายในเชลล์นั้นหลังจากนั้นไม่นาน ... .)
ps -p <pid> -o lstart
หรือไม่? ดูเหมือนว่ามันใช้ได้ แต่ฉันไม่แน่ใจว่าทำไมมันไม่ใช่คำตอบที่ชัดเจนทันทีหลายครั้งที่คำถามนี้ดูเหมือนจะเกิดขึ้น