Bash:有没有办法让程序/脚本在特定时间在前台运行

Bash:有没有办法让程序/脚本在特定时间在前台运行

正如上述问题,是否有任何程序可以帮助我们 在前台运行另一个程序/脚本。

我知道我可以使用 at 在特定时间将程序作为后台作业运行。

at 09:00 -f bashscript.sh

本质上我需要的是一个计时器,以一定的时间间隔执行程序/脚本。

这是否意味着我必须编写一个程序或脚本,当系统时钟教导某个特定计数时执行

谢谢

答案1

是的,你可以这样做。但是,你需要确定要输出到的终端 (LINE) 的 ID。

可以通过在当前终端中运行以下命令来找到它:

$ who -mH
NAME     LINE         TIME             COMMENT
am       pts/0        2023-10-19 09:07 (172.17.0.2)

您还可以通过省略以下内容来获取所有终端连接的完整列表-m

$ who -H
NAME     LINE         TIME             COMMENT
am       pts/0        2023-10-19 09:07 (172.17.0.2)
am       pts/1        2023-10-08 14:14 (tmux(202201).%0)
am       pts/2        2023-10-08 14:14 (tmux(202201).%1)
am       pts/3        2023-10-08 14:14 (tmux(202201).%2)

如果显示 LINE ttyX(将 X 替换为数字),则为直接连接。如果显示 LINE pts/X,则为远程连接。

现在你需要一些聪明的方法来找出你写入的终端。我无法就此给你建议,因为这将取决于你的情况。

但是,就我而言,我知道这pts/3tmux我首先看到的终端窗口,所以我可以编写一个脚本将输出写入该终端。

这里一个简单的例子是neofetch每小时运行一次。然后,将以下行添加到 crontab 中:

0  *  *  *  * neofetch > pts/3

这样,neofetch(由 crontab 运行) 的输出将被定向到pts/3,并因此显示在该特定终端上。

相关内容