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