Hamilton LaboratoriesHamilton C shell 2012User guideSamples

uptime.csh

Oregon Coast

uptime.csh
Previous | Next

# uptime.csh
# Copyright (c) 2010-2012 by Hamilton Laboratories. All rights reserved.

# Uptime takes no arguments (and ignores any given) and prints a simple
# message telling the days, hours, minutes and seconds the system has been
# up.  For example,
#
#     116 C% uptime
#     11 days, 19 hours, 41 minutes, 02 seconds

# This is calculated from the elapsed time for p0, the system idle
# process.

proc uptime( )
   local elapsed, days, hours, min, sec

   # This next line works like this to get hours, minutes and seconds
   # as three separate words.
   #
   #  117 C% ps -s | g Idle
   #  p0     Idle         283:49:03 2221:19:27.00     ......
   #  118 C% echo `ps -s | g Idle`:2
   #  283:49:19
   #  119 C% echo `ps -s | g Idle`:2:gs/:/ /
   #  283 49 29

   @ elapsed = `ps -s | grep Idle`:2:gs/:/ /
   @ hours = elapsed[0]
   @ min = elapsed[1]
   @ sec = elapsed[2]

   if ( hours >= 24 ) then
      @ days = hours // 24
      @ hours %= 24
      echo $days days, $hours hours, $min minutes, $sec seconds
   else
      if ( hours >= 1 ) then
         echo $hours hours, $min minutes, $sec seconds
      else
         if ( min >= 1 ) then
            echo $min minutes, $sec seconds
         else
            echo $sec seconds
         end
      end
   end
end

uptime

Previous | Next