电脑用着用着突然卡住,某个后台程序没了响应,但你又没法一直盯着屏幕看。比如你开了个下载工具,结果半小时过去发现它早就停了,也没报错,就是不干活。这种情况其实很常见,关键就在于没有及时发现进程已经退出或崩溃。
为什么需要定时检查进程
有些程序看似稳定,实际运行中可能因为内存溢出、网络中断或系统资源紧张而意外退出。如果你依赖这个程序持续工作,比如监控脚本、自动上传任务或远程连接工具,那它一断就等于白忙活。
与其等出问题再查,不如让系统定期看看它还在不在。就像你每隔一小时去看看烧水壶有没有跳闸一样,自动化之后就不用操心了。
Windows 下用批处理实现检测
在 Windows 系统里,可以用简单的批处理脚本配合任务计划程序来实现定时检查。比如你想确保 chrome.exe 一直运行,可以写一个脚本:
@echo off
tasklist | findstr /i "chrome.exe" > nul
if %errorlevel% == 1 (
echo chrome.exe 未运行,正在重启...
start "" "C:\Program Files\Google\Chrome\Application\chrome.exe"
)
把这个保存为 check_chrome.bat,然后通过“任务计划程序”设置每5分钟运行一次,就能保证 Chrome 崩溃后自动拉起。
Linux 上用 shell 脚本加 cron 定时
在 Linux 环境下更灵活。假设你在跑一个 Node.js 服务叫 app.js,对应的进程名是 node,你可以写个检测脚本:
#!/bin/bash
if ! pgrep -f "app.js" > /dev/null; then
echo "$(date): app.js 进程不存在,正在重启" >> /var/log/app_monitor.log
nohup node /home/user/app.js &
fi
给脚本加上执行权限:chmod +x /home/user/check_app.sh
然后编辑 crontab:crontab -e
添加一行:
*/3 * * * * /home/user/check_app.sh
意思是每三分钟检查一次,一旦发现进程没了就重新启动。
进阶做法:用守护进程管理工具
手动写脚本适合简单需求,但要是管理多个服务,推荐用现成的工具。比如 Linux 下的 supervisor,安装后配置一下就能自动监控进程状态,崩溃立刻重启,还能记录日志。
Windows 上也有类似工具,比如 NSSM(Non-Sucking Service Manager),可以把任意程序注册成系统服务,自带崩溃恢复功能。
这些工具省去了自己写轮子的麻烦,稳定性也更高。特别是服务器环境,靠脚本拼凑容易漏情况,专业工具能处理启动依赖、超时判断、资源限制等问题。
小贴士:别让检测脚本自己挂了
有人写了检测脚本,结果脚本本身因为权限问题没跑起来,还误以为一切正常。建议把日志打开,每次检查都记录时间点和动作,方便回头排查。也可以让脚本运行时生成一个临时标记文件,比如 /tmp/checker_running,通过外部手段确认它确实在跑。
另外,检测频率别设太密。每分钟查十次不仅浪费资源,还可能被系统当成异常行为拦截。一般3到5分钟一次足够应付大多数场景。