如何定位每10秒写入错误日志的程序并终止其运行?
如何定位每10秒写入错误日志的程序并终止其运行?
这种自动循环的后台任务确实挺闹心的,我来帮你一步步揪出根源并解决它:
先查Mac最常用的后台任务配置:LaunchAgents/LaunchDaemons
Mac上大部分定时或常驻后台的任务都是通过launchd管理的,配置文件是.plist格式:- 打开终端,先检查当前用户的配置目录:
看看有没有名字和ls ~/Library/LaunchAgents/weatherAlert、boring相关的.plist文件 - 再检查系统级的配置目录:
ls /Library/LaunchAgents/ ls /Library/LaunchDaemons/ - 如果找到对应的
.plist文件,先停掉这个任务:
(如果是系统级文件,需要在命令前加launchctl unload /完整路径/到/目标文件.plistsudo并输入管理员密码)
最后直接删除这个.plist文件,防止重启后任务再次加载。
- 打开终端,先检查当前用户的配置目录:
用
fs_usage实时追踪文件操作,锁定进程
要是上面没找到线索,就用这个工具实时监控和目标文件夹、日志相关的操作:- 终端运行:
(输入管理员密码后回车,命令会持续输出)sudo fs_usage | grep -E "boring|stderr.log" - 等个10秒左右,就能看到是哪个进程在创建
boring文件夹、写入stderr.log,输出里会包含进程ID(PID)和进程名,比如类似这样的内容:1234 python3.7 open("/Users/xxx/boring/stderr.log", O_WRONLY|O_APPEND|O_CREAT,...)
- 终端运行:
根据PID终止进程并彻底清除
拿到PID后,先确认进程的详细信息:ps -p 你的PID -f看输出的命令行是不是确实在调用
weatherAlert.py,确认后直接终止进程:kill -9 你的PID如果之后它还自动重启,再用
launchctl list | grep 进程名(比如python3.7)检查是不是有launchd管理的对应任务,有的话回到第一步用launchctl unload处理。最后检查crontab(旧版定时任务)
虽然现在Mac很少用crontab了,但也不妨排查一下:crontab -l看看列表里有没有每10秒执行的、和
weatherAlert.py相关的任务,如果有,用crontab -e编辑删除对应的行(按i进入编辑模式,删除后按Esc,输入:wq保存退出)。
备注:内容来源于stack exchange,提问作者mrwnt10
相关产品推荐
相关产品推荐

