我用python编写了一个简单的脚本来改变桌面的墙纸。当在终端中以./script.py的形式执行时,它可以工作,因为它有一个用于python3的shebang。但是,如果我尝试以sudo ./script.py运行该脚本,或者尝试使用cron调度该脚本,则该脚本不起作用。我是一个linux和python的新手,我读过一些东西,我认为它与PATH或env有关,但我不确定。
以下是更改我在raspberry pi上的墙纸的python脚本:
#!/usr/bin/env python3
import os,random
import subprocess as sub
random_pic = random.choice(os.listdir('/usr/share/rpd-wallpaper/'))
print(random_pic)
shell_command = ("pcmanfm --set-wallpaper /usr/share/rpd-wallpaper/" + str(random_pic))
# open a terminal and changes wallpaper with path of picture above
sub.call('lxterminal -e bash -c "{0}; sleep 5; echo background changed...; pwd; whoami; sleep 1; exec bash"'.format(shell_command), shell=True)下面是我添加的crontab行:
*/1 * * * * env DISPLAY=:0 /usr/bin/python3 woll.py当脚本作为sudo运行或每分钟被cron调用时,它会在终端中给出一个奇怪的错误:
** Message: 08:41:35.152: x-terminal-emulator has very limited support, consider choose another terminal可能是什么问题?是不是程序"pcmanfm“( raspberry pi的默认文件/窗口管理器)的路径在运行sudo/cron时找不到?cron是否以sudo身份运行?我尝试通过告诉相同的终端返回“terminal”来调试它,它返回了pi,这应该可以很好地工作,因为我可以通过一个普通的终端以我的普通用户帐户"pi“来执行脚本,而不是以root用户的身份,并且脚本可以工作。Much I am
发布于 2019-08-13 15:34:24
所以现在我的背景改变的方式是: crontab -->执行具有特殊命令的bash脚本,请参见:
Pcmanfm set wallpaper fails on Raspbian stretch in cron
--> bash脚本执行python脚本--> python脚本使用更改后台命令打开终端。
感谢大家的帮助!在此过程中,我学到了一点linux和python,谁知道自动更换墙纸会如此困难。我花了两天时间,但是感觉真棒,准备好,伊隆,我来了
https://stackoverflow.com/questions/57472457
复制相似问题