Я пытаюсь сделать управление процессом в скрипте (bash).По этой причине я выводю идентификатор группы процессов текущего процесса в файл.
ps ax -o '%p %r'|perl -ne 'if ($_ =~ /\s*$$\s*(\d+)/) { print "$1"; exit; }' > $pgidfile
nohup $JAVA_HOME/bin/java -cp somejar.jar some.java.Program & > /dev/null 2>&1
Я также пробовал:
ps ax -o '%p %r'|awk '/'"$$"' [0-9]+/ {print $2}' > $pgidfile
nohup $JAVA_HOME/bin/java -cp somejar.jar some.java.Program & > /dev/null 2>&1
Однако в обоих этих случаях файл (в $ pgidfile) кажется пустым.(Хотя в некоторых редких случаях кажется, что оно имеет правильное значение.) Кроме того, просто запуск команд (для вывода идентификатора группы процессов - вариант 1 или вариант 2 выше) в командной строке, кажется, делает правильную вещь.
Было бы замечательно, если бы кто-то мог предложить решение вышеуказанной проблемы или ответить на один (или оба) из следующих вопросов:
1) Каков предлагаемый способ получения идентификатора группы процесса всценарий оболочки или perl?
2) Изменяет ли выполнение команды под nohup перенаправление вывода предыдущих / последующих команд, не связанных с командой, выполняемой с помощью nohup?