我有一个 bash 脚本(我们称之为 script.sh),如下所示
while true; do
if [ $someFile -eq = "1" ]
then
# make laptop LED blink here
fi
done
因此,当某个文件有值时(在我的例子中,当消息到达时,该文件被更改),脚本会使 LED 闪烁。正如您所猜到的,这个脚本永远不会停止。
当我需要知道是否有新邮件而又无法打开笔记本电脑并检查屏幕时,我通常会调用它。
今天我对自己说:让我们把它放入 .bash_profile 中,这样脚本就会在登录时启动。
但是当我尝试登录时,屏幕却冻结了。
我怎样才能告诉 bash:以非阻塞的方式执行这个?
或者:是否有其他解决方案可以在启动时启动它而不冻结机器?
答案1
不错的想法。但是,您已在无限循环中停止了登录序列。:-)
因此,请尝试使用以下命令启动脚本:
nohup ~/script.sh &
这样,它将被发送到后台并让您的登录继续。
更好的是,阅读cron
并了解sleep
...
答案2
最好的方法可能是将其添加到cron
。使用以下行创建 crontab:
@reboot ~/script.sh &
您使 LED 闪烁的方式也可能会带来一些麻烦。如果您包含整个脚本,以便我们了解发生了什么,您可能会得到更好的答案。
答案3
不要通过 cron 使用显式循环来运行此程序,请阅读通知,“一种 Linux 内核子系统,用于扩展文件系统以注意文件系统的变化,并将这些变化报告给应用程序”。
这inotify 工具工具文档展示如何安装并提供使用示例。