Làm cách nào để hiển thị thời gian đã trôi qua kể từ lần khởi động hệ thống cuối cùng bằng cách sử dụng thời gian chạy trực tiếp


17

Tôi muốn hiển thị thời gian đã trôi qua kể từ lần khởi động hệ thống cuối cùng bằng cách sử dụng uptime, nhưng tôi không muốn nó hiển thị tất cả thông tin đó. Tôi chỉ muốn biết bao nhiêu giờ trôi qua kể từ lần khởi động hệ thống cuối cùng (ví dụ: 18:17:59)

Câu trả lời:


31

Để có được thời gian trôi qua kể từ lần khởi động hệ thống cuối cùng ở hh:mm:ssđịnh dạng, bạn có thể sử dụng:

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

/proc/uptime tập tin giả chứa hai số:

  • Số đầu tiên là thời gian hệ thống đã hoạt động trong vài giây.
  • Số thứ hai là bao nhiêu thời gian mà máy đã tiêu tốn trong vài giây.

Vì vậy, bằng cách sử dụng awkbạn có thể lấy số linh sam và chuyển đổi nó ở hh:mm:ssđịnh dạng.


15

Để có được thời gian hoạt động trong vài giây:

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

Để có được thời gian hoạt động trong vài phút:

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

Để có được thời gian hoạt động trong giờ:

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

Để có x chữ số chính xác, bạn có thể thêm scale = x, ví dụ: x = 2

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

2

Hãy thử cái này:

uptime | awk '{ print $3 }'

Trong thực tế, nó in từ thứ ba của dòng được sản xuất bởi uptime.


3
Nó hoạt động. Nhưng nó không có vẻ là cách đúng đắn để làm điều đó. Điều gì sẽ xảy ra nếu từ thứ ba không phải là thời gian, ví dụ từ thứ ba của tôi là "4", vì máy của tôi đang chạy trong 4 ngày. Đây là những gì tôi nhận được: "02:00:39 lên 4 ngày, 12:54, 2 người dùng, tải trung bình: 0,03. 0,06, 0,06".
Adrian George

Oh: DI không biết về thời gian hơn 1 ngày!
Alen

Nó ok: d bây giờ bạn có một số câu trả lời cho điều này?
Adrian George

Không xin lỗi. uptimedường như không có lựa chọn nào nhưng tôi cũng không thể tìm thấy bất cứ thứ gì trên mạng.
Alen

2

Một sửa đổi nhỏ để hiển thị ngày:

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

0

Điều này sẽ định dạng đầu ra của bạn là 2 padding:

awk '{printf("%02d:%02d:%02d",int($1/3600),int($1/3600/60),int($1%60))}' /proc/uptime
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.