服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 原本可幸免于难的Linux故障情况如何避免?你也可以搞定

原本可幸免于难的Linux故障情况如何避免?你也可以搞定

2024-01-11 16:10深入理解Linux Linux

本文总结操作系统和 Linux 下容易发生的各种意外损坏情况,以及如何提前检测和预防。

上一篇复盘和总结了Linux下容易发生的意外损坏情况、如何提前检测和预防的思路。

Linux系统一般在以下方面出现潜在问题而影响正常工作:

  • 硬件故障;
  • 内核错误;
  • 文件系统损坏;
  • 软件冲突;
  • 系统更新问题;
  • 恶意软件;
  • 过度负载;
  • 配置错误。

本文继续分析第4-8的问题。

原本可幸免于难的Linux故障情况如何避免?你也可以搞定

软件冲突

Linux下的软件冲突有哪些表现?

软件冲突1:依赖库缺失,软件找不到依赖的函数

比如很多开发人员,从源码编译方式安装了一些基础的类库到自定义库路径下,然后发现系统和桌面的其他软件启动异常。以下是 QT 相关的软件启动失败的报错日志:

…… libQt5XcbQpa.so.5: undefined symbol: FT_Property_Set

根据关键词搜索得到一大堆结果,大家往往发现网上有各种有效、无效的解决办法,各说一套

原本可幸免于难的Linux故障情况如何避免?你也可以搞定

对此,我的观点是,建议Linux的使用者要知其然,知其所以然,要深入理解Linux问题的根源。并从根源上解决,举一反三在发生类似问题后,也能自主解决。

比如上面的错误日志,如果是新安装了自己编译的库文件到系统目录后发生的问题,那么往往跟QT软件依赖的库(如libfreetype.so)被替换为不兼容的版本引起的。FT_Property_Set 关键词,可帮我们确定问题范围与freetype相关 也可受到 /etc/ld.so.conf.d/.conf 的文件中的。

可以判断这个问题不是libfreetype.so库被删引起的,因为若是系统库libfreetype.so被删,那么Qt的报错将会类似required libfreetype.so library not found。

如何避免?可通过在局部使用LD_LIBRARY_PATH ,比如在脚本内、在命令行前面 以 LD_LIBRARY_PATY=自定义库的路径 +命令 的这种方式调用软件。就可以避免不同环境和库的相互干扰、污染的问题。

采用conda环境隔离、python的venv 环境隔离等方式;使用docker 容器环境运行不同软件、甚至在virtualbox等虚拟机运行不同软件;这些方式也可以帮助避免软件冲突的问题。

安装时的软件包冲突2:

比如centos的yum方式安装软件包时,提示错误尝过添加"--skip-broken"来跳过无法安装的软件包 或'--nobest'来不只使用软件包的最佳候选)

原本可幸免于难的Linux故障情况如何避免?你也可以搞定

原本可幸免于难的Linux故障情况如何避免?你也可以搞定

这类问题往往由于软件源配置存在多个不同版本的软件源,需要避免/etc/yum.d/*.repo 文件中存在重复的不同版本的仓库:

原本可幸免于难的Linux故障情况如何避免?你也可以搞定

否则通过yum安装指定软件名时,将提示版本冲突。

系统更新问题

Linux系统更新失败而导致的软件冲突,一旦发生,往往是比较严重的问题。所以小编建议,当大版本更新前,一定要做好系统配置文件和数据文件的异机备份。

一个好消息是,Deepin、Ubuntu等发行版,对系统升级、内核加装新版本等重大更新,更新后不会替换原始文件,而是在系统启动时另起一个引导菜单入口,这样新引导启动的系统就会是更新后的系统;老版本的系统内容仍然可在旧的引导入口进入。在新软件系统发生异常后,可以进入老系统软件继续使用。

恶意软件问题

恶意软件的问题、过度负载问题,往往运维人员遇到比较多。恶意软件也是系统过载、网络流量异常的元凶。恶意软件的入侵,除了人为安装了恶意软件,还有主动入侵,比如网站代码漏洞、系统软件对外服务漏洞(如nginx或nodejs软件漏洞)就可以被外界利用,向系统植入恶意软件。

对此,小编建议,在Linux下,启用防火墙、关闭非必要的对外端口、不要使用弱密码、及时更新已知存在漏洞的软件到安全的版本、不访问危险站点、通过容器等隔离工具进行存在风险的访问操作。

配置错误

Linux用户最常遇到的配置错误导致的系统问题,往往是添加修改了环境变量文件,影响了正常变量的访问效果。

对于Linux系统,环境变量分为系统级别变量、用户级别变量、脚本范围内的运行时环境变量。

写在 /etc/profile 中的 属于系统级别的全局脚本和环境变量。写在 ~/.bashrc 文件里的脚本和环境变量,将在用户shell或桌面登录后生效。而类似 tomcat 的startup.sh 等控制jvm启动过程的脚本内的变量,将只影响脚本范围内的软件。因此不会影响系统或用户其他软件的正常运行。例如 pycharm 的安装包,内涵 pycharm.sh [1],就是一个 .sh 文件,pycharm 的启动脚本,也是.sh文件,它把pycharm运行所需的库所在路径,通过脚本内的环境变量,让 pycharm 的最终二进制文件感知、从pycharm的当前子目录加载(如./lib/libmy.so)。

写在 /etc/ld.so.conf.d/xxxx.conf  里的会作用域 整个系统的 LD_LIBRARY_PATH 变量等效的动态库文件搜索路径。

总之,系统级别的配置文件尽量少改动,除非很清楚系统配置文件的内容原理。用户级别的配置文件可以改,修改后多测试。软件级别的配置文件可以按需改,因为不影响其他用户。

TIPs:

懂得软件开发的朋友们,还可以利用git功能,在修改配置之前,做一下版本管理。以备配置文件错误后,及时恢复。

参考资料:

[1]pycharm 的安装包,内涵 pycharm.sh : https://download.jetbrains.com.cn/python/pycharm-community-2023.2.5.tar.gz

原文地址:https://mp.weixin.qq.com/s?__biz=MzA3OTE1MDA2Mw==&mid=2450451073&idx=1&sn=dc16973f8aca371e33f7c3031c0e6d5f

延伸 · 阅读

精彩推荐
  • LinuxLinux从头学:所有编程语言中的栈操作,底层原理都在这里

    Linux从头学:所有编程语言中的栈操作,底层原理都在这里

    利用栈的后进先出特性,可以很方便的解决一些棘手的问题,以至于 CPU 单独分配了 push 和 pop 这两个命令来专门操作栈,当然了,还有其他一些辅助的栈操...

    IOT物联网小镇11062021-07-29
  • Linuxlinux shell 常用脚本语句语法收集 推荐

    linux shell 常用脚本语句语法收集 推荐

    linux shell常用脚本语句语法收集,1shell中的if语句语法,大多数情况下,可以使用测试命令来对条件进行测试。 ...

    Linux教程网3692020-04-01
  • Linuxlinux Bash脚本判别使用者的身份方法示例

    linux Bash脚本判别使用者的身份方法示例

    这篇文章主要介绍了linux Bash脚本判别使用者的身份方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    SolomonXie4062022-08-15
  • LinuxLinux如何修改文件打开数

    Linux如何修改文件打开数

    本文介绍了linux下修改文件打开数的方法,与linux文件描述符相关的内容,有需要的朋友参考下 ...

    Linux教程网7442019-11-11
  • LinuxLinux和windows中的换行符差异问题

    Linux和windows中的换行符差异问题

    LINUX的换行符在Windows记事本打开不换行或出现黑点是由于Linux和windows中的换行符差异问题造成的。 ...

    mkingdom5292019-12-26
  • Linuxlinux入门学习

    linux入门学习

    一、关于Linux 1、Linux干什么用? 首先,很少有人用Linux做桌面系统,因为Windows桌面系统已经足够好了。我们主要把Linux用作网络服务器的操作系统。如果你和...

    Linux教程网4332020-04-14
  • Linux在Linux服务器上安装Linux-Dash的教程

    在Linux服务器上安装Linux-Dash的教程

    这篇文章主要介绍了在Linux服务器上安装Linux-Dash的教程,Linux-Dash经常被用来监控web的负载情况,本文示例基于bash shell,需要的朋友可以参考下 ...

    服务器之家5612019-10-08
  • Linux如何使用 Linux Xargs 命令,看这篇就够了

    如何使用 Linux Xargs 命令,看这篇就够了

    Xargs命令构建并执行通过标准输入提供的命令。它接受输入并将其转换为另一个命令的命令参数。此功能在文件管理中特别有用,可与rm、cp、mkdir和其他类...

    雪竹聊技术7082023-11-22