Linux - ฉันจะดูได้อย่างไรเมื่อกระบวนการเริ่มต้นขึ้น?


23

ฉันจะดูได้อย่างไรเมื่อกระบวนการเริ่มต้นโดยสมมติว่าฉันรู้จัก pid (บน Linux)

คำตอบ:


30

หากคุณต้องการเฉพาะเวลาเริ่มต้นคุณสามารถเลือกฟิลด์และระงับส่วนหัวได้โดยทำดังนี้

 ps -p YOURPID -o lstart=

ผลลัพธ์จะเป็นดังนี้:

 Mon Dec 14 17:17:16 2009

ซึ่งเป็นctime(3)รูปแบบและคุณสามารถแยกวิเคราะห์เพื่อแยกส่วนที่เกี่ยวข้อง

สาขาอื่น ๆ ที่เริ่มต้นเช่นstart, stime, bsdstartและstart_timeอายุเวลา (หลังจาก 24 ชั่วโมงเพียง แต่วันที่มีการแสดงตัวอย่าง)

อย่างไรก็ตามคุณสามารถใช้ได้โดยตรงกับกระบวนการที่เพิ่งเริ่มต้นโดยไม่ต้องแยกวิเคราะห์เพิ่มเติม:

ps -p YOURPID -o stime=

ซึ่งจะมีผลลัพธ์เช่น:

09:26

ใช้ได้กับ mac ด้วย!
Brad Parks

8

"ps -f" - มันอยู่ใน man pages


2
และเพื่อเลือก pid ที่รู้จัก:ps -f -p yourpid
หยุดชั่วคราวจนกว่าจะมีประกาศเพิ่มเติม

จริงๆแล้วมันใช้งานได้หากกระบวนการเริ่มต้นในวันเดียวกัน แต่ถ้ามันเริ่มต้นอีกวันคุณจะได้รับวัน แต่ไม่ใช่เวลาของวันใน @DennisWilliamson คำตอบ
alphamikevictor

8

awk '{print $22}' /proc/$pid/stat - ให้เวลาเริ่มต้นในระยะเวลาอันสั้นหลังจากบูต


คำตอบที่คลุมเครืออย่างสวยงาม!
wzzrd

ไขปัญหานี้ให้ฉัน ระบบที่มีเวลาอัพ '17: 57 'มีกระบวนการด้วยเวลาเริ่มต้นที่' 727975 ' ดูเหมือนว่ากระบวนการจะเริ่มต้น 8 วันนับจากนี้
Scott Pack

1
เป็นจริงในระยะเวลาอันสั้น (100 / วินาที)
MarkR

1
ชัดเจนเกินไป! และนอกจากนี้ตอนนี้คุณต้องค้นหาเวลาบูตและทำคณิตศาสตร์เพื่อแปลง jiffies เป็นวินาทีและคำนวณออฟเซ็ตเพื่อรับเวลานาฬิกา ง่าย แต่มีหลายก้าวเกินไป ดูคำตอบของ Chopper3
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

จำนวน jiffies ต่อวินาทีถูกเก็บไว้ในตัวแปรระบบ HZ ส่วนใหญ่จะเป็น 100 การคำนวณในเชลล์คุณอาจใช้สิ่งนี้: stackoverflow.com/a/44524937/1950345
reichhart

0

หากมีกระบวนการเดียวที่มีชื่อที่กำหนด (เช่นopenvpn) บนโฮสต์คุณสามารถทำได้:

ps -p `pgrep openvpn` -o lstart=

-1

วิธีหนึ่งที่คุณสามารถ ps -f | grep ตามที่คุณบอกว่าคุณ pid ฉลาดอื่นคุณสามารถฉลาดในด้านบน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.