首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查shell脚本是否已经运行(feh) (i3)

检查shell脚本是否已经运行(feh) (i3)
EN

Stack Overflow用户
提问于 2022-09-10 11:12:31
回答 1查看 90关注 0票数 1

在我的~/Pictures/wallpapers/文件夹中,我有一个shell脚本,它在每次while true函数终止时使用一个while true来更改壁纸:

feh-auto.sh

代码语言:javascript
复制
#!/bin/bash
while true; do
  feh /home/maruko/Pictures/wallpapers --randomize --bg-fill
  sleep 1800
done

每次膝上型计算机打开电源或使用快捷方式i3重新加载Win+Shift+R配置时,都会自动运行此脚本。

~/.config/i3/config

代码语言:javascript
复制
...
### CHANGE WALLPAPER RANDOMLY
# https://www.linuxandubuntu.com/home/set-background-wallpapers-on-i3wm
exec_always --no-startup-id ~/Pictures/wallpapers/feh-auto.sh
...

i3配置的更改通常伴随着重新加载,因此会发生更改。

问题是,每次重新加载时,都会创建一个新的feh-auto.sh 实例,这意味着现在不再使用一个定时器,而是有1800个定时器,这将改变壁纸x倍,其中x是我重新加载配置的次数。

在重新加载时,我希望有一种更合适的行为:检查feh-auto.sh是否已经运行,如果已经运行,则不要创建新实例。

你能帮我找到最好的解决方案吗?

谢谢。

编辑

正如@balki在评论中所建议的那样,我创建了一个cron作业

(sudo crontab -e)

代码语言:javascript
复制
@reboot /home/maruko/Documents/program-files/shell/feh-auto.sh

运行以下脚本

feh-auto.sh

代码语言:javascript
复制
#!/bin/bash

export DISPLAY=0:0
feh /home/maruko/Pictures/wallpapers/ --randomize --bg-fill

然而,当启动或重新启动系统时,壁纸是空白的,好像什么都没有发生一样。命令sudo systemctl status cronie.service报告如下:

代码语言:javascript
复制
crond[3300]: pam_unix(crond:session): session opened for user root(uid=0) by (uid=0)
CROND[3307]: (root) CMD (/home/maruko/Documents/program-files/shell/feh-auto.sh)
CROND[3300]: (root) CMDOUT (feh ERROR: Can't open X display. It *is* running, yeah?)
CROND[3300]: (root) CMDEND (/home/maruko/Documents/program-files/shell/feh-auto.sh)
CROND[3300]: pam_unix(crond:session): session closed for user root

我不知道下一步该怎么办。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-11 12:56:18

这篇文章的答案是阅读文档

i3配置附带了execexec_always命令:

exec将在引导时执行该命令一次,

exec_always也将在重新加载时执行该命令。

解决方案是替换上面对feh-auto.sh的调用

~/.config/i3/config

代码语言:javascript
复制
### START FEH WALLPAPER
# note: exec_always will run the script on each reload, not ideal
# --no-startup-id will eliminate the problem of loading icon on boot
exec --no-startup-id /home/maruko/Pictures/wallpapers/feh-auto.sh
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73671335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档