ImageMagick 的“导入”命令行程序无法从 CRON 脚本中截取屏幕截图

bak*_*ytn 0 linux script shell cron

您好,我写了一个简单的命令行脚本,假设每 5 分钟截取一次屏幕截图。

(使用 ImageMagick 的“导入”程序)

这是脚本(shottr.sh):

#!/bin/sh

PTH="/home/username/images"
NM=`date +%j`_`date +"%F %k:%M"`

/usr/bin/import -window root -resize 1024 "$PTH/$NM.png" &
echo "Screenshot" | festival --tts &
Run Code Online (Sandbox Code Playgroud)

如果我手动执行,这工作正常,即:

# ./shottr.sh

或者

#sh shottr.sh

cron 设置如下:

*/5 * * * * /bin/sh /home/username/scripts/shottr.sh

脚本本身正在执行(我听到一个声音说:“屏幕截图”)但没有截取实际的屏幕截图。

PS:请放心,这不是权限问题(我放置了一个简单的“触摸”调用并创建了文件)

可能是如果它是从 cron 运行的……它没有“窗口”,所以它不能从任何地方截取屏幕截图??如果是这种情况,那么我该如何解决?

lar*_*sks 8

当您从中运行脚本时,cron它无法访问您的DISPLAY环境变量,这就是它如何知道 X11 显示的内容与哪些内容进行交互。您可以通过将以下内容添加到脚本中来使其工作:

# Set display to :0 if it's not already set.
: ${DISPLAY:=:0}
export DISPLAY
Run Code Online (Sandbox Code Playgroud)

这假设您DISPLAY是 always :0,如果您在控制台上登录,则为 true,但如果您远程运行 X,则为 true。