Linux系统中shell程序的日志文件存储位置在哪里?
Linux Shell脚本中断问题日志排查路径
1. 系统默认日志查询路径
- 若脚本通过systemd服务托管运行,直接使用
journalctl命令过滤日志:
查指定服务全量日志:journalctl -u 你的服务名.service
实时打印最新日志:journalctl -u 你的服务名.service -f
按时间范围过滤:journalctl --since "2 hour ago" | grep 脚本名称关键字 - 系统通用日志:CentOS/RHEL系优先查
/var/log/messages,Debian/Ubuntu系优先查/var/log/syslog,系统级报错(如权限不足、依赖缺失、进程被强制终止)都会记录在此,可直接用grep过滤:grep "你的脚本名.sh" /var/log/syslog - 若脚本是cron定时任务触发,优先查
/var/log/cron日志,里面会记录任务触发时间、执行用户、执行错误信息。
2. 自定义运行日志排查
默认Shell不会主动将脚本的标准输出、错误输出写入系统日志,若你未做日志配置,建议运行时增加重定向逻辑留存日志:
- 后台运行脚本时直接重定向所有输出到指定日志文件:
nohup /path/to/你的脚本.sh >> /var/log/自定义脚本日志.log 2>&1 &
上述命令会同时留存普通输出和报错信息,终端断开也不会影响脚本运行。 - 可在脚本开头添加调试参数,方便定位中断的具体代码行:
新增set -x会逐行打印执行的命令和参数,新增set -e会在任意命令执行失败时直接退出脚本,配合日志重定向可以快速定位中断位置。
3. 异常退出状态快速判断
脚本中断后,可立即执行echo $?打印上一次进程的退出状态码,快速判断错误类型:
- 状态码126:脚本无执行权限
- 状态码127:脚本内调用的命令不存在(依赖缺失或环境变量未加载)
- 状态码130:脚本被用户手动通过Ctrl+C中断
- 状态码137:系统内存不足,脚本进程被OOM Killer强制终止
内容的提问来源于stack exchange,提问作者Ethan Lee
相关产品推荐
相关产品推荐

