Ubuntu 9.10:我如何解决一个看起来不会运行的启动脚本?

我创build了一个bash脚本“foo”。 我已经使该脚本可执行

chmod+x 

并通过运行将其添加到启动中

 sudo update-rc.d foo defaults 80 

尽pipe如此,它似乎并没有在启动工作。 有没有办法让我的脚本回声消息到日志? 还是有一些logging会logging事件/错误呢?

atm,我觉得我是盲目的,不知道如何解决这个问题。

按要求,这里是我的脚本的内容:

 #!/bin/bash modprobe uinput /home/dane/dev/mangler/run.sh /home/dane/dev/mangler/dane/keys.js 

run.sh命令执行程序kbd-mangler.exe。 当在gnome-terminal中运行以下代码时,它将起作用:

 ~/$ sudo bash custom_keys.sh 

在脚本的开始处,添加以下行:

 exec > /tmp/debug-my-script.txt 2>&1 

重启。 现在看看/ tmp中的文件 – 它应该告诉你发生了什么事情。

顺便说一下,在init.d脚本中,我倾向于使用具有完整path(/ sbin / modprobe)的命令。 我被那些脚本所使用的受限PATH烧了太多次,我现在不做任何假设。 🙂

顺便说一下,好的Bash编程链接:

http://mywiki.wooledge.org/BashFAQ

http://mywiki.wooledge.org/BashPitfalls

http://mywiki.wooledge.org/BashGuide

看看logger命令。

如果你用sudo运行脚本,脚本是否工作? 如果脚本安装正确,我所看到的最常见的错误就是没有正确设置环境。

例如,最好在脚本开始时明确设置PATH,或者为所运行的任何命令使用完整path。

80也是你真正需要的水平? 你依赖于还没有开始的东西吗?

你的脚本是否充分检查你运行的东西的错误级别,然后做出适当的回应。 良好的脚本和编程需要你注意并正确处理错误。

将一些echo status语句放入脚本中,并在系统启动时仔细观察。 使用logging器有帮助,因为您可以将输出发送到系统日志。

您可以将set -x添加到脚本的第一行,将sleep 120到最后一行,然后观察错误。 这将基本上回应每个语句,因为它正在执行到你的屏幕,然后它会等待几分钟,所以你有机会阅读和识别问题。

只是添加到build议。

我还会validation符号链接/etc/rc2.d/S80foo是否已创build,并链接正确。 如果文件foo不存在update-rc.d应该给你一个错误,但不会伤害到双重检查。

您可以使用logger命令将条目添加到日志文件中:

 logger -i "Foo Starting"