Bagaimana cara menampilkan waktu yang berlalu sejak boot sistem terakhir menggunakan "uptime"?

17

Saya ingin menampilkan waktu yang berlalu sejak boot sistem terakhir digunakan uptime, tetapi saya tidak ingin menampilkan semua info itu. Saya hanya ingin tahu berapa jam berlalu sejak boot sistem terakhir (yaitu: 18:17:59)

Adrian George
sumber

Jawaban:

31

Untuk mendapatkan waktu berlalu sejak boot sistem terakhir dalam hh:mm:ssformat, Anda dapat menggunakan:

awk '{print int($1/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime

/proc/uptime file pseudo berisi dua angka:

  • Angka pertama adalah berapa lama sistem telah menyala dalam hitungan detik.
  • Angka kedua adalah berapa banyak waktu yang dihabiskan mesin dalam hitungan detik.

Jadi, menggunakan awkAnda dapat mengambil nomor pertama dan mengubahnya dalam hh:mm:ssformat.

Radu Rădeanu
sumber
15

Untuk mendapatkan waktu aktif dalam hitungan detik:

awk '{print $1}' /proc/uptime

Untuk mendapatkan waktu aktif dalam hitungan menit:

 echo $(awk '{print $1}' /proc/uptime) / 60 | bc

Untuk mendapatkan waktu aktif dalam jam:

 echo $(awk '{print $1}' /proc/uptime) / 3600 | bc

Untuk mendapatkan x digit presisi Anda dapat menambahkan skala = x, misalnya untuk x = 2

echo "scale=2; $(awk '{print $1}' /proc/uptime) / 3600" | bc
realmoonstruck
sumber
2

Coba yang ini:

uptime | awk '{ print $3 }'

Bahkan, ia mencetak kata ketiga dari garis yang dihasilkan oleh uptime.

Alen
sumber
3
Berhasil. Tapi sepertinya itu bukan cara yang tepat untuk melakukannya. Bagaimana jika kata ketiga bukan waktunya, misalnya kata ketiga saya adalah "4", karena mesin saya berjalan selama 4 hari. Inilah yang saya dapatkan: "02:00:39 hingga 4 hari, 12:54, 2 pengguna, rata-rata memuat: 0,03. 0,06, 0,06".
Adrian George
Oh: DI tidak tahu waktu lebih dari 1 hari!
Alen
Tidak apa-apa: sekarang Anda punya jawaban untuk ini?
Adrian George
Tidak, maaf uptimetampaknya tidak memiliki pilihan tetapi saya juga tidak dapat menemukan apa pun di internet.
Alen
2

Modifikasi sepele untuk menampilkan hari:

awk '{print int($1/86400)"days "int($1%86400/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime
xerostomus
sumber
0

Ini akan memformat output Anda sebagai 2 zero padding:

awk '{printf("%02d:%02d:%02d",int($1/3600),int($1/3600/60),int($1%60))}' /proc/uptime
D4NI3LS
sumber