bash:.bash_profile 中重复执行的脚本会阻止登录

bash:.bash_profile 中重复执行的脚本会阻止登录

我有一个 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 工具工具文档展示如何安装并提供使用示例。

相关内容