解决方法
一般来说,要获取守护进程的打印,需要通过 syslog 之类记录系统整体日志的方法。procd init 脚本也提供了方法将应用程序的打印重定向到 syslog 中。
下面是一个简单的 procd init 脚本例子,它会启动应用程序 /usr/bin/foobar,但我们默认没法看到 foobar 输出到 stdout/stderr 的打印:
#!/bin/sh /etc/rc.common
START=50
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command /usr/bin/foobar
procd_close_instance
}
通过增加“procd_set_param stdout 1”和“procd_set_param stderr 1”两个参数,可将其输出到 stdout/stderr 的内容重定向到 syslog:
#!/bin/sh /etc/rc.common
START=50
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command /usr/bin/foobar
procd_set_param stdout 1 # 将其 stdout 的内容重定向到 syslog
procd_set_param stderr 1 # 将其 stderr 的内容重定向到 syslog
procd_close_instance
}
如此设置后,就可以从 syslog 中看到 foobar 应用程序输出的打印。
解决方法
一般来说,要获取守护进程的打印,需要通过 syslog 之类记录系统整体日志的方法。procd init 脚本也提供了方法将应用程序的打印重定向到 syslog 中。
下面是一个简单的 procd init 脚本例子,它会启动应用程序 /usr/bin/foobar,但我们默认没法看到 foobar 输出到 stdout/stderr 的打印:
#!/bin/sh /etc/rc.common
START=50
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command /usr/bin/foobar
procd_close_instance
}
通过增加“procd_set_param stdout 1”和“procd_set_param stderr 1”两个参数,可将其输出到 stdout/stderr 的内容重定向到 syslog:
#!/bin/sh /etc/rc.common
START=50
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command /usr/bin/foobar
procd_set_param stdout 1 # 将其 stdout 的内容重定向到 syslog
procd_set_param stderr 1 # 将其 stderr 的内容重定向到 syslog
procd_close_instance
}
如此设置后,就可以从 syslog 中看到 foobar 应用程序输出的打印。
举报