linux宕机,linux关闭端口

大家好,今天小编来为大家解答linux宕机这个问题,linux关闭端口很多人还不知道,现在让我们一起来看看吧!

linux 宕机处理

按住 Alt-Print的时候就相当于按住了 Sys Rq键,这个时候输入的一切都会直接由 Linux内核来处理,它可以进行许多低级操作。这个方法可以在各种情况下安全地重启计算机,具体操作如下:

1、shutdown命令安全地将系统关机。在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭。并且login指令会被冻结,即新的用户不能再登录。

2、halt——最简单的关机命令,其实halt就是调用shutdown-h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核。

3、reboot的工作过程差不多跟halt一样,不过它是引发主机重启,而halt是关机。它的参数与halt相差不多。

4、init是所有进程的祖先,它的进程号始终为1, init 0为关机,init 1为重启。

如何查找Linux死机原因

因为 Linux广泛用于生产环境,所以每一次宕机都会引起相当大的损失。它 Uptime达到上百天也许你习以为常,但是只要 Down十几秒,就会立即急的满头大汗。真的很难以想象证交所宕机会怎么样,也许全国股民会闹翻天。所以我们需要一些小技巧来查找死机的原因,从而避免死机或者内核崩溃。(话说 windows天天蓝屏也没感觉呀:-o难道已经麻木了:oops:)请注意:以下方法可能不适用于 Server,因为桌面环境和 Server还是有很大区别的。 X Crash事实上 Linux内核很少出错,平常我们所遇到的“死机”都是 X无响应造成的错觉。那 X没响应了应该怎么处理呢?通常套路是 Ctrl+ Alt+F7(F8)切换到某个 tty,然后用 root登陆,执行 top查看吃资源最多的程序,然后使用 pkill/kill/killall等命令杀死该程序。或使用组合键 Ctrl+ Alt+ Backspace重启 X(黑日白月注:这个快捷键组合在最新的 Ubuntu和 Fedora中关闭)。如果偶遇切换 tty失败或者没响应,可以试着使用 SSH登陆此电脑,然后再杀死程序。也许只是 X不响应,而内核和 SSH daemon仍然工作,故此可以实施此法。 arch配置 SSH daemon万一X不给力,各种方法试了无效,又没有办法通过 SSH登陆到此 pc,那怎么办呢?别着急,我们还有万能的“reisub”大法。不过在启用前先要激活内核 sysrq功能(via)。系统启动时执行:echo“1”>/proc/sys/Kernel/sysrq或者修改/etc/sysctl.conf文件,设置 Kernel.sysrq= 1。系统异常时依次按下 Alt+sysrq+{reisub},然后系统会自动重启。(有关 sysrq请看:Linux死机了怎么办?)不建议长按 Power按键强制关机,有可能损坏硬件或者丢失数据,甚至导致磁盘坏道! X崩溃而内核完好常见的症状有:程序无响应,花屏,鼠标移动指针无动作,键盘输入没有识别等。但后台的音乐可以正常播放,或者键盘 Caps Lock/Num Lock/Scroll Lock按键按后对应 LED可以正常亮灭。遇到此种情况可以使用上述方法重启 X或者电脑即可恢复正常。 Application Crash这个比较常见,但是也是相当难解决的。因为 Linux上的应用软件大部分都是开源的,所以可能没有超高的稳定性。也许由于库的缺少或者版本错误,或者代码的 Bug,都有可能导致程序出现异常。一般遇到这种问题,建议检查配置文件是否正确,对配置文件的错误修改可能导致程序的运行失败。如果您确信配置文件没有错误但是程序仍然异常,可以尝试把配置文件删除(注意备份!),然后再次打开软件尝试。

由Docker BUG引起的Linux宕机事故及解决办法

1背景

某运营商业务系统的服务器发生宕机,针对本次宕机事故进行排查。

【文章福利】小编推荐自己的Linux内核源码交流群:【 869634926】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!前50名可进群领取,并额外赠送一份价值600的内核资料包(含视频教程、电子书、实战项目及代码)!

学习直通车: Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

2解决过程

我们都知道kdump是在Linux系统崩溃、死锁、死机的时候用来转储内存运行参数的服务。系统崩溃后内核无法正常工作,这时kdump会产生一个用于capture当前运行信息的内核,将此时的内存中的所有运行状态和数据信息收集到vmcore文件中,收集完成后系统将自动重启。本次使用crash分析linux kdump日志。

进入crash控制台

PANIC为内核崩溃类型,这里是一个BUG,内核无法处理空指针

在crash查看log,发现有很多Out-of-Memory

通过bt查看系统崩溃前内核依次调用的一系列函数,查看内核在何处崩溃。以"#数字"开头的行为调用堆栈:

通过bt分析,可以定位到崩溃前的一个exception是ip寄存器RIP的异常,使用dis命令来看一下该地址的反汇编结果:

从上面的反汇编结果中,我们看到问题出在ip6mr.c文件1616行代码,翻开linux源码的相应位置:

撸内核源码+ Google

通过走读Linux源码和Google,发现当系统创建新的namespaces时,会因为ip6mr_sk_done的值为空而引起系统混乱,从而导致内核无法正常分配内存,所以我们在log文件中看到了许多Out-of-Memory。

在Kubernetes环境,提到namespaces就能想到docker,因为namespaces是docker的核心技术之一,容器的资源隔离由namespace来实现。

通过检查docker的网络,发现其中一个子网为空

解决办法

内核配置加入"net.ipv6.conf.all.disable_ipv6= 1",关闭 IPV6,防止触发 docker BUG;

从内核的层面看,目前该Issue仍然没有close。在开启IPv6的环境,docker为什么会出现这个BUG,后续有空再研究,欢迎大家指正。

3END

Linux内核虽然号称“不死族”,几乎不会崩溃或死机,但也有特殊情况,设备也有一定的使用周期,系统的高可用还是要的。

虽然你单点运行服务时很帅,但是你处理故障时的样子真的很狼狈。

往期精彩推荐:

最新干货!使用eBPF LSM热修复Linux内核漏洞

盘点那些Linux内核调试手段——内核打印

Linux环境下网络分析和抓包是怎么操作的?

浅谈ARM64Linux内核页表的块映射

Linux性能观测之dstat命令详解

阅读剩余
THE END