Anda dapat menentukan pemformat dan menggunakan lstart
, seperti perintah ini:
ps -eo pid,lstart,cmd
Perintah di atas akan menampilkan semua proses, dengan pemformat untuk mendapatkan PID, menjalankan perintah, dan tanggal+waktu dimulai.
Contoh (dari baris perintah Debian/Jessie)
$ ps -eo pid,lstart,cmd
PID CMD STARTED
1 Tue Jun 7 01:29:38 2016 /sbin/init
2 Tue Jun 7 01:29:38 2016 [kthreadd]
3 Tue Jun 7 01:29:38 2016 [ksoftirqd/0]
5 Tue Jun 7 01:29:38 2016 [kworker/0:0H]
7 Tue Jun 7 01:29:38 2016 [rcu_sched]
8 Tue Jun 7 01:29:38 2016 [rcu_bh]
9 Tue Jun 7 01:29:38 2016 [migration/0]
10 Tue Jun 7 01:29:38 2016 [kdevtmpfs]
11 Tue Jun 7 01:29:38 2016 [netns]
277 Tue Jun 7 01:29:38 2016 [writeback]
279 Tue Jun 7 01:29:38 2016 [crypto]
...
Anda dapat membaca ps
halaman manual atau periksa halaman Opengroup untuk pemformat lainnya.
Perintah ps (setidaknya versi procps yang digunakan oleh banyak distribusi Linux) memiliki sejumlah bidang format yang berhubungan dengan waktu mulai proses, termasuk lstart
yang selalu memberikan tanggal dan waktu lengkap proses dimulai:
# 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
Untuk diskusi tentang bagaimana informasi dipublikasikan di sistem file /proc, lihathttps://unix.stackexchange.com/questions/7870/how-to-check-how-long-a-process-has-been-running
(Dalam pengalaman saya di Linux, stempel waktu pada direktori /proc/ tampaknya terkait dengan momen ketika direktori virtual baru-baru ini diakses daripada waktu mulai proses:
# 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
Perhatikan bahwa dalam hal ini saya menjalankan perintah "ps -p 1" sekitar pukul 16:50, lalu menelurkan bash shell baru, lalu menjalankan perintah "ps -p 1 -p $$" di dalam shell itu tidak lama kemudian... .)
ls -ltrh /proc | grep YOUR-PID-HERE
Misalnya, PID Google Chrome saya adalah 11583:
ls -l /proc | grep 11583
dr-xr-xr-x 7 adam adam 0 2011-04-20 16:34 11583
Sebagai tindak lanjut dari jawaban Adam Matan, /proc/<pid>
stempel waktu direktori seperti itu belum tentu berguna secara langsung, tetapi Anda dapat menggunakan
awk -v RS=')' 'END{print $20}' /proc/12345/stat
untuk mendapatkan waktu mulai dalam detak jam sejak boot sistem.
Ini adalah unit yang sedikit rumit untuk digunakan; lihat juga mengubah sekejap menjadi detik untuk detailnya.
awk -v ticks="$(getconf CLK_TCK)" 'NR==1 { now=$1; next }
END { printf "%9.0f\n", now - ($20/ticks) }' /proc/uptime RS=')' /proc/12345/stat
Ini akan memberi Anda beberapa detik, yang dapat Anda teruskan ke strftime()
untuk mendapatkan stempel waktu (dapat dibaca manusia, atau lainnya).
awk -v ticks="$(getconf CLK_TCK)" 'NR==1 { now=$1; next }
END { print strftime("%c", systime() - (now-($20/ticks))) }' /proc/uptime RS=')' /proc/12345/stat
Diperbarui dengan beberapa perbaikan dari Stephane Chazelas di komentar; terima kasih seperti biasa!
Jika Anda hanya memiliki Mawk, mungkin coba
awk -v ticks="$(getconf CLK_TCK)" -v epoch="$(date +%s)" '
NR==1 { now=$1; next }
END { printf "%9.0f\n", epoch - (now-($20/ticks)) }' /proc/uptime RS=')' /proc/12345/stat |
xargs -i date -d @{}
pria proc; telusuri waktu mulai .