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

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

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

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

这是脚本(shottr.sh):

/bin/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 &

如果我手动执行,则效果很好:

#./shottr.sh

或者

#sh shottr.sh

cron 设置如下:

*/5 * * * * /bin/sh /home/用户名/scripts/shottr.sh

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

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

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

答案1

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

# Set display to :0 if it's not already set.
: ${DISPLAY:=:0}
export DISPLAY

这假设您的DISPLAY始终是:0,如果您在控制台上登录则为真,但如果您远程运行 X 则不为真。

相关内容