[sisyphus] coreutils, who )
Anton Farygin
=?iso-8859-1?q?rider_=CE=C1_altlinux=2Ecom?=
Вт Май 16 21:19:45 MSD 2006
Dmitry V. Levin wrote:
> On Tue, May 16, 2006 at 06:01:44PM +0400, Anton Farygin wrote:
>> Dmitry V. Levin wrote:
>>> On Tue, May 16, 2006 at 12:13:56PM +0400, Anton Farygin wrote:
>>>> Это обсуждение надо переносить в bugzilla, ибо почему-то мантейнер
>>>> coreutils его пропускает.
>>> Можно с самого начала и сразу в деталях?
>> С самого начала:
>>
>> в пакете powersave лежит утилита
>> /usr/lib/powersave/wttyhx, которая детектит где и кем юзаются иксы.
>>
>> До определённого момента она выводила пользователя и терминала. После
>> определённой версии coreutils - стала выводить
>> #/usr/lib/powersave/wttyhx -a
>> root :0
>>
>> т.е. - всегда рута
>>
>> алгоритм там простой:
>> getuserfromwho() {
>> while read NAME DISP REST; do
>> test "$1" = "$DISP" && break
>> done < <(who)
>> echo "${NAME:--}"
>> }
>>
>> Т.е. - who из coreutils перестал предоставлять информацию о том, кто и
>> где запустил иксы.
>>
>> Артём сравнил вывод от двух разных версий coreutils:
>> [user на sol src]$ ./who
>> root tty1 2006-05-09 18:36 (localhost)
>> user tty2 2006-05-15 15:40 (localhost)
>> user :0 2006-05-15 15:36
>> root ??? 2006-05-09 20:07 (localhost)
>> user pts/3 2006-05-15 16:53 (:0.0)
>> user pts/5 2006-05-15 17:04 (:0.0)
>> user pts/12 2006-05-10 20:05 (:0.0)
>>
>> Новые ver 5.94
>> [user на sol src]$ who
>> root tty1 2006-05-09 18:36 (localhost)
>> user tty2 2006-05-15 15:40 (localhost)
>> user pts/3 2006-05-15 16:53 (:0.0)
>> user pts/5 2006-05-15 17:04 (:0.0)
>>
>> В первом случае wttyhx работает, во втором - нет
>
> Может, who раньше работал неправильно, а сейчас -- правильно?
> Может, wttyhx полагается на неправильное поведение who?
> Что это за wttyhx и как оно работает?
wttyhx:
$ rpm -qf /usr/lib/powersave/wttyhx
powersave-0.12.11-alt2
$ /usr/lib/powersave/wttyhx --help
usage: /usr/lib/powersave/wttyhx [-h] [-q] [-t]
-a: print all users that run a X server and the display numbers
-h: print a help message
-q: be quiet, dont print any output
-t: print a table of pids and vts of all running X server
-v: print tty, user, display and version of X
-3: also return 1 if XF86version is 3
-4: also return 1 if XF86version is 4
-a, -q, -t and -v are mutually exclusive
Как работает - я показал выше. Это обычный скрипт на bash.
вообще у меня есть подозрение что мы носили с собой патч на coreutils,
изменяющий поведение who. Но я могу и ошибаться.
Rgds,
Rider
Подробная информация о списке рассылки Sisyphus