在整个用户会话中运行记账脚本 (sh)

在整个用户会话中运行记账脚本 (sh)

我有一个脚本可以进行一些记账。记账是在指定的时间间隔(例如 30 分钟)后完成的。

我希望该脚本从用户登录到用户注销一直处于活动状态。

目前脚本如下所示:

#!/bin/sh
while true
do
    #do some stuff
    sleep 1800
done

我不知道如何配置我的系统来自动开始执行该脚本(特别是以多线程方式,因为脚本永远不会停止)。

另一个问题是该脚本应如何结束执行。基本上,这些事情应该自动完成:最好不要执行,而不是用户在执行过程中注销。此外,脚本不应拖延注销过程,直到整个脚本执行完毕(这种情况永远不会发生)。

我怎样才能实现这两个目标?

我知道脚本在时间上并不是那么准确(因为事情本身需要几秒钟,过一会儿,循环将不会每 30 分钟执行一次),但这并不重要。

答案1

查看这个帖子了解如何在启动时运行脚本(登录 GUI 后)。

关于请求的第二部分,我认为您不会找到一种简单的方法来阻止注销过程。您可以做的一件简单的事情是在睡眠时间结束时在屏幕上发送一些通知:

#!/bin/sh
while true
do
    notify-send -i "$([ $? = 0 ] && echo terminal)" "Updating bookkeeping!"
    #do some stuff
    notify-send -i "$([ $? = 0 ] && echo terminal)" "Update of bookkeeping will start again in 30 minutes."
    sleep 1800
done

相关内容