【发布时间】:2018-01-12 13:50:21
【问题描述】:
我知道我可以将busybox 配置为使用klogd (CONFIG_KLOGD) 构建,它开箱即用。
不过,我想知道是否可以在运行时通过命令行开关或 syslog-startup.conf 选项启用/禁用此功能,而无需重新编译busybox。
提前致谢。
【问题讨论】:
标签: embedded embedded-linux yocto busybox
我知道我可以将busybox 配置为使用klogd (CONFIG_KLOGD) 构建,它开箱即用。
不过,我想知道是否可以在运行时通过命令行开关或 syslog-startup.conf 选项启用/禁用此功能,而无需重新编译busybox。
提前致谢。
【问题讨论】:
标签: embedded embedded-linux yocto busybox
好吧,我真的很希望得到其他人的回应,但由于没有其他人来,我认为我自己的解决方案总比没有解决方案要好,以防其他人需要它。
我已经挖掘了源代码,看起来没有命令行开关或配置选项来选择性地启用/禁用 klogd。
不过,init-script 提供了一种非常好的方法。
1.开始/停止 syslogd 和 klogd 是分开的行:
start)
echo -n "Starting syslogd/klogd: "
start-stop-daemon -S -b -n syslogd -a /sbin/syslogd -- -n $SYSLOG_ARGS
start-stop-daemon -S -b -n klogd -a /sbin/klogd -- -n
echo "done"
现在人们能想到的最丑陋的想法是,如果不启动 klogd,只需将那一行注释掉即可。
/etc/syslog-startup.conf 仅由 /etc/init.d/syslog 提供,在 start) 案例之前:(基本上是脚本中的第一件事)
if [ -f /etc/syslog-startup.conf ]; then
. /etc/syslog-startup.conf
好吧,我可以向/etc/syslog-startup.conf 添加一个变量,我可以在初始化脚本中对其进行测试,以选择性地启用/禁用start-stop-daemon ... klog。
start)
echo -n "Starting syslogd/klogd: "
start-stop-daemon -S -b -n syslogd -a /sbin/syslogd -- -n $SYSLOG_ARGS
[ "$KLOGD_DISABLE" = "yes" ] || \
start-stop-daemon -S -b -n klogd -a /sbin/klogd -- -n
echo "done"
由于我在配置文件中添加了一个非标准变量,它仍然非常难看,但我觉得它没有第一个难看,所以这就是我提出的解决方案。
【讨论】: