Автор Тема: Молчание who & w  (Прочитано 3748 раз)

Оффлайн karp

  • Давно тут
  • **
  • Сообщений: 65
Молчание who & w
« : 03.03.2020 08:32:05 »
На днях обратил внимание, что утилиты w и who, которые согласно документации должны "Show who is logged on and what they are doing" по факту не работают. Список активных пользователей показывается только в том случае, если пользователи используют "настоящий" терминал (xterm, например). Если же они просто зарегистрировались в графической оболочке (проверено на KDE5 и Xfce) и даже запустили там что-то в т.ч. местный эмулятор терминала, то информации о таких пользователях в выводе w и who нет.

Можно найти активных пользователей, анализируя вывод ps, но надо убирать дубликаты, неодушевлённых пользователей и т.п. -- а это уже не одна простая команда, а целая цепочка или скрипт.

Есть ли какая-то альтернатива? Особенно интересует вариант для SysVinit, для systemd мне посоветовали loginctl list-sessions, но проверить пока не на чем.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: Молчание who & w
« Ответ #1 : 03.03.2020 08:36:36 »
https://lists.altlinux.org/pipermail/community/2020-February/687881.html
И там дальше, и с переходом темы на март (пока одно сообщение).

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Молчание who & w
« Ответ #2 : 03.03.2020 12:29:15 »
Если же они просто зарегистрировались в графической оболочке (проверено на KDE5 и Xfce) и даже запустили там что-то в т.ч. местный эмулятор терминала, то информации о таких пользователях в выводе w и who нет.
...
Есть ли какая-то альтернатива? Особенно интересует вариант для SysVinit,

Хм-м...

Установленный alt-p9-xfce-sysv-20191020-x86_64.iso
# ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 мар  3 01:04 /proc/1/exe -> /sbin/init
# xfce4-about -V
xfce4-about 4.14.1 (Xfce 4.14)
# xfce4-terminal -V
xfce4-terminal 0.8.8 (Xfce 4.14)
Установка пакетов systemd блокируется в системе.


# w
 11:29:57 up 13:25,  4 users,  load average: 0,07, 0,24, 0,24
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
user1    tty2      Пн22   12:54m  0.05s  0.05s -bash
user1    tty7      Пн22   13:25m  6:03   0.62s xfce4-session
root     pts/1     Пн22   11:16m  0.47s  0.43s -bash
root     pts/2     Пн22    3.00s  0.27s  0.01s w
# who
user1    tty2         2020-03-02 22:35 (localhost)
user1    tty7         2020-03-02 22:05 (:0)
root     pts/1        2020-03-02 22:26 (localhost)
root     pts/2        2020-03-02 22:29 (localhost)


# grep -r user2 /var/log/auth/secure | grep -i session | head -n 1
2020-03-03T11:30:33.233691+03:00 comp gdm-binary[6646]: pam_tcb(gdm:session): Session opened for user2 by (uid=0)

# w
 11:31:29 up 13:27,  5 users,  load average: 0,28, 0,27, 0,25
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
user1    tty2      Пн22   12:55m  0.05s  0.05s -bash
user1    tty7      Пн22   13:26m  6:04   0.62s xfce4-session
root     pts/1     Пн22   11:17m  0.47s  0.43s -bash
root     pts/2     Пн22    0.00s  0.27s  0.01s w
user2   tty8      11:30   13:26m  1.19s  0.28s xfce4-session
# who
user1    tty2         2020-03-02 22:35 (localhost)
user1    tty7         2020-03-02 22:05 (:0)
root     pts/1        2020-03-02 22:26 (localhost)
root     pts/2        2020-03-02 22:29 (localhost)
user2    tty8         2020-03-03 11:30 (:20)

