Minecraft进程监控Bash脚本异常:无法实时检测状态变更
修复Minecraft进程监控脚本的状态不更新问题
原脚本的核心问题
- Shebang错误:第一行
!#/bin/bash格式颠倒,正确写法应为#!/bin/bash,否则脚本可能无法被Bash正确解析执行。 - 状态变量未重置:仅在
pgrep检测到进程时将status设为true,但进程消失后未将status重置为false,导致变量一直保留旧状态,无法反映当前进程情况。 - 条件判断语法错误:
if $status = true;不符合Bash条件判断规范,容易触发语法异常。 - 无循环间隔:无限循环未设置休眠逻辑,会持续占用CPU资源。
- 拼写错误:
pres CTRL + C应为press CTRL + C。
修正后的脚本
#!/bin/bash while : do # 每次循环先重置状态为false,确保基于当前进程检测结果更新 status=false # 检测到Minecraft进程则标记状态为true pgrep -f minecraft && status=true if $status; then echo "Minecraft is up" else echo "Minecraft is down" echo "Restarting in 10 seconds, press CTRL + C to cancel" sleep 10 ./run.sh fi # 添加循环间隔,降低CPU占用,时长可按需调整 sleep 5 done
关键修改说明
- 每次循环开头重置
status为false,确保状态始终基于当前进程检测结果,而非历史值。 - 简化条件判断:直接用
if $status;判断布尔变量,比字符串比较更简洁可靠。 - 添加
sleep 5控制循环频率,避免系统资源被过度消耗。 - 修正Shebang和拼写错误,保证脚本的正确性与可读性。
内容的提问来源于stack exchange,提问作者Cowardlycamper32
相关产品推荐
相关产品推荐

