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 文件中,你可以使用以下命令查看:


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值