没有统一的提示信息,但可以根据内容和上下文进行分类,以下是几种常见情况和相应的提示内容:
当管理员通过命令(如shutdown
,systemctl reboot
,service xxx stop
)正常停止服务器时,通常会看到清晰的、计划内的提示。
系统级提示 (Linux/Unix):
Broadcast message from root@server (pts/0) (Fri Oct 27 10:00:00 2023): The system is going down for reboot NOW!
Stopping nginx: [ OK ]
[ TIME ] Stopping target Multi-User System.
(Systemd 系统日志)
应用级提示 (游戏服务器):
[INFO] Server shutting down in 60 seconds! Saving data...
[INFO] Server shutting down in 10 seconds!
Goodbye!
特点 信息友好,有倒计时,明确说明了关闭的原因和发起者。
这是最需要关注的情况,提示信息通常是错误报告(Error Log),形式多样。
Segmentation fault (核心已转储)
提示Segmentation fault (core dumped)
含义 程序试图访问不属于它的内存空间,这是最常见的严重错误之一,通常是代码bug(如空指针解引用、缓冲区溢出)导致。
段错误/总线错误 (Segmentation Fault/Bus Error)
提示 类似上面,是内存访问错误。
异常/断言失败 (Exception/Assertion Failed)
提示terminate called after throwing an instance of 'std::runtime_error'
提示Assertion failed: (i < size()), function operator[], file vector.hpp, line 42.
含义 程序中的异常没有被捕获,或者断言条件检查失败。
特定软件的错误信息
MySQL:[ERROR] mysqld got signal 11 ;
或[ERROR] InnoDB: Assertion failure in file ...
Java应用 (如Minecraft):java.lang.NullPointerException: Cannot invoke "String.toString()" because "foo" is null
Node.js:internal/fs/utils.js:269 throw err; ^ Error: EACCES: permission denied, open '/etc/config.json'
资源耗尽
提示Out of memory: Kill process 1234 (java) score xxx or sacrifice child
(被系统OOM Killer杀死)
提示too many open files
(打开文件数超出限制)
特点 信息通常是红色或高亮的错误日志,包含“Error", "Fatal", "Exception", "signal 11"等关键词,并常有堆栈跟踪(Stack Trace)信息,用于开发者调试。
服务器进程可能被外部命令或系统杀死。
用kill
命令:
kill -9 <PID>
(SIGKILL)无任何提示,强制立即终止,进程没有机会处理这个信号。
kill -15 <PID>
(SIGTERM) 温和的终止,进程会收到信号并尝试自行清理后退出,可能会输出正常关闭的日志,也可能输出错误日志,取决于程序如何响应此信号。
被系统管理器 (如 Systemd) 终止:
systemctl stop nginx.service
会发送SIGTERM,然后看超时后再发SIGKILL,日志会记录在journalctl -u nginx.service
中。
有时不是服务器退了,而是你被断开了。
SSH 连接断开:
Connection to 192.168.1.1 closed by remote host.
(服务器主动断开)
Connection reset by peer.
(网络问题或连接被重置)
Read from socket failed: Connection timed out.
(网络超时)
客户端与服务器程序断开:
Disconnected from server.
Lost connection to the server.
Could not connect: No route to host.
当服务器退出时,你应该:
1、查看日志!查看日志!查看日志! 这是最重要的一步。
系统日志:journalctl -xe
(Systemd系统)
应用日志: 到你的服务器软件配置的日志目录下查找,如/var/log/nginx/error.log
,/var/log/mysql/error.log
等。
2、根据最后几条错误信息判断原因,如果是“Segmentation fault"或"Exception”,通常是程序自身bug,如果是“Out of memory”,则需要增加内存或优化程序。
3、确认退出方式: 是正常关闭还是意外崩溃?正常关闭看计划任务或管理员操作记录;意外崩溃重点分析错误日志和堆栈跟踪。
4、对于在线服务, 建议配置监控和自动重启工具(如 Systemd, Supervisor, PM2),以便在服务崩溃时第一时间拉起并记录崩溃信息。
希望这个详细的分类能帮助你更好地理解服务器退出的原因!
文章摘自:https://idc.huochengrm.cn/js/15956.html
评论