передать протоколы команде из файла

Если вы хотите взять все цифры pid, вы можете использовать pgrep , чтобы сделать это за вас:

pgrep -d " " -f ^/usr

напечатает разделенный пробелами список всех PID процессов, команда которых запускается с / usr

Если вы действительно хотите использовать команду ps , awk будет лучшим инструментом, чем sed , чтобы делать то, что вы хотите . Вы можете сделать это, используя только первые 5 символов PID, например:

ps -ax -o pid,command | awk '$2 ~ /^\/usr/ {printf( "%s ", substr($1,0,5));} END {print ""}'

Это проверит, начинается ли второе поле с / usr , и если да, то напечатайте до первых 5 символов первого поля. с последующим пробелом, затем я добавил новую строку в конце для хорошей меры, но вы могли бы удалить это, если не хотите, чтобы новая строка даже в самом конце

Как указал Джайлз, вы, вероятно, никогда действительно не хотите только первые 5 символов PID (вероятно, я неправильно прочитал вопрос), поэтому более полезным ответом с использованием awk будет:

ps -ax -o pid,command | awk '$2 ~ /^\/usr/ {printf( "%d ", $1);} END {print ""}'
1
22.11.2018, 00:07
0 ответов

Теги

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