我创建了一个 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
答案2
答案3
如果使用 sudo 运行该脚本,它会起作用吗?如果脚本设置正确,我见过的最常见错误与未正确设置环境有关。
例如,最好是在脚本开始时明确设置 PATH 或对运行的任何命令使用完整路径。
另外,80 级真的是你所需要的吗?你是否依赖一些尚未开始的事情?
您的脚本是否充分检查了所运行内容的错误级别并做出适当响应。良好的脚本和编程要求您正确观察和处理错误。
将一些echo status
语句放入脚本中,并在系统启动时仔细观察。使用记录器会有所帮助,因为您可以将输出发送到系统日志。
您可以将添加set -x
到脚本的第一行,将sleep 120
作为最后一行,然后观察错误。这基本上会将正在执行的每个语句回显到您的屏幕上,然后它会等待几分钟,以便您有机会阅读和识别问题。
答案4
您可以使用 logger 命令将条目添加到日志文件:
logger -i "Foo Starting"