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)

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.


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

2

Coba yang ini:

uptime | awk '{ print $3 }'

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


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.