如何使用Cron在Linux中更改桌面背景

如何使用Cron在Linux中更改桌面背景,linux,terminal,cron,command-line-interface,wallpaper,Linux,Terminal,Cron,Command Line Interface,Wallpaper,我找到了更改桌面墙纸的终端命令: gsettings set org.gnome.desktop.background picture-uri file:///path/to/your/image.png 但是这个命令在cron和其他台式机如Mate中不起作用pgrep gnome会话方法对我来说没有任何效果 您可以使用dconf更改背景。下面是简单bash脚本的示例: #!/bin/bash WP="$(find ~+ -type f -exec mimetype {} + 2>/d

我找到了更改桌面墙纸的终端命令:

gsettings set org.gnome.desktop.background picture-uri file:///path/to/your/image.png

但是这个命令在cron和其他台式机如Mate中不起作用<代码>pgrep gnome会话方法对我来说没有任何效果

您可以使用
dconf
更改背景。下面是简单bash脚本的示例:

#!/bin/bash

WP="$(find ~+ -type f -exec mimetype {} + 2>/dev/null | awk -F': +' '{ if ($2 ~ /^image\//) print $1 }' | sort -R | tail -30 | shuf -n 1)"

dconf write /org/mate/desktop/background/picture-filename "'${WP}'"
您可以使用GUI应用程序-dconf编辑器查找特定于发行版的密钥

但要在CRON中使用此脚本,需要设置会话环境变量。命令
pgrep gnome session
在Mint和其他非gnome桌面上不起作用。要解决此问题,您需要在系统启动时运行命令来保存特定用户的环境变量:

env > ~/cronenv && sed -i '/%s/d' ~/cronenv
现在,在users home dir中有了
cronenv
文件(不带替换变量-%s)。在运行
dconf
之前,只需将它们还原回cron即可:

*/1 7-21 * * * cd ~/Pictures && env $(cat ~/cronenv | xargs) /path/to/first/script

使用crontab-e编辑当前用户的cron作业。一切正常

您可以使用
dconf
更改背景。下面是简单bash脚本的示例:

#!/bin/bash

WP="$(find ~+ -type f -exec mimetype {} + 2>/dev/null | awk -F': +' '{ if ($2 ~ /^image\//) print $1 }' | sort -R | tail -30 | shuf -n 1)"

dconf write /org/mate/desktop/background/picture-filename "'${WP}'"
您可以使用GUI应用程序-dconf编辑器查找特定于发行版的密钥

但要在CRON中使用此脚本,需要设置会话环境变量。命令
pgrep gnome session
在Mint和其他非gnome桌面上不起作用。要解决此问题,您需要在系统启动时运行命令来保存特定用户的环境变量:

env > ~/cronenv && sed -i '/%s/d' ~/cronenv
现在,在users home dir中有了
cronenv
文件(不带替换变量-%s)。在运行
dconf
之前,只需将它们还原回cron即可:

*/1 7-21 * * * cd ~/Pictures && env $(cat ~/cronenv | xargs) /path/to/first/script

使用crontab-e编辑当前用户的cron作业。一切正常

我投票关闭这个问题,因为关于Linux的问题属于打开状态。如果你在那里问这个问题,请在这里删除。我投票反对关闭它-把你的精力放在回答问题上,而不是将用户重定向到其他页面。可能重复@jww,这个关于在bash(shell)中编程的问题开发一个跨发行版脚本我投票关闭这个问题,因为关于Linux的问题属于打开状态。如果你在那里问这个问题,请在这里删除。我投票反对关闭它-把你的精力放在回答问题上,而不是将用户重定向到其他页面。可能重复@jww,这个问题是关于在bash(shell)中编程和开发跨发行版脚本的