Hello,
for a shell script I needed the uptime in seconds. I came up with the
following. I'm just wondering, is there an one-liner that does the same
thing?
# Inspired by https://unix.stackexchange.com/a/270454
uptime=`ps -o etime= -p 1`
uptd=`echo $uptime | grep '-' | awk -F "-" '{print $1}'`
if [ "$uptd" == "" ]
then
upth=`echo $uptime | awk -F ":" '{print $1}'`
uptm=`echo $uptime | awk -F ":" '{print $2}'`
upts=`echo $uptime | awk -F ":" '{print $3}'`
if [ "$upts" == "" ]
then
upts=$uptm
uptm=$upth
upth=0
fi
uptimeseconds=$((10#$upts + 10#$uptm * 60 + 10#$upth * 3600))
else
upth=`echo $uptime | awk -F "-" '{print $2}' | awk -F ":" '{print $1}'`
uptm=`echo $uptime | awk -F "-" '{print $2}' | awk -F ":" '{print $2}'`
upts=`echo $uptime | awk -F "-" '{print $2}' | awk -F ":" '{print $3}'`
uptimeseconds=$((10#$upts + 10#$uptm * 60 + 10#$upth * 3600 + $uptd
* 86400))
fi
echo $uptimeseconds