在无 GUI 的系统中系统启动 (init) 后立即打印消息指定次数

在无 GUI 的系统中系统启动 (init) 后立即打印消息指定次数

我希望对于给定的系统启动次数(例如 1 或 2 次系统启动),会出现一条消息。

我会将消息存储在某处,也许存储在变量中:

message='If you finished testing, make sure to remove the testing application.'!'

笔记:

  • 我使用 Ubuntu 服务器 16.04,目标是为无 GUI 系统提供解决方案。

  • 该代码的目的是,如果由于某种原因,我没有记得现在是做某项任务的好时机,那么可以有一种很好的方法来提醒自己完成某项任务。

  • 我认为我应该将变量存储在比 RAM “更深”的地方,也许在我为其创建的文件中,也许是另一种方法。我不知道。

  • Cron 不好,因为它是重复的,并且不适合给定的执行次数。

  • 这非常有用,以防您reboot/关闭/断电——您会收到重要任务的提醒。

澄清

我试图描述一种情况,当用户打开机器时,主提示出现的那一刻,随之而来的是我提到的消息。

答案1

恕我直言,如果没有人看到它,那么“在启动时”这样做是没有意义的,所以最好将其作为您登录的一部分...您可以从您的~/.profile.该脚本可以检查 1) 测试应用程序是否仍然存在,以及 2) 自上次警告您以来已经经过了一些延迟(例如通过检查 /var/tmp 中某些文件的时间戳),在这种情况下它会再次警告您(并触摸标记文件)。

有了这样一个“不要经常纠缠我”的脚本,您甚至可以在每次 bash 返回命令提示符时运行它,方法是将其放入 bash 的 PROMPT_COMMAND 变量中。

答案2

根据您的系统,您也许可以使用 cron@reboot

然而,systemd 服务文件可能是一种更稳定的方法。

所以:

正如评论中所暗示的:该服务文件...或者类似的东西...并且...

这个脚本:

#!/bin/bash
# Set _endcount to number of times you want to count minus one.
_endcount=2

if [ ! -f count.txt ]; then
   echo "1" > count.txt
   echo -e "No counter\nInitializing Counter"
   exit;
else 
   mycount=$( cat count.txt )
   if [ $mycount = $_endcount ]; then
      echo -e "If you finished testing, make sure to remove the testing application!"
      echo "1" > count.txt
   fi
   echo "Warning $mycount, Expires at $_endcount"
   count=$(($mycount + 1))
   echo "$count" > count.txt
fi

或者类似的东西。解决这个问题大概有 15 种方法,编写这个脚本有 100 种方法。

相关内容