Bagaimana perintah "atas" menampilkan hasil langsung?

9

Bagaimana saya bisa menulis skrip shell yang menunjukkan hasil secara real time?

Sesuatu seperti topperintah yang memperbarui hasil setelah beberapa interval waktu yang tetap.

teks alternatif

Lazer
sumber
6
mungkin menggunakan cursesantarmuka ... tapi saya pikir ini lebih merupakan pertanyaan pemrograman dan milik SO
xenoterracide

Jawaban:

7

Ini akan membantu jika Anda jauh lebih spesifik tentang apa yang Anda coba lakukan.

Ini adalah contoh yang sangat sederhana:

while true
do
    clear
    date
    sleep 1
done
Dijeda sampai pemberitahuan lebih lanjut.
sumber
13

Anda dapat menggunakan perintah arloji (1) untuk menjalankan skrip Anda secara berkala:

watch -n 1 myscript.sh

Ini akan berjalan myscript.shsetiap 1 detik, membersihkan layar di antara setiap proses dan dengan cap waktu di sudut. Anda dapat menggunakan -dopsi dan bahkan akan menyoroti perbedaan dalam output per run.

Joshperry
sumber
Saya hanya berpikir bagaimana menjawabnya menggunakan arloji.
Kevin M
Saya tidak punya watch. Bisakah kamu lebih spesifik? OS apa?
Chris Page
2

Sebagian besar dari data itu umumnya diekspos di / proc virtual file-system virtual. Setiap proses memiliki entri dalam / proc dalam direktori yang disebut PID. Jadi / proc / 5437 akan memiliki primitif untuk proses 5437. Membaca primitif di sana dan menguraikannya dengan tepat akan membuat Anda lebih dekat dengan apa yang dilakukan top.

Top sebenarnya bekerja dengan memanggil panggilan fungsi tertentu yang mengekstrak informasi ini langsung dari kernel alih-alih menariknya dari file. Untuk melakukan hal yang sama dari bash Anda harus menariknya dari sistem file virtual / proc, atau mengekstraknya dari panggilan lain seperti ke ps.

Sedangkan untuk real-time, itu tidak bisa dilakukan pada tingkat detail yang disediakan top. Anda dapat mengiris waktu dengan cukup baik sehingga tampak real-time, tetapi Anda masih akan mendapatkan irisan waktu.

sysadmin1138
sumber
2

Eh, kalau-kalau Anda melihat topoutput untuk waktu yang lebih lama, dan tidak hanya untuk memeriksa apakah suatu program baik-baik saja, saya sarankan menggunakan htop .

Ini memberi Anda banyak informasi waktu nyata dan lebih mudah untuk mengontrol dan mengelola.

Anda dapat mengubah tata letak output, seperti grafik batang dan kolom.

polemon
sumber
Saya percaya dia bertanya bagaimana cara menulis aplikasi yang melakukan jajak pendapat secara berkala bukan tentang top atau htop secara khusus.
Chris
1

topmenggunakan Kutukan dan membaca /procsistem file

Pengulangan
sumber
1
Kecuali pada sistem yang tidak memiliki /proc. Cara lain untuk mendapatkan informasi adalah sysctl (8) / sysctl (3).
Chris Page