当前位置: 首页 > news >正文

Linux定时静默执行桌面/前台程序

Linux服务器上的程序大都在后台默默的执行,但有些需要在前台或桌面上运行的程序该怎么办呢?这就要借助虚拟显示技术,也就是在后台运行时提供虚拟的显示,使前台运行的程序也能默默的在后台运行,这就是所谓的以“无头模式”来运行(例如:程序在后台运行时需要打开浏览器,并操作浏览器中的鼠标移动或键入...,但却不在前台显示,只是在后台模拟显示,只有程序自身可用)。这项技术中最简单的就是:xvfb(X 虚拟帧缓冲),也就是可以在没有物理显示设备的情况下,模拟出一个虚拟的 X 服务器环境,让图形化应用以为自己是在有显示器的环境中运行。

1. 安装 xvfb

在 Ubuntu Linux系统中,可以使用以下命令安装:

sudo apt-get install xvfb

在您原有命令的前面,加上“xvfb-run -a”命令,使原有的程序在利用虚拟显示技术在后台静默的运行,当然您不会看到原有在前台/桌面显示的界面。


2. 确认 cron 服务正在运行

使用如下命令检查 cron 服务的状态:

sudo systemctl status cron

若服务未运行,使用以下命令启动它:

sudo systemctl start cron

若希望 cron 服务在系统启动时自动运行,执行:

sudo systemctl enable cron

3. 增加定时调度任务

可以编辑当前用户的 crontab 文件,使用如下命令:

crontab -e

要是首次使用该命令,系统会让你挑选一个文本编辑器,像 nano 或者 vim 都可以,选择你熟悉的即可。


4. 添加每 10 分钟执行一次的任务

在 crontab 文件中添加新的定时任务行。crontab 文件每行的格式为:

分钟 小时 日期 月份 星期 要执行的命令

若要每 10 分钟执行一次任务,你可以使用 */10 来表示分钟字段,例如每 10 分钟执行一次 /path/to/your_script.sh 脚本,添加如下内容:

*/10 * * * * /path/to/your_script.sh

如果是要每 10 分钟执行一个 Python 脚本,假设 Python 解释器路径是 /usr/bin/python3,脚本路径是 /path/to/your_python_script.py,则添加:

*/10 * * * * /usr/bin/python3 /path/to/your_python_script.py

5. 保存并退出编辑

依照你所选编辑器的保存和退出方式操作。以 nano 为例,按 Ctrl + X,接着按 Y 确认保存,最后按 Enter 键。cron 会自动加载新的定时任务。


6. 验证定时任务

crontab -l

此命令会列出当前用户 crontab 文件里的所有定时任务,你可以确认新添加的任务是否正确显示。


7. 注意事项

  • 路径问题:要保证脚本或者命令的路径是正确的,不然 cron 可能无法找到并执行相应的任务。
  • 环境变量问题cron 任务运行时的环境变量和你在终端交互时的环境变量可能不同。如果任务依赖特定的环境变量,你需要在脚本里显式设置这些变量,或者在 crontab 文件里添加环境变量的设置。例如:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
*/10 * * * * /path/to/your_script.sh

 这里设置了 PATH 环境变量,以确保 cron 任务能找到必要的命令。


8. 使用xvfb

使用xvfb技术,使crontab定时调度执行前台程序时进入后台静默执行方式,也就是类似于“无头运行”模式。

  • 修改 crontab 任务:假设你的爬虫脚本是 scraper.py,使用 xvfb-run 命令来运行脚本,它会自动配置虚拟显示环境。例如:
* * * * * xvfb-run -a python /path/to/scraper.py

这里 -a 参数表示自动选择一个可用的显示编号。


9. 为执行留下痕迹

在 crontab 文件中,你可以将任务的输出重定向到指定的日志文件,这样就能更清晰地查看每个任务的执行结果。

例如,假设你有一个 cron 任务是每小时执行一次 /path/to/your_script.sh 脚本,你可以在 crontab 文件中这样配置:

0 * * * * xvfb-run -a /path/to/your_script.sh >> /var/log/your_script.log 2>&1

上述配置的含义是:

  • >>:将脚本的标准输出追加到 /var/log/your_script.log 文件中。
  • 2>&1:将脚本的标准错误输出也重定向到标准输出,即一起记录到 /var/log/your_script.log 文件中。
sudo cat /var/log/your_script.log

 配置完成后,保存并退出 crontab 文件,之后每次任务执行的输出都会记录在 /var/log/your_script.log 文件中,你可以使用以下命令查看:


至此,您可以让前台的程序后台运行,更是可以定时循环执行。

相关文章:

  • windows Redis Insight 如何查看宝塔docker里的redis数据
  • DIC技术用于混凝土泵车臂架三维姿态与振动测量
  • 怎么把pyqt界面做的像web一样漂亮
  • Windsurf Wave 3发布:MCP协议、更多模型支持等重要功能解析
  • RIP路由协议的知识要点
  • Python Django 入门教程
  • 【开源向量数据库】Milvus简介
  • LabVIEW 中的 3dgraph.llb 库
  • 重生之我在异世界学编程之C语言:深入预处理篇(上)
  • PHP 数据库操作:以 MySQL 为例
  • 【Python】实现文件移动与文件夹删除工具
  • MySQL 查询缓存技术深度解析
  • container::erase
  • 推荐几款较好的开源成熟框架
  • Day4 25/2/17 MON
  • TCP/IP参考模型之区别(Differences Between the OSI and TCP/IP Reference Models)
  • C++Linux进阶项目分析-仿写Redis之Qedis
  • C++ list:链表的“乐高积木”与“灵活小火车”
  • vue3项目实践心得-多次渲染同一svg + 理解v-if、transition、dom加载之间的顺序
  • 面向企业的采购ERP管理系统
  • 金融网站建设方案ppt模板/怎么在百度制作自己的网站
  • 有中文网站 怎么做英文网站/网络推广公司如何做
  • t购物网站开发前景/佛山快速排名seo
  • 封面制作网站/自媒体推广渠道有哪些
  • 带m开头的网站怎么做/在百度怎么免费发布广告
  • 12306网站 给手机核验怎么做/成都新一轮疫情