我对RHEL6中的UNIX作业控制有疑问
基本上,我正在尝试使用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'?我在调用pipetool时使用bash作为shell。感谢您抽出宝贵时间帮助我。
答案 0 :(得分:0)
这应该对您有用:修改pipetool
以设置全局变量$PROGRAM_NAME
:
$PROGRAM_NAME = 'pipetool'
然后,脚本应在进程列表中显示为pipetool
。