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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: проблема с ps aux  (Прочитано 4757 раз)

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

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: проблема с ps aux
« Ответ #30 : 04 Мая 2013, 22:49:59 »
Кстати, да, конвейеры здесь не нужны.
SCREEN идёт в верхнем регистре.
Код: (bash) [Выделить]
pgrep -fU "$USER" "SCREEN.*minecraft"И раз уж ТС вздумалось искать PID, то чтобы не городить очередного конвейера, имеет смысл сразу почитать
man pkill
« Последнее редактирование: 05 Мая 2013, 04:14:07 от ArcFi »

Оффлайн Self-Perfection

  • Активист
  • *
  • Сообщений: 331
  • Arch linux, KDE
    • Просмотр профиля
Re: проблема с ps aux
« Ответ #31 : 05 Мая 2013, 01:20:12 »
Замечание про регистр правильное, но в моей команде есть ещё одна ошибка. Иллюстрация:
$ ps uax --forest |grep -iC 2 screen
self     23346  0.0  0.0   7952  2980 pts/1    Ss   май04   0:00  \_ /bin/bash
self     21533  0.0  0.0   6348  1204 pts/1    R+   00:54   0:00  |   \_ ps uax --forest
self     21534  0.0  0.0   6232   976 pts/1    S+   00:54   0:00  |   \_ grep --color=auto -iC 2 screen
self     21527  0.5  0.0   7996  2860 pts/3    Ss   00:54   0:00  \_ /bin/bash
self     21530  0.0  0.0   6472   864 pts/3    S+   00:54   0:00      \_ screen top
root     21531  0.0  0.0   8920  3532 ?        Ss   00:54   0:00          \_ SCREEN top
self     21532  0.0  0.0   6732  1352 pts/4    Ss+  00:54   0:00              \_ top
self     24421  0.0  1.1 277756 42344 ?        Sl   май04   0:01 kdeinit4: kmix [kdeinit] -session 10afe8d5d4000135930039600000

master процесс скрина работает с Effective User ID 0, поэтому нужно фильтровать по Real User ID. Т.е. параметром -U
Код: (bash) [Выделить]
pgrep -fU "$USER" "SCREEN.*minecraft"
И ещё

...
ps aux | grep -v grep | grep -i `whoami` | grep -i screen | grep -i minecraft | awk '{print $2}'

minecraft - имя screen''a

так я получаю pid, запущенного в screen, нужного процесса  текущего пользователя
...

Zeka13, обратите внимание, что как с вашей командой, так и с тем, что мы вам предложили взамен, определяется не PID майнкрафта, а PID master процесса скрина, который является для него родительским. Опять-таки см. иллюстрацию выше.
Читайте документацию, наставницу вашу!
Памятка по описанию проблем:
Для решения [такой-то задачи] делаю [такие-то действия], но вместо [ожидаемый результат] получаю [описание отличий].

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: проблема с ps aux
« Ответ #32 : 05 Мая 2013, 02:08:12 »
Self-Perfection,
self символ мало, надо 10.
Wars ~.o

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: проблема с ps aux
« Ответ #33 : 05 Мая 2013, 02:23:23 »
и что будет с пользователем mine!?
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: проблема с ps aux
« Ответ #34 : 05 Мая 2013, 02:31:16 »
Zeka13,
ps axo "%U %p %c %U" | grep -v grep | grep -i `whoami` | grep -i screen | grep -i minecraft | awk '{print $2}' можно длинее.
Wars ~.o

Оффлайн Self-Perfection

  • Активист
  • *
  • Сообщений: 331
  • Arch linux, KDE
    • Просмотр профиля
