在打开的终端上运行计划的命令

在打开的终端上运行计划的命令

cron使用或(AFAIK)计划的任务/脚本at无法运行里面特定终端:它只能将任务/脚本的输出(通过重定向)打印到特定终端。

相反,我想安排一个应该在已经打开的终端中运行的命令,就好像我在那里输入命令然后按Enter

这有可能吗?


我正在运行 Ubuntu 22.04,但如果有一个解决方案,我希望它不依赖于特定的 Linux 版本。


更多细节:我可以在登录或打开终端时运行脚本,以打印tty文件中的当前内容。因此假设终端始终可用。

该作业应该忽略我正在做的工作并只是运行,在光标所在的位置打印其输出(如果它与我正在可视化的内容重叠,那就可以了)。它不需要从用户获取任何输入:它只有文本输出。

答案1

您可以使用此处提供的任何答案睡觉直到特定时间/日期。我认为没有理由在此处复制现有问题中发布的任何解决方案。

您也可以参考SE网站上发布的问题:睡眠直到下一次出现特定时间

因此,有两种选择,要么您想要在背景中,要么在前景中。

前景:

[birdie@localhost tmp]$ cat > test.sh
echo 123
[birdie@localhost tmp]$ chmod +x test.sh 
[birdie@localhost tmp]$ ( sleep 10; ./test.sh ) &
[1] 3689760
[birdie@localhost tmp]$ 
[birdie@localhost tmp]$ 
[birdie@localhost tmp]$ 
[birdie@localhost tmp]$ 123

[1]+  Done                    ( sleep 10; ./test.sh )

有点难看,但它有效。如果它想从控制台读取任何内容,它将暂停,因为没有输入。

为了安全起见,请奔跑stty -tostop在任何此类命令之前运行。这是一个解释为什么需要它。

或者背景:

nohup bash -c "sleep_command; command" &

如果特定的 sleep 命令是多行的,您可以用它创建一个脚本或函数。nohup是必需的,因为否则您的程序将在尝试输出任何内容时立即暂停。

相关内容