3

Можно ли предвидеть процесс, начатый выскочкой?

root@me:~# ps aux | grep my-app
root      2208  0.2  0.0   1456   480 ?        S    17:38   0:01 /opt/me/my-app
root@me:~# fg 2208
-bash: fg: 2208: no such job
root@me:~# fg $(pidof my-app)
-bash: fg: 2208: no such job

2 ответа2

6

fg нужен номер работы, а не PID. Вы не можете использовать номер задания, потому что любой процесс, запущенный upstart , не является потомком вашей оболочки. Это не будет отображаться в результатах jobs .

Попробуйте reptyr, например:

reptyr 2208

С его справочной страницы:

reptyr - это утилита, которая берет существующую работающую программу и подключает ее к новому терминалу.

Не пропустите эту заметку:

reptyr зависит от системного вызова ptrace(2) для подключения к удаленной программе. В Ubuntu Maverick и выше эта возможность отключена по умолчанию из соображений безопасности. Вы можете включить его временно, выполнив

echo 0 > /proc/sys/kernel/yama/ptrace_scope

от имени root или навсегда, отредактировав файл /etc/sysctl.d/10-ptrace.conf , в котором также содержится дополнительная информация об этом параметре.

Также обратите внимание, что reptyr только присоединяет процесс к другому терминалу. Это не означает, что процесс становится дочерним элементом вашей текущей оболочки.

1

Команде fg нужно job_id, а не идентификатор процесса, вам нужно запустить команду jobs и получить job_id процесса

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .