Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Вывод команды W  (Прочитано 1534 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Pit Sullivan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Вывод команды W
« : 17 Мая 2015, 13:06:14 »
Привет, сегодня у меня к вам вот такой вопрос. Всем вам наверняка знакома команда W, которая позволяет узнать, кто из пользователей вошёл в систему, и чем он в настоящий момент занимается. Вот так выглядит вывод этой команды на моей машине:
$ w
 09:54:37 up 16 days,1:49, 3 users, load average: 0,37, 0,33, 0,39
USER    TTY     FROM     LOGIN@   IDLE   JCPU    PCPU     WHAT
mint    :0       :0     30апр.15  ?xdm?  12:47m  5.54s init --user
mint   pts/12    :0      09:25    5.00s  0.13s   0.01s      w
В связи с этим, у меня к вам есть несколько вопросов:
  • В заголовке сказано, что в настоящий момент в системе присутствуют три пользователя, но ниже лишь две записи. Почему?
  • Как вычисляется load average?
  • Что конкретно означает поле IDLE (и, в частности, что значит выражение ?xdm? в первой записи)?
  • Что конкретно означает поле WHAT?
В частности, для поля IDLE на stackexchange нашёл вот такое определение: IDLE time obviously means that a certain amount of time has passed since a user was last active on the console (количество времени, прошедшее с тех пор, как пользователь в последний раз был активен в консоли). Если воспользоваться этим определением, то становится непонятно, почему для второй записи значение поля IDLE равно 5 секундам? Более того, оно постоянно изменяется (в диапазоне от 0 до 7 секунд), даже если вы запустите скрипт, вызывающий команду W несколько раз.
Ах, да, чуть не забыл. Что значит выражение :0?

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Вывод команды W
« Ответ #1 : 17 Мая 2015, 13:24:10 »
А посмотреть в man w?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Pit Sullivan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Вывод команды W
« Ответ #2 : 17 Мая 2015, 13:27:38 »
Azure, а Вы думаете, появись у меня вопрос, я сразу бегу на форум?

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Вывод команды W
« Ответ #3 : 17 Мая 2015, 13:38:23 »
Pit Sullivan,
Цитата: man w
DESCRIPTION
       w  displays  information  about  the  users  currently on the machine, and their processes.  The header
       shows, in this order, the current time, how long the system has been running, how many users  are  cur‐
       rently logged on, and the system load averages for the past 1, 5, and 15 minutes(2).

       The  following  entries  are  displayed for each user: login name, the tty name, the remote host(5), login
       time, idle time, JCPU, PCPU, and the command line of their current process (4).

       The JCPU time is the time used by all processes attached to the tty.  It does not  include  past  back‐
       ground jobs, but does include currently running background jobs.

       The PCPU time is the time used by the current process, named in the "what" field.
Или задавайте вопросы более корректно.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

symon2014

  • Гость
Re: Вывод команды W
« Ответ #4 : 17 Мая 2015, 13:42:27 »
Здесь по русски

Оффлайн Pit Sullivan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Вывод команды W
« Ответ #5 : 17 Мая 2015, 13:52:58 »
Ребята, это всё читано-перечитано не один раз. Пожалуйста, прочтите внимательно мои вопросы и постарайтесь ответить на каждый из них своими словами. Спасибо!
« Последнее редактирование: 17 Мая 2015, 13:55:15 от Pit Sullivan »

symon2014

  • Гость
Re: Вывод команды W
« Ответ #6 : 17 Мая 2015, 14:16:29 »
Прочитать мало, надо увидеть прочитанное.
Ответы 2 - среднее время загрузки системы за последние 1, 5 и 15 минут.(как считает не знаю).
       4 - название телодвижений(процессов)
       1 - вот я один, а комп в глаза врет что двое( может консоль себя за человека считает).
       3 - точно не скажу, потому что репу стал чесать наблюдая за темой, но похоже на точки отсчета и интервалы захода в терминал.

Оффлайн Pit Sullivan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Вывод команды W
« Ответ #7 : 17 Мая 2015, 15:00:22 »
symon2014, у Вас тоже текущий процесс для первого пользователя - это init? Почему я интересуюсь: вроде бы всё логично, родительский процесс, но меня ввели в заблуждения многочисленные примеры вывода этой команды, найденные на различных ресурсах. К слову, init-процесса я пока больше ни у кого не обнаружил, хотя и не искал целенаправленно.
Кстати, я ввёл вас в заблуждение, когда сказал, что, если запустить скрипт с командой w в цикле, значение в поле IDLE будет изменяться хаотично, но в пределах указанного диапазона. На самом деле это не так, значение изменяется линейно (увеличивается).
Что касается второго вопроса, мне как раз стало интересно, как именно происходит расчёт. Ну да ладно, ещё поищу.
Наконец, что значит :0? Почему не ttyN, к примеру?
Благодарю за помощь!
UPD: Вот что я обнаружил. Если вводить команду W вручную, значение в поле IDLE изменяется линейно и обнуляется каждые 7 секунд. Можно даже попытаться предсказать следующее значение после очередного ввода команды, отсчитав количество прошедших с момента последнего ввода команды секунд, взятое по модулю 8. Так что, похоже, это действительно время бездействия пользователя, правда, этот трюк с 7 секундами мне пока непонятен.
« Последнее редактирование: 17 Мая 2015, 15:28:49 от Pit Sullivan »

symon2014

  • Гость
Re: Вывод команды W
« Ответ #8 : 17 Мая 2015, 15:09:31 »
Сравни, у меня это по другому(tty7 - х сессия)
(Нажмите, чтобы показать/скрыть)

Оффлайн Pit Sullivan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Вывод команды W
« Ответ #9 : 17 Мая 2015, 16:00:06 »
symon2014, у Вас 2 пользователя в заголовке и две записи в таблице пользователей. У меня - 3 пользователя и две записи. Теперь попробуйте переключиться в консоль, войти под своим именем и ввести команду W. Сколько пользователей после этого стало указано в заголовке? Сколько записей теперь находится в таблице пользователей? Затем завершите сеанс в консоли, переключитесь в GUI и введите в терминале команду W. Сколко теперь Вы видите пользователей в заголовке и записей в таблице?

symon2014

  • Гость
Re: Вывод команды W
« Ответ #10 : 17 Мая 2015, 16:25:16 »
(Нажмите, чтобы показать/скрыть)
Заходил в 1 и 2 консоль, каждая желает отметиться как пользователь.
Теперь вы поробуйте перезагрузиться нормально(в графику), сразу войдите в терминал и выполните команду W. Думаю будет 2 пользователя.

Оффлайн Pit Sullivan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Вывод команды W
« Ответ #11 : 17 Мая 2015, 16:43:41 »
symon2014, так и есть. Скорее всего, W вызывает команду uptime для получения заголовка, а та, возможно, несовсем корректно работает с файлом utmp. Предположу, что uptime просто подсчитывает количество utmp-структур, не проверяя значение поля ut_type на равенство USER_PROCESS. Кстати, я нашёл несколько интересных статей о том, что такое load average и как оно расчитывается. Оставлю здесь ссылку на одну из статей (другие ссылки будут в самой статье), вдруг кому-нибудь интересно.
(Нажмите, чтобы показать/скрыть)

symon2014

  • Гость
Re: Вывод команды W
« Ответ #12 : 17 Мая 2015, 16:55:47 »
Pit Sullivan,
Спасибо за совет, но я эту команду только здесь увидел, и отвечал по ходу дела через поиск форума и чесав репу от скуки, так-что я лично сейчас лучше чайку заварю. Но согласен, может кому и пригодится.

« Последнее редактирование: 20 Июня 2019, 06:14:11 от zg_nico »

 

Страница сгенерирована за 0.066 секунд. Запросов: 23.