Задать вопрос
@NIKA_R

Как найти имя процесса НЕ содержащее в названии заданную строку при помощи bash?

Задача тривиальная, решение скорее всего элементарно.
У меня есть скрипт
ps -ef | grep '^user1' | grep 'bash'
Так можно найти все процессы bash запущенные пользователем user1 ...
А как быть, если нам нужны имена процессов с именем НЕ содержащим в названии подстроку?
Про if и ! знаю, но кажется есть более простое решение .

user1 9623 6518 0 03:16 pts/4 00:00:00 user1 -ef
user1 9624 6528 0 03:16 pts/4 00:00:00 rd_user1_2 -ef
user1 9625 6531 0 03:16 pts/4 00:00:00 ubuntuuser1tester --enable-crashpad
Нужно исключать такие строки вывода....
Но оставить
user1 9623 6518 0 03:16 pts/4 00:00:00 ps -ef
user1 9624 6528 0 03:16 pts/4 00:00:00 rd_admin --enable
и.т.д.
Если grep -v user1 не выводятся нужные строки....
ps -ef | grep '^user1' | grep -v user1 -- получим пустой вывод.

P.S. awk пользоваться нельзя.
ps -ef | grep '^user1' | awk '{print $8}' | | grep -v user1 то всё ок.... Но awk нельзя (((((((
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
ps -ef |grep '^user1' |tr -s ' ' |cut -d ' ' -f 8- |grep -v user1

а так как нам нужна тока первая и последняя колонки то
ps -eo user,cmd |grep '^user1' |tr -s ' ' |cut -d ' ' -f 2- |grep -v user1

хотя тут может возникнуть проблема c tr -s ' ' которая сокращает последовательность пробельных символов до одного пробела, а вдруг кто-то в имени додумается использовать больше одного пробела идущего в подряд или даже табуляцию ? хотя это визуально может и не важно, но всё же

ps -eo user,cmd |grep '^user1' |cut -d ' ' -f 2- |sed 's/^[ \t]*//' |grep -v user1
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
если нам нужны имена процессов с именем НЕ содержащим в названии подстроку

grep -v
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Даже вопрос внятно сформулировать - уже проблема?

ps -ef | grep '^user1' | egrep -v '.+user1'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы