![如何创建一个简单的循环守护进程 bash 脚本?](https://linux22.com/image/986473/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E5%BE%AA%E7%8E%AF%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%20bash%20%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我想创建一个简单的守护进程 bash 脚本,如果我的计算机处于非活动状态超过 10 分钟,它将运行一个命令。我创建了一个别名来在终端中运行一个 python 脚本,并计划使用 xprintidle 返回用户处于空闲状态的毫秒数。但是,我对任何类型的 C 都不了解,所以我不知道如何制作守护进程循环脚本。我想在我的循环中:
- 检查 xprintidle 返回的时间是否超过 600,000 毫秒
- 如果是这样,则创建一个终端窗口,并使其全屏,不是最大化,而是全屏(如 F11)
- 然后运行命令矩阵。
我不希望脚本暂停或结束任何事情,我只希望它启动终端屏幕保护程序。
如果我有机会使用 xscreensaver 来监视不活动状态并运行 bash 脚本(它不必在启动时自动运行,并且很可能更短),那就太好了,但我仍然需要 bash 脚本。
答案1
就这样,很简单
#!/bin/bash
while [ 1 ];
do
VALUE=$(xprintidle)
if [ $VALUE -ge 600000 ];
then
gnome-terminal --full-screen -e 'matrix'
fi
sleep 0.25
done
以上述脚本为例,将其保存在您的个人$HOME/bin
文件夹中,作为gnome-terminal-screensaver.sh
。确保它可以用执行chmod +x $HOME/bin/gnome-terminal-screensaver.sh
。如果您没有,请创建一个。建议打开$HOME/.profile
并确保以下 3 行未注释:
# set PATH so it includes user's private bin if it exists
#if [ -d "$HOME/bin" ] ; then
# PATH="$HOME/bin:$PATH"
#fi
接下来,创建$HOME/.config/autostart/gnome-terminal-screensaver.desktop
包含以下内容的文件
[Desktop Entry]
Type=Application
Exec=/home/username/bin/gnome-terminal-screensaver.sh
Terminal=false
记得将 /home/username 更改为实际的 /home/username