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
是必需的,因为否则您的程序将在尝试输出任何内容时立即暂停。