- 1
if ps ax | grep -v grep | grep keydispatcher > /dev/null
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−123
if ps ax | grep -v grep | grep keydispatcher > /dev/null
no comments. но блин, даже "работает". т.е. без этого grep -v grep лажает, а с ним - нет (видимо потому что второй греп не успевает запуститься пока ps ax отрабатывает). однако...
bormand 18.03.2013 20:57 # 0
myaut 18.03.2013 22:27 # 0
bliznezz 01.04.2013 14:09 # 0
Dummy00001 18.03.2013 23:51 # +1
на линухе тестируешь? на солярке без `grep -v grep` на конце ни как. "ps | grep cmd" стабильно в выводе показывает сам grep. с другой стороны там есть (как и в современных линухах) pgrep.
guest 19.03.2013 00:57 # 0
и не надо grep -v :) однако красиво
Dummy00001 19.03.2013 01:14 # 0
идея хорошая, но я просто для совместимости во старым говном этого делать не буду. я уже таких кошмаров старых bourne shell насмотрелся, что просто на эксперименты не тянет.
а если делать для новых систем, то pgrep/pkill работают просто на ура - pgrep '^firefox$'. даже это мудачество хп-сукс в 11.31 завел pgrep/pkill.
Pencioner 19.03.2013 12:14 # 0
Dummy00001 19.03.2013 12:30 # 0
VseGovnoOdinYaKrut 19.03.2013 12:18 # +4
Видит в грепе грепа грепу
Взял за грепы грепа грепу
Грепа грепу, грепе — грепа
А постящий таки неосилил конвееры и параметры grep, никакой магии тут нет.
Pencioner 19.03.2013 12:35 # 0
потом вывод первого grep пропускается через второй grep
разобрался, почему оно "работает", но это сугубо зависящий от текущей реализации bash-а побочный эффект. именно - баш начинает запускать программы которые он на конвеер ставит начиная с последней. поэтому когда уже вызывается execve для 'ps ax' - у нас в списке запущенных процессов оба грепа есть, соответственно первый grep их отфильтрует...
VseGovnoOdinYaKrut 19.03.2013 13:32 # 0
Да и собственно говоря какая к чертям разница, в каком порядке он их запускает, пока ps прогрузится, все грепы уже будут в процессах отражаться.
Pencioner 19.03.2013 13:37 # 0
VseGovnoOdinYaKrut 19.03.2013 14:16 # 0
на баше рандомный результат, а на zsh всё по-порядку.
bormand 19.03.2013 15:39 # +1
Но это, тем не менее, совсем не повод пользоваться подобным поведением. Это ведь классический race condition.
Pencioner 19.03.2013 15:55 # 0
bormand 19.03.2013 16:24 # +1
P.S. ОМГ. У zsh еще и записи в выхлопе пропадают. Пару раз из 10 она выдала мне только 2 строчки из 4. Вот это поведение куда более веселое...
Pencioner 19.03.2013 19:10 # 0
VseGovnoOdinYaKrut 19.03.2013 20:09 # 0