Назад | Перейти на главную страницу

Как узнать, что за фоновый процесс

В настоящее время у меня на сервере unix есть фоновый процесс, который работает на несколько часов дольше, чем должен.

Я не могу вспомнить команду, позволяющую мне увидеть результат фонового процесса. Я не забуду добавить этот ответ в закладки!

Что также может быть полезно, если вы не уверены, делает ли он что-нибудь вообще, так это использование strace.

Если ваше приложение является службой dhcpd, запустите ps ax | grep [d]hcpd

$ ps axufw | grep [d]hcpd
dhcpd    21645  0.0  0.1  19156  4956 ?        Ss   Oct02   0:00 /usr/sbin/dhcpd -f -q -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/ltsp/dhcpd.conf

Ваш PID - 21645, поэтому вам нужно запустить sudo strace -p 21645. Или отбросьте sudo, если вы уже являетесь пользователем root.

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

Примечание: заключите букву команды grep в скобки, чтобы выделить саму команду grep.

Как продолжение Мариано Монтаньеса Уреты.

Если вы видите задачу в jobs в окне, вы должны увидеть что-то вроде этого:

$ jobs
[1]+  Running                 tail -f .ssh/known_hosts &

Если вы затем используете fg вместе с номером задания вы можете вывести его на передний план, т.е. fg %1 принесет мой tail команда на передний план. Вы также можете использовать fg команда с PID.

используйте fg, что означает передний план :)

tail -f whatever-file-the-process-is-writing-to.txt