1 NOW=`date`
2 MINAGO=$((-1 + `date -d "$NOW" "+%Y%m%d%H:%M:%S" | cut -d: -f2 `))
3 MINAGO=`printf "%02i" $MINAGO`
4 MINAGO=`date -d "$NOW" "+%Y%m%d%H:%M:%S"| sed s/:.*:/$MINAGO/`
5 last -t $MINAGO
- сохранить время в СЕЙЧАС
- напечатать СЕЙЧАС как ГГГГММДДЧЧ: ММ: SS и извлечь ММ, добавить -1, сохранить в пэд MINAGO
- с нулями до длины2 (последний -t запрашивает 08 мин, а не 8), сохраните в MINAGO
- время печати от NOW и замените минутную часть на MINAGO, сохраните в MINAGO
- , вызовите последним с YYYYMMDDHHMMSS
Вам нужно будет более конкретно указать, что вы имеете в виду, показывая тем, кто вышел из системы, потому что последний показывает вам, кто вышел из системы и когда они это сделали.Если они еще не вошли в систему, они отсутствуют.Что еще нужно знать?В любом случае, можно найти реальные учетные записи в / etc / shadow и удалить из этого списка пользователей, которые все еще вошли в систему. Например:
getent shadow |sort -t: -k2,2 | awk -F: '($2 !="*") && ($2 !="!") { print $1 }'
имейте в виду, что только root может читать / etc / shadow
поцарапайте выше;
last -t $(
date -d @$(( -60 + `date +%s` )) +%Y%m%d%H%M%S
)
| grep still
например
$ last -t $( date -d @$(( -60 + `date +%s` )) +%Y%m%d%H%M%S) | grep still
* pts/4 * Sat Sep 7 02:20 still logged in
* pts/44 * Fri Sep 6 19:08 still logged in
* pts/8 * Fri Sep 6 11:26 still logged in
* pts/32 * Fri Sep 6 09:37 still logged in
* pts/60 * Wed Sep 4 08:06 still logged in
* pts/34 * Tue Sep 3 23:26 still logged in
* pts/5 * Tue Sep 3 12:38 still logged in
* pts/37 * Mon Sep 2 10:59 still logged in
* pts/46 * Sun Sep 1 21:29 still logged in