Saya ingin menampilkan /proc/uptime
dalam format yang baik sebagai:
DD:HH:MM:SS
/proc/uptime
beri saya waktu sistem dalam detik, apakah ada solusi standar yang mengubah detik ke format ini?
Inilah jalan tanpa perl
:
awk '{printf("%d:%02d:%02d:%02d\n",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}' /proc/uptime
\n
untuk baris baru akan bagus!Anda dapat melakukan ini misalnya dengan perl dan beberapa matematika sederhana:
Jika Anda tidak membutuhkan detik, Anda dapat menjalankan
uptime
perintah. Keluarannya kemudian dapat diubah menjadi DD: HH: MM.Misalnya menggunakan (berfungsi dengan cara ini hanya jika waktu aktif> 1 jam)
sumber
Tidak, karena itu bukan masalah yang sulit. Bagi jumlah detik dengan 86400 menggunakan divisi integer untuk mendapatkan jumlah hari. Ambil sisanya dan bagi dengan 3600 untuk mendapatkan jumlah jam. Bagi sisanya dengan 60 untuk mendapatkan jumlah menit, dan Anda tersisa dengan jumlah detik. Semua ini dapat dilakukan dari shell menggunakan
expr
perintah jika shell Anda cukup kuno untuk tidak mendukung aritmatika secara asliMengambil jumlah detik sejak zaman dan mengubahnya menjadi tanggal yang dapat dibaca manusia adalah masalah yang sulit, dan ada cara standar untuk melakukan itu, misalnya
date -r SECONDS
dari shell. Tapi itu masalah yang berbeda.sumber
Adaptasi bagian yang relevan dari jawaban ini .
Selama waktu aktif Anda kurang dari satu tahun, Anda dapat menggunakan perintah berikut:
Saya mengekstrak bidang pertama dari file uptime, karena setidaknya di Linux saya, ada bidang kedua yang berisi total waktu idle. Saya menganggap itu sebagai jumlah detik sejak zaman, dan mengubahnya menjadi hari tahun diikuti oleh waktu dalam jam, menit dan detik. Karena hari tahun dimulai pukul satu, saya kurangi satu dari itu dalam
awk
doa terakhir saya .sumber
Konversi detik sejak zaman ke tanggal dan waktu:
sumber