Почему делает мой один экземпляр VLC, имеют много процессов?

Оболочка является совершенно подходящим инструментом для этого задания. Просто заботьтесь для не искажения пробелов и обратных косых черт.

while IFS= read -r line; do
  if predicate "$line"; then printf '%s\n' "$line"; done
done

Вы могли также использовать awk. Обязательно заключите каждую строку в кавычки, так как она будет передана оболочке (отрывок ниже помещает одинарные кавычки вокруг строки и заменяет одинарные кавычки в строке '\''; \047 '). Поскольку каждый вызов команды проходит оболочку, я ожидаю, что это будет медленнее, чем чистый метод оболочки, даже если awk, вероятно, будет быстрее при парсинге строк. Но я не сделал сравнительных тестов.

awk '{quoted=$0; gsub(/\047/, "\047\\\\\047\047")}
     !system("predicate \047" $0 "\047")'
1
08.12.2011, 05:23
2 ответа

Это не отдельные процессы, они - потоки. VLC имеет много вещей, продолжающихся под покрытиями, каждый обработанный отдельным потоком.

Нажмите H в htop скрыть потоки, показывая процессы только.

11
27.01.2020, 23:11

Мое предположение - то, что VLC порождает дочерние процессы (как Apache, который сервер HTTP делает, например). Если это так, и если Ваша версия ps поддержки это, можно попытаться работать ps -H видеть процессы, перечисленные в древовидном расположении. Использовать -C vlc ограничить вывод только vlc процессы.

$ ps -H -C apache2
  PID TTY          TIME CMD
 1374 ?        00:00:00 apache2
 1377 ?        00:00:00   apache2
 1378 ?        00:00:00   apache2
 1379 ?        00:00:00   apache2

С другой стороны, используйте ps -f получить "полный" вывод, включая родительский PID (PPID). Снова, это проясняет, какой процесс является родительским процессом.

$ ps -f -C apache2
UID        PID  PPID  C STIME TTY          TIME CMD
root      1374     1  0 03:47 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  1377  1374  0 03:47 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  1378  1374  0 03:47 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  1379  1374  0 03:47 ?        00:00:00 /usr/sbin/apache2 -k start
1
27.01.2020, 23:11

Теги

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