Команда last

Команда last позволяет задействовать одноименную утилиту, предназначенную для получения информации о пользовательских сессиях. Утилита читает файл журнала /var/log/wtmp и выводит информацию об инициировавших создание сессий пользователях, продолжительности этих сессий, используемых для работы терминалах, а также некоторые другие менее важные подробности. Она может оказаться крайне полезной в случаях несанкционированного доступа к вашей системе.

Базовый синтаксис команды выглядит следующим образом:

$ last [параметры] [имя-пользователя] [имя-терминала]

Утилита поддерживает ряд параметров, причем многие из этих параметров предназначены для форматирования вывода. Наиболее важными параметрами являются произвольный числовой параметр, устанавливающий количество строк для вывода, параметры -s и -t, позволяющие выводить информацию о пользовательских сессиях за заданный интервал времени, параметр -d для вывода адресов систем, с которых были инициированы уделенные сессии, а также параметр -p, позволяющий вывести информацию о пользователях, работавших с системой в заданное время сегодня.

Утилита использует имя псевдопользователя reboot для вывода информации о работе системы без вошедших в систему пользователей. Что касается времени, то утилита поддерживает специальные идентификаторы now для указания на текущее время, today и yesterday для указания на сегодняшний и предыдущий дни, а также следующие форматы меток времени:

  • ГГГГММДДччммсс
  • ГГГГ-ММ-ДД чч:мм:сс
  • ГГГГ-ММ-ДД чч:мм (предполагается 00 с)
  • ГГГГ-ММ-ДД (предполагается время 00:00:00)
  • чч:мм:сс (предполагается текущий день)
  • чч:мм (предполагается текущий день, 00 с)
  • now (текущее время)
  • yesterday (вчера в 00:00:00)
  • today (сегодня в 00:00:00)
  • tomorrow (завтра в 00:00:00)
  • +/-Xsec/min/hours/days/months/years (через/за 5 секунд, минут, часов, дней, месяцев, лет)

Примеры использования

Вывод информации о последних пользовательских сессиях

Для вывода информации о последних пользовательских сессиях достаточно использовать утилиту без каких-либо дополнительных параметров за исключением параметра для ограничения количества выводимых строк:

$ last -10
alex tty2 tty2 Mon Mar 23 12:11 still logged in
reboot system boot 5.3.0-42-generic Mon Mar 23 12:08 still running
alex tty2 tty2 Sun Mar 22 20:31 - down (07:32)
reboot system boot 5.3.0-42-generic Sun Mar 22 20:22 - 04:04 (07:41)
reboot system boot 5.3.0-42-generic Sat Mar 21 23:20 - 23:24 (00:04)
alex tty2 tty2 Sat Mar 21 15:12 - down (08:06)
reboot system boot 5.3.0-42-generic Sat Mar 21 15:10 - 23:19 (08:09)
alex tty2 tty2 Fri Mar 20 16:40 - down (14:14)
reboot system boot 5.3.0-42-generic Fri Mar 20 16:37 - 06:54 (14:16)
alex tty2 tty2 Thu Mar 19 22:57 - down (01:09)

В результате будет выведена информация о последних пользовательских сессиях.

Вывод информации о сессиях за выбранное время

Для указания интервала времени, пользовательские сессии из которого вас интересуют, следует использовать параметры -s и -t. Например, посмотрим информацию о пользовательских сессиях за неделю (от 7 дней назад до текущего момента):

$ last -s-7days -tnow
alex tty2 tty2 Mon Mar 23 12:11 still logged in
reboot system boot 5.3.0-42-generic Mon Mar 23 12:08 still running
alex tty2 tty2 Sun Mar 22 20:31 - down (07:32)
reboot system boot 5.3.0-42-generic Sun Mar 22 20:22 - 04:04 (07:41)
reboot system boot 5.3.0-42-generic Sat Mar 21 23:20 - 23:24 (00:04)
alex tty2 tty2 Sat Mar 21 15:12 - down (08:06)
reboot system boot 5.3.0-42-generic Sat Mar 21 15:10 - 23:19 (08:09)
alex tty2 tty2 Fri Mar 20 16:40 - down (14:14)
reboot system boot 5.3.0-42-generic Fri Mar 20 16:37 - 06:54 (14:16)
alex tty2 tty2 Thu Mar 19 22:57 - down (01:09)
reboot system boot 5.3.0-42-generic Thu Mar 19 22:55 - 00:07 (01:12)
alex tty2 tty2 Thu Mar 19 17:00 - down (04:26)
reboot system boot 5.3.0-42-generic Thu Mar 19 16:57 - 21:27 (04:30)
alex tty2 tty2 Wed Mar 18 16:57 - down (06:58)
reboot system boot 5.3.0-42-generic Wed Mar 18 16:50 - 23:56 (07:05)
alex tty2 tty2 Tue Mar 17 23:34 - down (00:04)
reboot system boot 5.3.0-42-generic Tue Mar 17 23:32 - 23:39 (00:06)
alex tty2 tty2 Tue Mar 17 17:56 - down (05:34)
reboot system boot 5.3.0-40-generic Tue Mar 17 17:53 - 23:30 (05:37)

В результате будет выведена информация за неделю.

В случае необходимости указания точных дат и времени тоже сложно ошибиться:

$ last -s 2020-03-21 -t 2020-03-23
alex tty2 tty2 Sun Mar 22 20:31 gone - no logout
reboot system boot 5.3.0-42-generic Sun Mar 22 20:22 still running
reboot system boot 5.3.0-42-generic Sat Mar 21 23:20 - 23:24 (00:04)
alex tty2 tty2 Sat Mar 21 15:12 - down (08:06)
reboot system boot 5.3.0-42-generic Sat Mar 21 15:10 - 23:19 (08:09)

wtmp begins Tue Jan 28 01:20:24 2020

Здесь стоит помнить о том, что утилита не всегда корректно обрабатывает время, поэтому стоит ограничиваться датами. Также утилита выводит информацию о первой записи в файле журнала.