Bash: Как мне остановить bash от бессмысленной записи миллионов строк в консоль, как только она началась? - PullRequest
0 голосов
/ 02 августа 2011

Я делаю это слишком часто, это немного стыдно.Независимо от того, возможно, мы можем положить конец этому раз и навсегда?Я просто нашел файл журнала для загадочного IP-адреса, который, по-видимому, находится в каждой строке (оказывается, это IP-адрес для самого сервера! Загадка раскрыта)Оказывается, в этом файле миллионы строк.На самом деле я только что проверил, и это все еще идет.

Есть ли способ остановить это безумие?

Ответы [ 4 ]

2 голосов
/ 02 августа 2011

почему бы вам не передать результат больше ... таким образом, результаты будут разбиты на страницы, и вы можете выйти, нажав CTRL + C.

ваша команда будет cat someFile.log | grep someIP | more

1 голос
/ 02 августа 2011

Как уже говорили другие, используйте CTRL + C для прерывания.Если по какой-либо причине это не работает для вас, откройте другой терминал или сеанс консоли в том же окне и введите следующую команду:

ps -o pid=,args= -C grep

В этом списке будет отображаться идентификатор процесса (PID), если каждый из них работает в данный момент grep команда.Найдите тот, который соответствует тому, который вы хотите убить, и затем последовательно выполните следующие команды, проверяя после каждого, завершился ли процесс.

kill -INT $PID
kill -TERM $PID
kill -QUIT $PID
kill -SEGV $PID
kill -KILL $PID

Где $PID - идентификатор процесса, который вы определили выше.

Обратите внимание, что -C является расширением GNU ps и может не поддерживаться другими реализациями ps.Если это так, то может потребоваться что-то вроде следующего:

ps -o pid= -o comm= -o args= | awk '$2~/grep/{print $1, $3}'

Что по сути то же самое.

1 голос
/ 02 августа 2011

Просто нажмите Ctrl-C (с фокусом клавиатуры в соответствующем терминале), чтобы завершить процесс.Закрытие терминала тоже работает, но не так чисто.

0 голосов
/ 02 августа 2011

CTRL + C должно сработать. Он отправляет SIGINT в процесс.

...