1

我对 RHEL6 中的 UNIX 作业控制有疑问

基本上,我正在尝试使用 logrotate 来实现乘客调试日志轮换。我正在按照此处的说明进行操作:

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

我已经正确设置了所有内容(我认为)。我的问题是这个;当我使用生成后台作业时

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

然后注销并重新登录,如果我检查进程表,例如,如果我检查进程的 pid,则使用“ps aux”,它显示为命令“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。感谢您抽出宝贵时间帮助我。

4

1 回答 1

0

这应该对您有用:编辑pipetool以设置全局变量$PROGRAM_NAME

$PROGRAM_NAME = 'pipetool'

然后该脚本应显示pipetool在进程列表中。

于 2015-01-09T11:09:35.540 回答