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


0

您好,我编写了一个简单的命令行脚本,该脚本应该每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 &

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

#./shottr.sh

要么

#sh shottr.sh

cron设置如下:

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

脚本本身正在执行(我听到一个声音:“截屏”),但未获取实际的截屏。

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

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


是的,从cron调用很可能是这里的问题。
Sven

知道这有什么解决方法吗?我需要截图,每5分钟

如果仅对于测试设置了NM = test,将发生什么情况,只是为了确保date命令不会出现问题。
pablo

但是,如果我手动调用它,它将起作用。但是,我按照您所说的进行了测试,没什么...

您的日期字符串可以简化为:(NM=$(date "+%j_%F %k:%M")无需运行date两次)。首先输入儒略日数字会破坏文件名的可排序性,您可能要考虑不包括空格。
丹尼斯·威廉姆森

Answers:


8

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

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

这假定您DISPLAY始终为:0,如果您在控制台上登录,则为true;如果远程运行X,则为true。


噢,伙计,ROCk!这工作了!你给力。PS:大家好,请投票!

@bakytn,如果此答案解决了您的问题,则应该接受它(单击左侧的复选框)。谢谢!
larsk 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.