Получить список идентификаторов дочерних процессов (PID), запущенных в сеансе работы с экраном

Вы не можете анализировать параметры с регулярными выражениями так, как вы кажется, хотят, потому что параметры передаются не в строке, а в списке строк. myscript --option foo bar - qux имеет myscript , - option , foo , bar , - и qux как отдельные аргументы, ни один из них не содержит пробелов .

Использование цикла в bash.

case "$1" in
  --option1)
    shift
    while [[ $# -ne 0 && "$1" != "--" ]]; do
      option1_args+=("$1")
      shift
    done
    (($# == 0)) || shift
done

Если производительность является такой большой проблемой, вам не следует использовать bash. Попробуйте вместо этого ksh - он бесплатный, доступен практически везде, даже если это не так. t установлен по умолчанию, и часто он значительно быстрее, чем bash. Если он все еще слишком медленный, вам понадобится более интересный язык программирования, такой как Perl, Python или Ruby.

1
05.01.2019, 11:24
1 ответ

Попробуйте это, но это сработает, только если открыта одна сессия экрана.

ps waux | grep screen$ | awk '{print $2}' | xargs pstree

Например

jeff@linux:~$ ps waux | grep screen$ | awk '{print $2}' | xargs pstree
screen───screen─┬─bash───top
                ├─bash───watch
                └─bash───xargs───pstree

Если у вас было несколько экранных сессий, вы могли перебирать их следующим образом:

jeff@jlinux:~$ for pid in $(ps waux | grep screen$ | awk '{print $2}'); do pstree $pid; done
screen───screen───bash
screen───screen─┬─bash───top
                ├─bash───watch
                └─bash───pstree
0
28.01.2020, 00:21

Теги

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