1

У меня есть рабочий стол Linux. Я не оставляю его включенным 24/7. Я хотел бы собрать статистику о том, сколько времени компьютер был включен каждый день, например:

2012-08-21: 7:52
2012-08-22: 8:43
2012-08-23: 7:36

Если компьютер не был включен, запись не требуется.

6 ответов6

3

Вы можете создать скрипт, который запускает uptime и выводит его в файл.

uptime >> uptime.log

После этого установите для него задание cron. Чтобы узнать больше о том, как создать задание cron: Create Cron Job

Или вы можете подписаться на онлайн-сервис, который сделает это за вас: Uptime Project

2

в соответствии с last страницей руководства:

Псевдопользовательская перезагрузка регистрируется каждый раз при перезагрузке системы. Таким образом, последняя перезагрузка покажет журнал всех перезагрузок с момента создания файла журнала.

поэтому последний столбец команды #last reboot :

#last reboot
reboot   system boot  **************** Sat Sep 21 03:31 - 08:27 (1+04:56)   
reboot   system boot  **************** Wed Aug  7 07:08 - 08:27 (46+01:19)
2

Это регистрирует вывод 'uptime' каждые пять минут. Эти выходные данные также включают число пользователей, которые в настоящее время вошли в систему и загружают средние значения вашего компьютера за последние 1, 5 и 15 минут:

sudo bash #root
mkdir /var/log/uptime
crontab -e

Добавьте эту строку:

*/5  * * * * echo `date +\%Y\%m\%d;uptime` >> /var/log/uptime/uptime.log 2>&1

И разделить +gzip журнал на еженедельные файлы:

cat <<'EOF'. > /etc/logrotate.d/uptime
/var/log/uptime/uptime.log {
    weekly
    dateext
    rotate 99999
    compress
}
EOF

Затем, по прошествии некоторого времени, просмотрите время работы каждого дня следующим образом:

uplog() { (cd /var/log/uptime/;zcat uptime.log*gz;cat uptime.log) }
uplog|cut -c1-8|uniq -c|perl -aple'$_.=" ".("=" x ($F[0]/5))'

Число 288 (12 * 24) означает, что компьютер работал весь день (хотя перезагрузки менее пяти минут могут остаться незамеченными этим методом).

Или аналогично для каждого месяца, например:

uplog|cut -c1-6|uniq -c|perl -aple'$_.=" ".("=" x ($F[0]/150))'
1

В системном журнале будут записи с метками дат (/var/log/messages *), из которых вы можете извлечь эту информацию.

Вы также можете добавить K записей в /etc/rc0.d, например, чтобы запустить logger для добавления определенной записи системного журнала при завершении работы. См. Http://www.debian-administration.org/articles/212 или эквивалент для дистрибутива Linux, который вы используете

$ vim /etc/init.d/uptime
$ cat /etc/init.d/uptime

# chkconfig: 0 99 1
# description: Record uptime at shutdown.

start() {
        uptime >> /var/log/uptime 2>&1
}

case "$1" in
  start)
        start
        ;;
  *)
        echo Usage: $0 start
        ;;
esac

$ chmod +x /etc/init.d/uptime

$ chkconfig --add uptime

$ chkconfig --list uptime
uptime          0:on    1:off   2:off   3:off   4:off   5:off   6:off

$ ls /etc/rc*d/*uptime*
/etc/rc0.d/S99uptime  /etc/rc3.d/K01uptime  /etc/rc6.d/K01uptime
/etc/rc1.d/K01uptime  /etc/rc4.d/K01uptime
/etc/rc2.d/K01uptime  /etc/rc5.d/K01uptime


$ /etc/rc0.d/S99uptime start

$ cat /var/log/uptime
 13:15:28 up 135 days, 12:06,  1 user,  load average: 0.07, 0.04, 0.01
0

Я нашел похожий вопрос по stackoverflow https://stackoverflow.com/questions/79490/linux-uptime-history . Кажется, я хочу получить лучший подтянутый, спасибо, ребята, за помощь.

http://podgorny.cz/moin/Uptimed

0

Tuptime может сделать это при выполнении «tuptime -e», например:

# tuptime -e
Startup:  1  at  08:55:01 AM 08/04/2015
Uptime:   24 seconds
Shutdown: OK  at  08:55:25 AM 08/04/2015

Downtime: 5 seconds

Startup:  2  at  08:55:31 AM 08/04/2015
Uptime:   20 seconds
Shutdown: OK  at  08:55:51 AM 08/04/2015

В зависимости от вашего региона формат даты может меняться.

С Уважением,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .