写在前面
事情是这样的:在周末,笔者正在学习使用自己的云服务器搭载nginx服务,部署前端项目,结果错误了配置SSHD,导致再次连接SSH控制台、SFTP等工具都失败了。本想借助VCN修改SSHD配置,但是VCN控制台也是一页静止的图画,输入不了任何文字,查询任何资料都没有结果。
折腾了一个下午后,偶然的一次的重启服务器,发现VCN又可以正常使用了,借此我恢复了默认的SSHD配置,SSH又可以正常使用了......
回想起自己总是掉网卡的电脑,经过一次重启之后又可以正常连接网络的烦人经历,好奇重启这一操作为什么就可以解决某些问题。询问了自己的一位学长,这其中的原因大致是这些,本篇篇幅较短,只当做是自己的日常学习记录:
进程重启恢复程序
重启会终止当前正在运行的进程,并重新启动它们。进程是计算机系统中运行的程序的实例。有时,进程可能会崩溃、冲突或进入异常状态,导致应用程序无法正常工作。通过重启,这些异常状态的进程会被终止,并以初始状态重新启动。这有助于解决进程相关的问题,例如僵尸进程、死锁或资源冲突等。
僵尸进程(Zombie Process)是指在操作系统中已经完成执行任务但仍然保留在进程表中的一种特殊进程状态。当一个进程完成执行后,它会向其父进程发送一个终止信号,父进程接收到信号后应该调用
wait()或waitpid()系统调用来获取子进程的退出状态并进行善后处理。如果父进程没有正确处理子进程的退出状态,子进程就会变成僵尸进程。 僵尸进程的存在通常是由于父进程未及时调用wait()或waitpid()来回收子进程的资源和状态信息。如果父进程长时间不处理僵尸进程,那么系统中可能会积累大量的僵尸进程,占用了进程表中的资源。
配置刷新专治手贱
系统和应用程序的配置文件包含了它们的设置和参数。有时,配置文件可能会被修改或损坏(说的就是那些喜欢瞎改乱动配置文件的人),导致系统或应用程序出现异常行为。重启可以重新加载配置文件,并将更改应用到系统或应用程序中。这有助于消除配置错误或异常引起的问题,使系统恢复到正确的设置。
或许每一种系统的设计者都会考虑到操作者误操作的情况发生,因此在部分系统当中,系统为了正常运行,是可以自己恢复默认的配置的。
资源释放重新分配内存
关于内存的问题应该是最不易察觉到的了。
我们都知道内存是计算机系统中重要的资源之一。如果应用程序或进程在运行过程中过度占用内存或未正确释放已使用的内存,可能会导致内存不足或内存溢出错误——可能导致应用程序崩溃、系统变慢或无法响应。
说到内存溢出,进一步地,我们要提到一个概念——资源泄露。程序开发中,资源泄漏是指在使用完资源后未正确释放或回收资源的情况。这可能包括打开的文件句柄、数据库连接、网络连接或内存等。当资源泄漏严重时,系统的可用资源会逐渐减少,最终导致系统性能下降或崩溃。
这时,我们可以通过释放这些资源来使得系统可以重新获得这些资源并将其分配给其他需要的任务,从而改善系统的性能和稳定性。
除此之外,还有文件句柄、并发编程等资源问题,由于笔者知识水平有限,只能暂且聊到这里了orz
小结
虽然很不想承认,但有时重启就是可以解决很多问题。但如果我们一遇到问题都要重启一遍主机/程序,所花费的时间开销也是没有必要的。因此,重启解决的总是表面的问题,程序崩溃/主机连接失败的更深层次的问题,还有待去探究。