Ubuntu 9.10:如何排除似乎无法运行的启动脚本的故障?

Ubuntu 9.10:如何排除似乎无法运行的启动脚本的故障?

我创建了一个 bash 脚本“foo”。我已使用以下命令使该脚本可执行:

chmod+x 

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

sudo update-rc.d foo defaults 80

尽管如此,它在启动时似乎无法正常工作。有没有办法让我的脚本将消息回显到日志中?或者是否有一些日志可以记录此事件/错误?

目前,我感觉自己像在盲目飞行,真的不知道如何解决这个问题。

根据要求,这是我的脚本的内容:

#!/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

答案1

在脚本的开头添加以下行:

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

重启。现在查看 /tmp 中的文件 - 它应该会告诉你发生了什么。

顺便说一句,在 init.d 脚本中我倾向于使用带完整路径的命令 (/sbin/modprobe)。这些脚本使用的受限 PATH 让我受了不少苦,现在我不再做任何假设了。:)

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

http://mywiki.wooledge.org/BashFAQ

http://mywiki.wooledge.org/BashPitfalls

http://mywiki.wooledge.org/BashGuide

答案2

看看logger命令。

在脚本开头添加如下一行:

logger "foo started"

添加一条简单消息/var/log/syslog来表明您的脚本正在执行某项操作。

答案3

如果使用 sudo 运行该脚本,它会起作用吗?如果脚本设置正确,我见过的最常见错误与未正确设置环境有关。

例如,最好是在脚本开始时明确设置 PATH 或对运行的任何命令使用完整路径。

另外,80 级真的是你所需要的吗?你是否依赖一些尚未开始的事情?

您的脚本是否充分检查了所运行内容的错误级别并做出适当响应。良好的脚本和编程要求您正确观察和处理错误。

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

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

答案4

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

logger -i "Foo Starting"

相关内容