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 身份执行。