在特定目录中运行 cron 作业

在特定目录中运行 cron 作业

Ubuntu 18.04.5 LTS 非 GUI

我设置了一个如下的 cron 作业,以便在每小时的以下时间每 10 分钟截取一次桌面屏幕截图。

0,10,20,30,40,50 * * * * DISPLAY=:0 scrot

我的问题是 scrot 将图像保存在运行命令的目录中。如何修改我的 cron 作业以告诉它保存到特定目录(例如 /tmp/screenshots/)或者是否有办法让我告诉 scrot 从特定目录运行以实现相同的结果?

答案1

我不知道是否有一种特定于 scrot 的方法来告诉 scrot 将文件保存在哪里。

对于每个基于其当前目录执行的命令,有一种通用的方法。 无需直接通过 cron 执行命令,可以在 shell 脚本中使用该命令,cron 只需执行该脚本即可。

你的 crontab 看起来会像这样:

0,10,20,30,40,50 * * * * /home/hbkidf/bin/screenshot.sh

脚本可能如下所示:

#!/bin/bash

cd /tmp/screenshots/
DISPLAY=:0 scrot

为了使其工作,您必须在脚本上设置可执行标志,例如:

chmod u+x /home/hbkidf/bin/screenshot.sh

脚本位置(主目录、子目录“bin”)仅作为示例。脚本可以存储在任何地方,只要运行 cronjob 的用户能够访问即可。

此脚本只是 cron 和 scrot 之间的一个额外层。这不会改变与所涉及用户相关的任何内容。当 cronjob 以 User1 身份运行时,脚本将以 User1 身份执行,因此 scrot 也将以 User1 身份执行。

相关内容