32 lines
1.1 KiB
Ruby
Executable File
32 lines
1.1 KiB
Ruby
Executable File
# frozen_string_literal: true
|
|
|
|
class UptimeInfo
|
|
def self.gather_info
|
|
uptime_seconds = `cat /proc/uptime`.split.first.to_i
|
|
uptime_info = {}
|
|
|
|
# Calculate time components
|
|
minutes, seconds = uptime_seconds.divmod(60)
|
|
hours, minutes = minutes.divmod(60)
|
|
days, hours = hours.divmod(24)
|
|
weeks, days = days.divmod(7)
|
|
months, weeks = weeks.divmod(4)
|
|
years, months = months.divmod(12)
|
|
|
|
# Populate the hash only if the value is greater than zero
|
|
uptime_info[:years] = years if years.positive?
|
|
uptime_info[:months] = months if months.positive?
|
|
uptime_info[:weeks] = weeks if weeks.positive?
|
|
uptime_info[:days] = days if days.positive?
|
|
uptime_info[:hours] = hours if hours.positive?
|
|
uptime_info[:minutes] = minutes if minutes.positive?
|
|
uptime_info[:seconds] = seconds if seconds.positive?
|
|
|
|
# Format the uptime string
|
|
File.open('./runtime_log.log', 'w') { |f| f.puts(uptime_info.to_json) }
|
|
formatted_uptime = uptime_info.map { |k, v| "#{v} #{k.to_s.capitalize}" }.join(' : ')
|
|
|
|
{ uptime: formatted_uptime }
|
|
end
|
|
end
|