文章目录
1. linux中的service是什么?
service其实事守护进程(daemon process),有如下2个特点:
- 开机自启动
- 运行在后台
1.1 linux中的进程
进程终止的原因:
- 正常返回
- 收到信号,异常退出
常见信号:
查看命令: kill -l
SIGTERM: 15, 允许进程执行完毕后退出,可被进程忽略,kill命令发出的默认信号
SIGINT: 2, ctrl+c会发出该信号,效果类似SIGTERM
SIGKILL: 9, 进程立刻退出,不能被忽略
进程对信号的处理方式:
1) 进程退出
2) 忽略信号,继续执行
3) 调用信号处理函数
1.2 进程异常退出如何排查程序错误?
1) 查看日志,调试时输出日志非常重要,方便排查错误
2) gdb调试coredump文件
3) 思考程序运行时的环境,运行方式的可能影响,改变运行方式看能否复现错误
4) 看源码
coredump文件如何产生和调试?
linux默认不允许coredump,可能需要使用root权限更改下core文件的大小限制
a) ulimit -c 查看core文件容量限制,若为0,改为 unlimited: ulimit -c unlimited
b) 指定core文件的输出路径和文件名的格式:
echo “path/file” > /proc/sys/kernel/core_pattern
file可使用core-%e-%u-%g-%h-%p-%s-%t
%e: 程序文件名
%u: 用户名
%g: 用户组
%h: 主机名
%p: 进程ID
%s: 导致本次core dump的信号
%t: core dump的时间(离1970.01.01:00:00:00的秒数)
c) g