nohup управление заданиями rhel6/centos

У меня есть вопрос об управлении заданиями UNIX в RHEL6.

По сути, я пытаюсь реализовать ротацию журнала отладки пассажиров с помощью logrotate. Я следую инструкциям здесь:

https://github.com/phusion/passenger/wiki/Phusion-Passenger-and-logrotation

У меня все настроено правильно (я думаю). Моя проблема в следующем; когда я запускаю фоновое задание, используя

nohup pipetool $HOME/passenger.log < $HOME/passenger.pipe &

А затем выйдите из системы и снова войдите, если я проверю таблицу процессов, например, с помощью «ps aux», если я проверю pid процесса, который отображается как с командой «bash». Я попытался изменить первую строку команды на «#!/usr/bin/ruby». Вот пример этого:

[root@server]# nohup pipetool /var/log/nginx/passenger-debug.log < /var/pipe/passenger.pipe &
[1] 63767
[root@server]# exit
exit
[me@server]$ sudo su
[sudo] password for me: 
[root@server]# ps aux | grep 63767
root     63767  0.0  0.0 108144  2392 pts/0    S    15:26   0:00 bash
root     63887  0.0  0.0 103236   856 pts/0    S+   15:26   0:00 grep 63767
[root@server]# 

Когда это происходит, строка в предоставленном файле logrotate ( killall -HUP pipetool ) завершается ошибкой, поскольку не соответствует 'pipetool'. Опять же, я попытался изменить первую строку на #!/usr/bin/ruby. Это не повлияло. Итак, мой вопрос в основном; есть ли хороший способ, чтобы фактическая команда отображалась в таблице процессов, а не просто «bash» при порождении с помощью управления заданиями? Я использую bash в качестве оболочки, когда вызываю pipetool. Я ценю, что вы нашли время, чтобы помочь мне.


person dps    schedule 22.12.2014    source источник
comment
в зависимости от вашей ОС и т. д. попробуйте найти ptree $PID или параметр визуального дерева для ps. Затем вы должны увидеть родительский процесс bash, а также его дочерние процессы. Почему нельзя просто поискать passenger хммм.... или pipetool ? Удачи.   -  person shellter    schedule 23.12.2014


Ответы (1)


Это должно работать для вас: отредактируйте pipetool, чтобы установить глобальную переменную $PROGRAM_NAME:

$PROGRAM_NAME = 'pipetool'

Затем сценарий должен отображаться как pipetool в списке процессов.

person pgl    schedule 09.01.2015