Bagaimana cara mengurutkan output ps berdasarkan waktu mulai proses?

66

Apakah ada cara untuk mengurutkan output ps berdasarkan waktu mulai proses, sehingga yang terbaru ada di bagian atas atau bawah?

Di Linux?

Di SysV5?

Di Mac?

Dean Smith
sumber

Jawaban:

87

Ini harus bekerja di Linux dan SysV5

ps -ef --sort=start_time
Sekenre
sumber
Ini berfungsi persis seperti yang diminta, terima kasih. Setelah menggali lebih banyak saya tidak yakin ini mungkin pada Mac OS tanpa sedikit awk
Dean Smith
1
start_time berhasil. lstart tidak. RHEL
Felipe Alvarez
1
bagaimana cara membalik pesanan?
Phu Nguyen
2
@ PhuNguyen agak terlambat ke pesta, tapi mungkin orang lain menggunakan ini. Anda dapat membalik urutan dengan memipis output tac.
Paul
1
@Stephane coba ini:watch "ps -ef --sort=start_time | grep -v kworker | tail"
Sekenre
11

Linux:

$ ps aux --sort=lstart 

OSX:

$ ps aux -O started
rkthkr
sumber
2
Saya takut tidak ada yang seperti itu pada waktu mulai. Itu memang menampilkan waktu mulai, tetapi tidak menyortir.
Dean Smith
2
Perbedaan antara lstart dan start_time menangkap saya juga - lstartmemberikan stempel waktu penuh, tetapi tidak dapat digunakan sebagai kunci pengurutan. start_timememberikan kolom 'waktu biasa dalam 24 jam terakhir, tanggal jika tidak', dan dapat digunakan sebagai kunci pengurutan. Keduanya memberikan 'MULAI' di header.
LHMathies
waktu dalam satu jam terakhir: jika suatu proses diluncurkan kemarin pada waktu yang lebih lambat dari hari ini, itu akan muncul setelah proses hari ini ... tidak dapat digunakan berdasarkan jenis, kecuali sedikit "awk" mengubah itu
Olivier Dulac
@OlivierDulac: bukan untuk saya. 15/12 15:40muncul sebelumnya 16/12 15:39, sama seperti yang 13:39muncul sebelumnya 15:38.
Gauthier
1
lstart tidak bekerja untukku. start_time lakukan.
Felipe Alvarez
5

Seiring dengan jawaban hebat di atas, kadang-kadang saya hanya ingin melihat 20 pelaku teratas dengan proses diurutkan menurun berdasarkan waktu, cpu% dan penggunaan memori.

Untuk itu saya gunakan:

ps auxww --sort=lstart | sort -r -k3,4 | head -20

Ini akan berada pada platform CentOS, meskipun saya juga menikmati hasil yang sama di Fedora.

Oh dan nyengir, kadang-kadang saya ingin menghapus satu set proses, jadi saya hanya menggunakan varian di atas yang mencakup sedikit tindakan grep -v, seperti:

ps auxww --sort=lstart | sort -r -k3,4 | grep -v "sbin/httpd" | head -20

sumber
--sortdari pstidak bekerja untuk saya. Mengandalkan shell sort. +1
kellog
3

Saya belum dapat berkomentar, tetapi untuk menjawab pertanyaan tentang cara membalik urutan waktu, cukup beri tanda minus ( -) di depan bidang.
Contoh:ps -elf --sort=-start_time

Barry S
sumber
2

Atau coba 'ls', karena memungkinkan format waktu yang mudah disortir, dan lebih mudah digunakan.

( cd /proc; ls -td --full-time --time-style=+%s [0123456789]*; )

Output tanggal / waktu dalam zaman, procs terbaru di atas.

Jim Black
sumber
ini hanya menunjukkan PID
elig
0

Coba perintah sederhana:

ps | sort -k7 -n

-k7untuk kolom waktu dan -nuntuk numerik.

Contoh

Khushboo Goyal
sumber