【发布时间】:2014-12-22 21:35:48
【问题描述】:
我有一个关于 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。感谢您抽出宝贵时间帮助我。
【问题讨论】:
-
取决于您的操作系统等。尝试寻找
ptree $PID,或ps 的可视化树选项。然后,您应该会看到父进程bash以及它的子进程。为什么不能只搜索passengerhmmm.... 或pipetool?祝你好运。