/dev/tty* - Сессия в виртуальной консоли; то же что например и Ctrl+Alt+F2
/dev/pts/* - Сессия в X-терминале


# su --login user2
# tail -n 1 /var/log/auth/secure
2020-03-03T13:11:02.099816+03:00 comp su[8333]: pam_tcb(su:session): Session opened for user2 by user1(uid=0)
# w
 13:12:55 up 15:08,  6 users,  load average: 0,11, 0,15, 0,17
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
user1    tty2      Пн22   14:37m   0.05s  0.05s -bash
user1    tty7      Пн22   15:08m   8:58   0.69s xfce4-session
root     pts/1     Пн22    7.00s   0.49s  0.01s w
user2    pts/2     13:11    1:35   0.51s  0.06s -bash
user2    tty8      11:30   15:08m  2.81s  0.30s xfce4-session
user1    pts/6     12:22   21:35   0.04s  0.04s bash


Понимать это нужно буквально:

# man who | sed -n '2,5p'

NAME
       who - show who is logged on

who - Показать кто залогинился

# man w | sed -n '2,5p'

NAME
       w - Show who is logged on and what they are doing.

w - Показать, кто залогинился и что они делают

Хотя описание более правильным было бы:
w - Show who is logged in and what it does
w - Показать, кто вошел в систему и что это делает



Команда в системе не с journald, покажет количество залогиваний
# grep 'Session opened' /var/log/auth/secure | wc -l
18
Без 'wc -l' покажет, кто, кем, когда, с какими правами и через что был логин в системе.

Команда в системе не с journald, покажет, сколько залогиваний было через дисплей менеджер gdm2.20
# grep 'Session opened' /var/log/auth/secure | grep gdm-binary | wc -l
3
Без 'wc -l' отобразит, кто и когда.


Классические Unix (в отличие от новомодных) делают то что и обязаны.
« Последнее редактирование: 03.03.2020 15:12:21 от Speccyfighter »

Оффлайн karp

  • Давно тут
  • **
  • Сообщений: 65
Re: Молчание who & w
« Ответ #3 : 19.12.2020 15:51:37 »
Я какой-то костыль для себя придумал и отвлёкся. А тут оказывается такой развёрнутый ответ случился. Спасибо! Что-то знал, что-то новое узнал.

Универсального решения пока придумать не смог. Вообще-то задача может быть сформулирована так: на компьютере пользователи что-то считают, иногда достаточно долго; иногда надо заняться обновлением системы, но не хочется прерывать задачи, и надо выяснить кто и что делает. w и who совсем не помогают:

# ps aux | grep /bin/bash
karp      101202  0.0  0.0   5176  2708 pts/9    S+   11:02   0:00 /bin/bash /home/karp/bin/vals-get
tanya     276236  0.0  0.0   5524  1544 pts/6    Ss+  авг07   0:00 /bin/bash
tanya     588266  0.0  0.0   5176  1096 pts/8    S+   окт22   0:00 /bin/bash /usr/local/bin/sac.102.0
karp     1219071  0.0  0.0   3700  2720 ?        SNs  12:43   0:00 /bin/bash /home/karp/bin/get_data /home/karp/etc/VALR.conf
karp     1219103  0.0  0.0   4536  2288 pts/10   S+   12:43   0:00 grep --color=auto /bin/bash
tanya    4057415  0.0  0.0   5524  1612 pts/8    Ss   сен30   0:00 /bin/bash

При этом:
# w
 12:44:37 up 135 days, 27 min,  2 users,  load average: 1,37, 1,07, 1,06
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
karp     pts/10    12:18    2.00s  0.09s  0.01s w
# who
karp                  2020-08-06 12:37
karp     pts/10       2020-12-19 12:18 (10.8.0.6)

Пользователь tanya везде отсутствует.

# grep 'Session opened' /var/log/auth/secure | grep gdm-binary
пусто
# grep 'Session opened' /var/log/auth/secure | grep tanya
тоже пусто

А у Тани не один день что-то считается, и перезагрузка компьютера (при обновлении ядра, например) это всё оборвёт. Вот и приходится и там посмотреть, и там, а ещё лучше позвонить и спросить. Но это, когда Тань не очень много... ;-)


Оффлайн aleksey-v.

  • Завсегдатай
  • *
  • Сообщений: 347
Re: Молчание who & w
« Ответ #4 : 19.12.2020 22:45:42 »
Проблема наблюдается только в KDE и Xfce?

В MATE и w, и who, и loginctl отображают пользователей даже без запущенных xterm или MATE Terminal.
/usr/bin/mate-session

То же и в GNOME, проверил на CentOS.
/usr/libexec/gdm-x-session

Оффлайн karp

  • Давно тут
  • **
  • Сообщений: 65
Re: Молчание who & w
« Ответ #5 : 19.12.2020 23:23:35 »
Проблема наблюдается только в KDE и Xfce?

У меня на этом компе другог нет. Спасибо за наводку, попробую проверить на других. Но заводить переезд в другую оболочку очень не хочется...
« Последнее редактирование: 20.12.2020 13:34:38 от karp »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Молчание who & w
« Ответ #6 : 21.12.2020 11:01:18 »
Проблема наблюдается только в KDE и Xfce?

В MATE и w, и who, и loginctl отображают пользователей даже без запущенных xterm или MATE Terminal.
/usr/bin/mate-session

То же и в GNOME, проверил на CentOS.
/usr/libexec/gdm-x-session
У меня и в Альт Образование 9 (KDE) всё отлично работает.
Андрей Черепанов (cas@)