我真的希望能够使用crontab每3小时更新一次,但crontab不会运行足够的priveleges脚本运行我的脚本。
澄清:我有一个复杂的脚本,每3小时生成一个图片(基于当前可用的Web服务器内容) – 我想让它显示它正在做什么,我知道它是否失败。
我已经试过了:1.添加一个文件到/etc/cron.d/myscript以供cron运行2.变种的xdg-open,gnome-terminal,mrxvt -e,env DISPLAY = 0.0,root / usr / local / bin / myscript 3.编辑我的用户cron – crontab -u username -e
Myscript是一个复杂的小野兽,下载一张图片(每半小时更新一次),然后下载一个不同的网站的网页作为index.html – sed的它,find它需要的特定图像(基于今天的date和时间),然后作物和变换它与imagemagick。
man xauth man xhost
你可以尝试xhost local:
作为开始。
如果你想在用户的桌面上打开一个窗口,你需要从你的用户上下文中导出X11authentication信息,并把它提供给你的根上下文。
作为用户,导出xauth信息:
$ xauth extract /home/foo/xauth-foo $DISPLAY $ echo $DISPLAY :0.0
然后,以root身份导入并启动您的X客户端:
# xauth merge /home/foo/xauth-foo # export DISPLAY=:0.0 # xclock
这是从我的笔记未经testing。 至less5年我没有用过这个用例。
我实际上是自己问了这个问题,并在得到一些指导之后设法回答这个问题 ( 来源1和来源2 )。 但是,这是对于树莓派,所以你可能需要使用一些其他的命令。
gnome-terminal -e command
xterm -e command
konsole -e command
terminal -e command
lxterminal -e command
通过使用命令lxterminal -e command
,我可以使terminal打开一个新的窗口。 但是这并不是所有需要做的事情。 指定path而不是依赖crontab中的环境variables…而我已经在使用PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
所以我就跟着去了 然后创build一个简单的脚本在crontab中使用,调用另一个脚本。
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin export DISPLAY=:0.0 lxterminal -e /home/pi/Public/./test
Crontab(命令crontab -e)最终看起来像…
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin * * * * * /home/pi/Public/test2
这就是最后的脚本testing。
#!/bin/bash echo 'This is a test.' echo 'This is a written test with lxterminal -e for real.' >> /home/pi/Public/testwrite.txt sleep 10