#!/bin/sh # container-tools - Manage systemd-nspawn containers # Copyright (C) 2014-2016 Daniel Baumann # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . set -e if [ -e /usr/bin/uptime.orig.procps ] then # debian UPTIME="$(/usr/bin/uptime.orig.procps)" else # standalone UPTIME="$(/usr/bin/uptime)" fi DATE_HOST="$(date +%s)" DATE_CONTAINER="$(stat -c %z /dev/pts)" DATE_CONTAINER="$(date +%s -d"${DATE_CONTAINER}")" UPTIME_CONTAINER="$((${DATE_HOST} - ${DATE_CONTAINER}))" #UPTIME_CONTAINER=${1} if [ ${UPTIME_CONTAINER} -lt 3600 ] then # container uptime << 1 hour MINUTES="$(( ${UPTIME_CONTAINER} / 60 ))" if [ "${MINUTES}" = "0" ] then MINUTES="1" fi UPTIME="$(echo "${UPTIME}" | sed -e "s| up .* days, .*:[0-9][0-9], | up ${MINUTES} min, |" \ -e "s| up .* day, .*:[0-9][0-9], | up ${MINUTES} min, |" \ -e "s| up .* min, | up ${MINUTES} min, |")" elif [ ${UPTIME_CONTAINER} -lt 86400 ] then # container uptime << 1day HOURS="$(( ${UPTIME_CONTAINER} / 3600 ))" MINUTES="$(( (${UPTIME_CONTAINER} - (${HOURS} * 3600)) / 60 ))" UPTIME="$(echo "${UPTIME}" | sed -e "s| up .* days, .*:[0-9][0-9], | up ${HOURS}:${MINUTES}, |" \ -e "s| up .* day, .*:[0-9][0-9], | up ${MINUTES} min, |")" elif [ "${UPTIME_CONTAINER}" -lt 172800 ] then # container uptime << 2 days DAYS="$(( ${UPTIME_CONTAINER} / 86400 ))" HOURS="$(( (${UPTIME_CONTAINER} - (${DAYS} * 86400)) / 3600 ))" MINUTES="$(( (${UPTIME_CONTAINER} - (${HOURS} * 3600)) / 60 ))" UPTIME="$(echo "${UPTIME}" | sed -e "s| up .* days, .*:[0-9][0-9], | up ${HOURS}:${MINUTES}, |" \ -e "s| up .* day, .*:[0-9][0-9], | up ${MINUTES} min, |")" else # container uptime >= 2 days DAYS="$(( ${UPTIME_CONTAINER} / 86400 ))" HOURS="$(( (${UPTIME_CONTAINER} - (${DAYS} * 86400)) / 3600 ))" MINUTES="$(( (${UPTIME_CONTAINER} - (${HOURS} * 3600)) / 60 ))" UPTIME="$(echo "${UPTIME}" | sed -e "s| up .* days, .*:[0-9][0-9], | up ${HOURS}:${MINUTES}, |")" fi echo D: ${UPTIME_CONTAINER} echo D: ${DAYS} days ${HOURS}:${MINUTES} echo "${UPTIME}"