在Linux中,我已经编写了一些在启动时执行的脚本,并用各种安装方法进行了演示。 对于较大的脚本,我将放入/etc/init.d并链接相应的/etc/rc.d/rc?.d运行级别。 对于较小的脚本,我将追加到/etc/rc.d/rc.local 。 这个过程似乎运行顺利。
现在我已经调整了一个脚本,并且失败了。 我有一个诊断它的时间,因为我似乎无法捕获错误输出。 我已经检查了/var/log/messages并在/var/log的其余部分search,但找不到任何有用的东西。
有人知道吗:
提前致谢。
否 – 他们去STDOUT (如果您使用echo )或STDERR (如果您使用echo >&2 )。
您的脚本必须自己写入日志和/或系统日志(您的发行版可能包含一些init.dfunction,可能有助于 – 将您的发行版添加到您的问题)。
如果你去找日志,请查找tee命令。 如果你去syslog查看logger 。 你可以用任何你想要的方式来组合它们。
编写一个包装脚本来调用你的脚本,并将输出redirect到一个文件
#!/bin/bash /path/to/your/script &>/path/to/logfile
你可以创build一个函数来将消息回显到屏幕和系统日志,如下所示:
LOGGER="/usr/bin/logger -t $myScript" # check the location of logger for your system myEcho () { echo "$1" $LOGGER "$1" }
你也可以把它放到一个单独的文件中,并把它包含到脚本中
#!/bin/bash myScript=$(basename $0) [ -r /myFunctions/myecho ] && . /myFunctions/myecho
来自init脚本的消息通常不会在任何地方捕获。 因此,您需要实现一种方法来自己做。 一个好主意是使用logger将所有输出发送到syslog。 这个例子将把stdout和stderr发送到syslog:
exec 1> >(logger -s -t $(basename $0)) 2>&1
我发现它在这个伟大的文章: http : //urbanautomaton.com/blog/2014/09/09/redirecting-bash-script-output-to-syslog/ 。