如何实现程序/脚本在指定时间以前台模式运行?
如何实现程序/脚本在指定时间以前台模式运行?
嗨,我来帮你解决这个问题~你已经知道用at可以后台定时执行脚本,但想要前台运行,甚至按固定间隔重复执行对吧?其实不用自己从头写程序,用现有工具就能搞定,下面分两种情况给你说明:
一、单次定时前台执行
如果你只是想在某个特定时间单次前台运行脚本,有两个简单实用的方法:
- 方法1:用
sleep计算延迟时间
先算出当前时间到目标时间的秒数,比如你想1小时后运行脚本,直接执行:
sleep 3600 && ./your_script.sh
这个命令会在前台挂着,到时间后脚本就会直接在当前终端前台运行,所有输出都会显示在这个终端里。如果要精确到具体时刻(比如今天09:00),可以用date命令自动计算秒差:
sleep $(( $(date -d "09:00" +%s) - $(date +%s) )) && ./your_script.sh
小提醒:如果目标时间已经过了当天,这个命令会立刻执行脚本,你可以加个简单的判断语句避免这种情况。
- 方法2:让
at绑定当前终端at默认后台执行,但你可以指定它把脚本的运行输出定向到当前终端。先执行tty命令查看当前终端路径(比如输出/dev/pts/0),然后用以下命令提交定时任务:
echo "./your_script.sh > /dev/pts/0 2>&1" | at 09:00
到指定时间后,脚本的内容就会直接在你当前的终端里前台运行,效果和手动执行一样。
二、按固定间隔重复前台执行
如果需要每隔固定周期重复运行(比如每天9点、每周一14点),可以结合终端模拟器和cron来实现:
- 先编辑你的
cron任务列表:
crontab -e
- 根据你的需求添加任务,比如每天9点自动弹出终端前台运行脚本:
- 如果你用的是
xterm终端(大部分Linux桌面环境自带):
这里0 9 * * * xterm -hold -e /path/to/your_script.sh-hold参数是让脚本运行结束后窗口不关闭,方便查看输出;不需要的话可以去掉。- 如果你用的是GNOME桌面的
gnome-terminal:
0 9 * * * gnome-terminal -- /path/to/your_script.sh - 如果你用的是
这样到指定时间就会自动弹出一个终端窗口,在前台运行你的脚本。
总结
完全不用自己写复杂的定时程序,用sleep、at或者cron配合终端定向/终端模拟器,就能轻松实现前台定时执行的需求啦~
备注:内容来源于stack exchange,提问作者user1538798
相关产品推荐
相关产品推荐

