Firefox自助服务终端脚本故障:闲置检测触发后重复打开标签页求助
问题原因及解决方法
问题根源
- if条件语法错误:原脚本中
if($(xprintidle)>120000);的写法不符合Bash语法规则,导致条件判断失效,pkill -f firefox被频繁触发,进而使得Firefox被反复杀死重启,出现每秒打开新标签的现象。 - pkill匹配范围过宽:
pkill -f firefox会匹配所有命令行包含"firefox"的进程,可能误杀后台运行第一个循环的Bash进程,进一步加剧异常重启的问题。
修复后的脚本
# 后台启动Firefox自动重启循环 while true; do firefox --kiosk --start-fullscreen --noerrdialogs --no-first-run --disable-infobars thesite.com sleep 1 done & # 闲置检测循环 while true; do # 判断闲置时间是否超过120秒(120000毫秒) if (( $(xprintidle) > 120000 )); then # 仅匹配Firefox进程,避免误杀其他进程 pkill firefox # 闲置后暂停2分钟,避免频繁重启 sleep 120 fi sleep 1 done
关键修复点
- 修正条件判断语法:使用
(( $(xprintidle) > 120000 ))进行数字比较,符合Bash算术表达式语法,确保闲置时间判断准确。 - 缩小pkill匹配范围:去掉
-f参数,仅用pkill firefox匹配Firefox主进程,避免误杀包含"firefox"关键字的其他进程(如后台的循环Bash进程)。 - 规范代码格式:调整if语句的换行结构,提升脚本可读性。
内容的提问来源于stack exchange,提问作者Machin Truc
相关产品推荐
相关产品推荐