Re: проблема с ps aux
« Ответ #35 : 05 Мая 2013, 03:14:43 »
и что будет с пользователем mine!?
Подсказка
Код: (bash) [Выделить]
echo 'zeka       3224  0.0  0.0  28384  1684 ?        Ss   00:59   0:00 SCREEN -dmS minecraft java -Xincgc -Xmx1275M -jar craftbukkit-1.3.2-R2.0.jar'|grep -i mine
Читайте документацию, наставницу вашу!
Памятка по описанию проблем:
Для решения [такой-то задачи] делаю [такие-то действия], но вместо [ожидаемый результат] получаю [описание отличий].

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: проблема с ps aux
« Ответ #36 : 06 Мая 2013, 12:20:03 »
и что будет с пользователем mine!?
Подсказка
Код: (bash) [Выделить]
echo 'zeka       3224  0.0  0.0  28384  1684 ?        Ss   00:59   0:00 SCREEN -dmS minecraft java -Xincgc -Xmx1275M -jar craftbukkit-1.3.2-R2.0.jar'|grep -i mine

я проверил и с пользователем mine всё хорошо
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн Self-Perfection

  • Активист
  • *
  • Сообщений: 331
  • Arch linux, KDE
    • Просмотр профиля
Re: проблема с ps aux
« Ответ #37 : 06 Мая 2013, 13:02:45 »
...
я проверил и с пользователем mine всё хорошо

С пользователем mine всё плохо, потому что для него не работает фильтрация по имени пользователя grep -i `who`

Смотрим внимательно на пример в предыдущем комменте. Процесс там запущен пользоваталем zeka, но grep -i mine выберет эту строку по слову minecraft. И в итоге для пользователя mine может быть найден PID процесса, запущенного zeka.

А из-за grep -v grep    PID процесса майнкрафта для пользователя greppy никогда не будет определён.

А допустим у вас есть пользователь minecraftguru и вы таки заставили ps выводить имя пользователя полностью независимо от длины. Ваша команда выдаст PID всех его процессов, запущенных под screen, а не только процесса майнкрафта.

Короче не делайте ps|grep в скриптах никогда, не разводите энтропию.
Читайте документацию, наставницу вашу!
Памятка по описанию проблем:
Для решения [такой-то задачи] делаю [такие-то действия], но вместо [ожидаемый результат] получаю [описание отличий].

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: проблема с ps aux
« Ответ #38 : 06 Мая 2013, 18:32:17 »
...
я проверил и с пользователем mine всё хорошо

С пользователем mine всё плохо, потому что для него не работает фильтрация по имени пользователя grep -i `who`

Смотрим внимательно на пример в предыдущем комменте. Процесс там запущен пользоваталем zeka, но grep -i mine выберет эту строку по слову minecraft. И в итоге для пользователя mine может быть найден PID процесса, запущенного zeka.

А из-за grep -v grep    PID процесса майнкрафта для пользователя greppy никогда не будет определён.

А допустим у вас есть пользователь minecraftguru и вы таки заставили ps выводить имя пользователя полностью независимо от длины. Ваша команда выдаст PID всех его процессов, запущенных под screen, а не только процесса майнкрафта.

Короче не делайте ps|grep в скриптах никогда, не разводите энтропию.

в так называемом grep -i `who` я давно получаю id пользователя, а не его имя

кроме того команда не выведет мне "PID всех его процессов, запущенных под screen", а только PID screen под названием minecraft!

про пользователя greppy согласен, просто не буду такого заводить.

хочу и буду пользоваться тем, чем мне вздумается, потому что так всё отлично работает
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн Self-Perfection

  • Активист
  • *
  • Сообщений: 331
  • Arch linux, KDE
    • Просмотр профиля
Re: проблема с ps aux
« Ответ #39 : 06 Мая 2013, 18:57:51 »
...потому что так всё отлично работает
Покажите мне текущий вариант команды и я придумаю ещё один сценарий, в котором она поведёт себя неожиданно. На спор.
Читайте документацию, наставницу вашу!
Памятка по описанию проблем:
Для решения [такой-то задачи] делаю [такие-то действия], но вместо [ожидаемый результат] получаю [описание отличий].

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: проблема с ps aux
« Ответ #40 : 06 Мая 2013, 18:59:42 »
...потому что так всё отлично работает
Покажите мне текущий вариант команды и я придумаю ещё один сценарий, в котором она поведёт себя неожиданно. На спор.

не стоит делать за меня мою работу, спасибо за участие
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

 

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