Почему я не нахожу процесс ping в списке ps?

Я предполагаю, что файл имеет формат «простой CSV», то есть в данных нет встроенных запятых или встроенных новых строк.

$ tac file | awk -F, '{ key = $0; sub("[^,]*,", "", key) } !seen[key]++' | tac
2,ed23,jon,doe,director,usa
4,er67,jake,Kogan,director,usa
5,dc10,Charls,Morg,manager,usa
6,kc56,patel,Kumar,associate,india

Код awkв середине приведенного выше конвейера создаст строку, используемую в качестве ключа в хэше, из всех полей каждой строки, кроме первого. Он напечатает первое вхождение строки с определенным ключом и проигнорирует все дубликаты.

Поскольку вы, похоже, хотите получить последний дубликат, я изменю порядок строк во входных данных сtac(из GNU coreutils ), прежде чем передать их в программу awk. Затем я обращаю вывод программы awk.

Недостаток этого подхода состоит в том, что вычисляемые ключи будут использовать столько памяти, сколько суммарный размер всех уникальных строк за вычетом первого поля.

Следующий подход является -более эффективным с точки зрения памяти, но он предполагает, что ввод сортируется таким образом, что повторяющиеся строки всегда встречаются вместе:

$ tac file | awk -F, '{ key = $0; sub("[^,]*,", "", key) } key != prev; { prev = key }' | tac
2,ed23,jon,doe,director,usa
4,er67,jake,Kogan,director,usa
5,dc10,Charls,Morg,manager,usa
6,kc56,patel,Kumar,associate,india
0
22.09.2021, 18:21
1 ответ

Отлично работает здесь (Fedora 34 ). Запустите ping 8.8.8.8на одной вкладке моего терминала Gnome, на другой:

$ pgrep ping
295323
$ ps -ef | grep 295323 
user  295323    3772  0 18:50 pts/4    00:00:00 ping 8.8.8.8
user  295628    3726  0 18:53 pts/3    00:00:00 grep --color=auto 295323

Вы уверены, что не неправильно скопировали PID (примерно в половине случаев )? pingвсе еще работает (, он останавливается, если не находит цель, например )?

0
22.09.2021, 21:54

Теги

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