如何将守护进程置于前台?

如何将守护进程置于前台?

我在 Debian 4.1 上有一个作为守护进程运行的 Python 服务器。我想查看它的标准输出,所以我认为我应该以某种方式将其置于前台。我该怎么做?

答案1

如果您的守护进程在后台运行,并且没有任何选项可以在前台运行或登录文件,我真的不认为它会在 stdout 上写入任何内容(那可不好)。
如果它真的这样做,我建议通过重定向到日志文件来启动它,例如:

mydaemon > /var/log/mydaemonlogfile

答案2

如果守护进程正在向 stdout 写入任何内容,则必须将其发送到日志文件。如果您想要实时查看其正在记录的内容,则:

tail -f 日志文件

可以解决问题。这就是人们通常实时监控 Linux 上的服务所做的事情的方法。

答案3

“守护进程”始终与终端分离,并且 stdin、stdout、stderr 描述符已关闭。这意味着没有办法将其恢复,除非使用某些特殊功能,例如:

  1. 日志文件
  2. 特殊应用程序控制台(独立程序 - 如 MySQL 服务器的客户端)。这也可以是绑定在某个端口上的 telnet 服务器

答案4

与 shell 中的子进程(您可以随意使用 fg 和 bg )不同,守护进程通常是 init 的子进程。不过,好的守护进程会将其 stdout 和 stderr 重定向到 syslog 或直接重定向到日志文件。如果不是这种情况,并且您需要调试当前正在运行的守护进程,并且无法或不想重新启动它,请尝试 strace。这至少应该可以让您了解正在发生的事情。

相关内容