gpt4 book ai didi

linux - Bash 脚本作为屏幕保护程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:24 26 4
gpt4 key购买 nike

我正在尝试创建一个脚本来将电影用作屏幕保护程序,但是一旦打开电影,系统就会卡住并重新启动。

我一直在扯头发,因为我不明白为什么会这样。我在另一台机器上尝试了相同的脚本,它运行了好几个月......

它工作的机器是 Linux Mint 13 机器,它不工作的机器是 Linux Mint 17 机器。

脚本如下:

#!/bin/bash
screen_on=false;
state=0;
time_idle=1200;

while true;do

IDLE=$(./idletime)


if [ $IDLE -gt $time_idle ];then

if [ $(pidof mplayer) ];then

echo "Screen is on " >> mylog.log

else
./test.sh &

fi

else
if [ $(pidof mplayer) ];then

pkill mplayer

else
echo "Screen is off." >> mylog.log

fi

fi

done

idletime程序其实和xprintidle一样...都是利用X Server来获取系统的空闲时间。test.sh脚本如下:

#!/bin/bash

mplayer -nostop-xscreensaver movie.mp4 -fs -loop 0

谢谢!

最佳答案

可能发生的是拒绝服务攻击。

如果你有两个 mplayer 进程,你的脚本就会开始轰炸系统,尽可能快地启动无限数量的 mplayer。

使用shellcheck .它会警告您 if [ $(pidof mplayer) ] 中缺少引号。正确的代码是:

if [ "$(pidof mplayer)" ]
then
echo "There is one or more mplayer processes"
else
echo "There are no mplayer processes."
fi

可以更直接的写成

if pidof mplayer > /dev/null
then
...

PS:您还可以将 while true 替换为 while sleep 1,这会将脚本的 CPU 使用率从 100% 降低到 <1%,而不会损失功能。

关于linux - Bash 脚本作为屏幕保护程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25372466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com