BAT大佬分享:Linux 工程师的 6 类好习惯和 23 个教训

2023-10-27

一、线上操作规范

1. 测试使用

当初学习 Linux 的使用,从基础到服务到集群,都是在虚拟机做的,虽然老师告诉我们跟真机没有什么差别,可是对真实环境的渴望日渐上升,不过虚拟机的各种快照却让我们养成了各种手贱的习惯,以致于拿到服务器操作权限时候,就迫不及待的想去试试。

记得上班第一天,老大把 root 密码交给我,由于只能使用 PuTTY,我就想使用 XShell,于是悄悄登录服务器尝试改为 XShell + 密钥登录,因为没有测试,也没有留一个 SSH 连接,所有重启 SSHD 服务器之后,自己就被挡在服务器之外了,幸好当时我备份了 sshd_config 文件,后来让机房人员 cp 过去就可以了,幸亏这是一家小公司,不然直接就被干了……庆幸当年运气比较好。

第二个例子是关于文件同步的,大家都知道 rsync 同步很快,可是删除文件的速度大大超过了 rm -rf,在 rsync 中有一个命令是以某目录为准同步某文件(如果第一个目录是空的,那么结果可想而知),源目录(有数据的)就会被删除,当初我就是因为误操作,以及缺乏测试,就目录写反了,关键是没有备份……生产环境数据被删了,没备份,大家自己想后果吧,其重要性不言而喻。

2. Enter 前再三确认

关于 rm -rf /var 这种错误,我相信手快的人,或者网速比较慢的时候,出现的几率相当大。

当你发现执行完之后,你的心至少是凉了半截。

大家可能会说,我按了这么多次都没出过错,不用怕,我只想说,当出现一次你就明白了,不要以为那些运维事故都是在别人身上,如果不注意,下一个就是你。

3. 切忌多人操作

我在的上一家公司,运维管理相当混乱,举一个最典型的例子吧,离职的好几任运维都有服务器 root 密码。

通常我们运维接到任务,都会进行简单查看。如果无法解决,就请求他人帮忙,可是当问题焦头烂额的时候,客服主管(懂点 Linux)、网管、你的上司一起调试一个服务器。

当你各种百度,各种对照完了发现,你的服务器配置文件,跟上次你修改不一样了,然后再改回来,然后再谷歌,兴冲冲发现问题,解决了,别人却告诉你,他也解决了,修改的是不同的参数……这样我就真不知道哪个是问题真正的原因了,当然这还是好的,问题解决了,皆大欢喜,可是你遇到过你刚修改的文件,测试无效,再去修改发现文件又被修改的时候呢?真的很恼火,切忌多人操作。

4. 先备份后操作

  • 养成一个习惯,要修改数据时,先备份,比如 .conf 的配置文件。
  • 另外,修改配置文件时,建议注释原选项,然后再复制,修改。
  • 再者说,如果第一个例子中,有数据库备份,那 rsync 的误操作不久没事了吧。
  • 所以说丢数据库非一朝一夕,随便备份一个就不用那么惨。

二、涉及数据

1. 慎用 rm -rf

网上的例子很多,各种 rm -rf /,各种删除主数据库,各种运维事故……一点小失误就会造成很大的损失。如果真需要删除,一定要谨慎。

2. 备份大于一切

本来上面都有各种关于备份的内容,但是我想把它划分在数据类再次强调,备份非常之重要哇~

我记得我的老师说过一句话,涉及到数据何种谨慎都不为过。

我就职的公司有做第三方支付网站和网贷平台的。第三方支付是每两个小时完全备份一次,网贷平台是每 20 分钟备份一次。我不多说了,大家自己斟酌吧

3. 稳定大于一切

其实不止是数据,在整个服务器环境,都是稳定大于一切,不求最快,但求最稳定,求可用性。

所以未经测试,不要在服务器使用新的软件,比如 Nginx + PHP – FPM,生产环境中 PHP 各种挂,重启或者换 Apache 就好了。

4. 保密大于一切

现在各种艳照门漫天飞,各种路由器后门,所以说,涉及到数据,不保密是不行的。

三、涉及安全

1. SSH

  • 更改默认端口(当然如果专业要黑你,扫描下就出来了)
  • 禁止 root 登录
  • 使用普通用户 + key 认证 + sudo 规则 + IP 地址 + 用户限制
  • 使用 HostDeny 类似的防爆力破解软件(超过几次尝试直接拉黑)
  • 筛选 /etc/passwd 中 login 的用户

2. 防火墙

防火墙生产环境一定要开,并且要遵循最小原则,drop 所有,然后放行需要的服务端口。

3. 精细权限和控制粒度

能使用普通用户启动的服务坚决不使用 root,把各种服务权限控制到最低,控制粒度要精细。

4. 入侵检测和日志监控

  • 使用第三方软件,时刻检测系统关键文件以及各种服务配置文件的改动。比如 /etc/passwd,/etc/my.cnf,/etc/httpd/con/httpd.con 等。

  • 使用集中化的日志监控体系,监控 /var/log/secure,/etc/log/message,FTP 上传下载文件等报警错误日志。

  • 另外针对端口扫描,也可以使用一些第三方软件,发现被扫描就直接拉入 host.deny。这些信息对于系统被入侵后排错很有帮助。有人说过,一个公司在安全投入的成本跟他被安全攻击损失的成本成正比,安全是一个很大的话题。

也是一个很基础的工作,把基础做好了,就能相当的提高系统安全性,其他的就是安全高手做的了。

四、日常监控

1. 系统运行监控

好多人踏入运维都是从监控做起,大的公司一般都有专业 24 小时监控运维。系统运行监控一般包括硬件占用率,常见的有,内存,硬盘,CPU,网卡,OS 包括登录监控,系统关键文件监控。

定期的监控可以预测出硬件损坏的概率,并且给调优带来很实用的功能。

2. 服务运行监控

服务监控一般就是各种应用,Web,DB,LVS 等,这一般都是监控一些指标,在系统出现性能瓶颈的时候就能很快发现并解决。

3. 日志监控

这里的日志监控跟安全的日志监控类似,但这里一般都是硬件,OS,应用程序的报错和警报信息。

监控在系统稳定运行的时候确实没啥用,但是一旦出现问题,你又没做监控,就会很被动了。

五、性能调优

1. 深入了解运行机制

其实按一年多的运维经验来说,谈调优根本就是纸上谈兵,但是我只是想简单总结下,如果有更深入的了解,我会更新。

在对软件进行优化之前,要深入了解一个软件的运行机制,比如 Nginx 和 Apache。大家都说 Nginx 快,那就必须知道 Nginx 为什么快,利用什么原理,处理请求和 Apache 比较,并且要能跟别人用浅显易懂的话说出来,必要的时候还要能看懂源代码,否则一切以参数为调优对象的文档都是瞎谈。

2. 调优框架以及先后

熟悉了底层运行机制,就要有调优的框架和先后顺序,比如数据库出现瓶颈,好多人直接就去更改数据库的配置文件,我的建议是,先根据瓶颈去分析,查看日志,写出来调优方向,然后再入手,并且数据库服务器调优应该是最后一步,最先的应该是硬件和操作系统,现在的数据库服务器都是在各种测试之后才会发布,适用于所有操作系统,不应该先从它入手。

3. 每次只调一个参数

每次只调一个参数,这个相信大家都了解,调的多了,你自己就迷糊了。

4. 基准测试

判断调优是否有用,和测试一个新版本软件的稳定性和性能等方面,都必须要进行基准测试,测试要涉及很多因素。

测试是否接近业务真实需求这要看测试人的经验了,相关资料大家可以参考《 高性能 MySQL 》第三版。

我的老师曾说过,没有放之四海皆准的参数,任何参数更改任何调优都必须符合业务场景。所以不要再谷歌什么什么调优了,对你的提升和业务环境的改善没有长久作用。

六、运维心态

1. 控制心态

很多 rm -rf /data 都在下班的前几分钟,都在烦躁的高峰,那么你还不打算控制下你的心态么?

有人说了,烦躁也要上班,可是你可以在烦躁的时候尽量避免处理关键数据环境。越是有压力,越要冷静,不然会损失更多。

大多人都有 rm -rf /data/mysql 的经历,发现被删除之后,那种心情你可以想象一下,可是如果没有备份,你急又有什么用,一般这种情况下,你就要冷静想下最坏打算。对于 MySQL 来说,删除了物理文件,一部分表还会留在内存中,所以断开业务,但是不要关闭 MySQL 数据库,这对恢复很有帮助,并使用 dd 复制硬盘,然后再进行恢复

当然了大多时候你就只能找数据恢复公司了。试想一下,数据被删了,你各种操作,关闭数据库,然后修复,不但有可能覆盖文件,还找不到内存中的表了。

2. 对数据负责

生产环境不是儿戏,数据库也不是儿戏,一定要对数据负责。不备份的后果是非常严重的。

3. 追根究底

很多运维人员比较忙,问题解决后就不会再管了。记得去年一个客户的网站老是打不开,经过 PHP 代码报错,发现是 session 和 whos_online 损坏,前任运维是通过 repair 修复的,我就也这样修复了,但是过了几个小时,又出现了。反复三四次之后,我就去谷歌搜索数据库表莫名损坏原因:

  1. MyISAM 的 Bug;
  2. MySQL Bug;
  3. MySQL 在写入过程中被 kill。

最后发现是内存不够用,导致 OOM kill 了 mysqld 进程,并且没有 swap 分区,后台监控内存是够用的,最终通过升级物理内存解决了。

4. 测试和生产环境

在重要操作之前一定要看自己所在的机器,尽量避免多开窗口。

 

-----------------

我是良许,世界500强外企 Linux 开发工程师,专业生产 Linux 干货。欢迎关注我的公众号「良许Linux」,回复「1024」获取最新最全的技术资料,回复「入群」进入高手如云技术交流群。

img

img

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BAT大佬分享:Linux 工程师的 6 类好习惯和 23 个教训 的相关文章

  • 【程序】程序员与中秋节的约会

    中秋节 这个盛满诗意与传说的节日 向来是人们心中的佳节 然而 当程序员这个神秘群体与之碰撞 节日的氛围便注入了别样的色彩 程序员的世界以代码为语言 而中秋的团圆与诗意 也能在代码中找到安放之处 一 中秋的代码之美 作为程序员 我们或许更习惯
  • 安装驱动时出现“INF中的服务安装段落无效”

    今天安装ti开发板的驱动 在安装虚拟串口时出现 INF中的服务安装段落无效 以致驱动未安装成功 接下来我就说说我的解决过程 因为提示的是 inf中的 了解驱动的就知道有个扩展名为inf的文件 于是准备 打开驱动目录中的inf文件 如下图 有
  • 尤雨溪谈Vue.js :缔造自由与真我

    尤雨溪 Evan You 前端框架Vue js 作者 独立开源开发者 现居美国新泽西 曾就职于 Google Creative Labs 和 Meteor Development Group 由于工作中大量接触开源的 JavaScript
  • 安装ChormeOS

    一 准备工具 16G的U盘一个 支持UEFI启动的电脑 二 下载工具 Ubuntu Mate 镜像下载 https ubuntu mate org download Rufus写盘工具 https rufus ie Chrome 安装框架下
  • 职能管理,最关键的是找到衡量价值的指标

    最近一位同事过来和我讨论职能管理的经验 说实话 我是不敢妄谈经验的 自己也没有取得如何的成就 盲目的建议 会出现相反的效果 不过我们的交流还是很有收获的 因为我们发现了很多共同的认知 并且这些认知在小范围内还是得到认可的 第一 定位职能的价
  • 【Cocos\杂谈】Windows下Cocos2d-x 3.14环境搭建

    哈哈 我又回来啦 消失了几个月了 不知道各位观众老爷是否想念我了 经过了考研和期考双重洗礼 放假了终于能够重新回到学习开发的阵地上来了 近期呢 我这边做毕业设计 关于SpringMvc Spring Hibernate的SSH框架毕业设计
  • GNU-ld链接脚本浅析

    0 Contents 1 概论 2 基本概念 3 脚本格式 4 简单例子 5 简单脚本命令 6 对符号的赋值 7 SECTIONS命令 8 MEMORY命令 9 PHDRS命令 10 VERSION命令 11 脚本内的表达式 12 暗含的连
  • ubuntu pycharm 无法输入中文

    很多人反馈是和ubuntu20 04有关 但是其实应该是和pycharm20 2 3有关 只需要替换掉版本里面的jbr即可 1 下载jbr https confluence jetbrains com pages viewpage acti
  • 工作能力构架框架图——我对工作的理解

    工作架构图 最近对工作内容进行了一次review 归纳如下 做简单地分享 job层 job层是我们最容易理解的一层 即我们平时的工作title 可能是销售 售前 产品等等 那么做产品的人能不能做售前呢 我想 肯定可以 因为在人力资源市场上
  • 走得最慢的人,只要他不丧失目标,也比漫无目的地徘徊的人走得快。

    走得最慢的人 只要他不丧失目标 也比漫无目的地徘徊的人走得快 莱辛 有着坚定明确的目标 且知道如何做能达成目标 没有追求 未来迷茫 或许大家都想当第一种人 但可能在不知不觉中就成了第二种人 自己也不知道 或是因为目标太大 难以后继 最终失却
  • 智慧园区参观纪要

    首都国企开放日期间 云梯联盟举办了 深入走进创新主体 活动 昨天参观了牡丹集团旗下的智慧园区 现在做一个简单的纪要 1 国企战略转型经历的四个阶段 第一个阶段是初创时期实施 一体化 战略 发展园区服务业 第二个阶段是起步时期实施 一体两翼
  • 西南石油大学第三届信息安全大赛之QR码

    这几天在玩这个 发一下关于QR码的程序吧 题目如下 题目标题说明是QR码 看来是需要用程序来把上面的数字来生成QR码 代码如下 基于OPENCV来实现的 由于图片太小 这里把图片放大了十倍 include
  • 《我在大学挺好的》之——选择了计算机专业

    大家好 我是小鱼儿 Hello 各位铁汁们 今天咱不聊技术 谈我是为什么选择计算机专业 同时聊聊我的最近一年的经历 以及我为啥要写博客 大家完全可以把这篇文章看作是一次闲谈 哈哈 目录 我为啥要选择计算机专业 我最近半年经历了什么 我的大学
  • 读《企业中的开放源代码》有感

    文章目录 开源代码的益处 开源的本质 开源是一门学科 开源代码的益处 学习出色编码技能的最佳方法是开发开源项目 注意是开发而不是阅读 因为可以研究该领域内顶尖编码员所采用的实践 以更快的方式启动新项目 从此没有必要再闭门造车 开源的本质 我
  • 打开c语言生成exe文件,出现闪退的解决方法

    额 在给大一学弟上第一节实验课的时候 经常有学弟问我 为什么打开c语言生成的exe文件 立马闪退 起初个别问的时候 我只是简单的说明程序运行完了 就自动关了 现在先不用涉及这个 以后自然懂了 但是后来问的人多了 我就觉得有必要先给他们提一下
  • QQ个人文件夹保存位置无效

    必须写文章谴责QQ这种垃圾软件 B 了 dog 腾讯家的QQ真没几个好用的 之前是PC版QQ群文件跳转回来显示错误bug 之后是手机QQ看点等各种消息bug 现在隔了几年了还有 个人文件夹保存位置无效 根本没有改进 QQ个人文件夹保存位置无
  • 汇率之谜:揭秘黄金折算与真实人民币汇率的神秘差距

    导言 人民币是中国的官方货币 其汇率在国际贸易和金融市场中扮演着至关重要的角色 然而 观察到黄金折算的人民币汇率与真实人民币汇率之间存在显著差距 本文将探讨这一差距的原因以及它所暗示的经济现象 汇率基础知识 首先 让我们了解一下汇率的基础知
  • 从12306验证码看人工智能未来发展

    事件背景 最近12306对登陆验证过程进行了升级 让很多抢票软件失效 也引起众多网友的热议 如图 用户在登陆时需要选择和题目给出的描述相同的图片 新的验证方式推出后 不少网友也在网上发表看法 大部分网友表示此举很给力 黄牛抢票软件失效了 对
  • rt-thread studio中新建5.02版本报错

    先吐槽一下 rt thread studio出现BUG真多 好多时间都是在找BUG 但里面用好多控件还是挺好用的 真是又爱又恨 所以一般使用功能不多的话还是用keil多一点 创建5 02版本工程之后直接进行编译 直接会报下面这个错误 资源
  • 为什么上下文学习有用

    上下文学习与Prompt learning 类似 但是又不完全一样 预训练的大模型不需要进行微调 只需要根据提示 也就是上下文 in context 就能够完成特定的任务 这一点在ChatGPT中体现的尤为明显 当我们与大模型进行对话的时候

随机推荐

  • open【部署、使用教程】

    目录 1 创建证书 2 安装openVPN Server端并配置 3 将证书移动到相对路径 4 开启内核转发功能 否则会无法启动openVPN 5 启动服务 加入开机自启 6 启动后服务端会生成一个tun0的虚拟网卡 用于不同网段之间相互通
  • 让CSS flex布局最后一行列表左对齐的N种方法

    写在前面 精简版 可以直接移步我的另一篇博客 适用于行列数都不确定的情况 https blog csdn net HD243608836 article details 129854063 一 justify content对齐问题描述 在
  • 通信总线协议一 :UART

    文章目录 通信总线协议一 UART 1 通信基础 1 1 并行 串行 1 2 单工 双工 1 3 同步 异步 1 4 波特率 2 Uart通信协议 3 硬件连接 4 uart存在的问题 通信总线协议一 UART 1 通信基础 1 1 并行
  • 如何在线将Ubuntu 18.04升级到Ubuntu 20.04

    将Ubuntu 18 04升级到Ubuntu 20 04 在将系统升级运行到下一个主要发行版本之前 请确保已备份当前系统 以使您可以恢复原状 以防万一 备份过程不在本指南的范围内 运行系统更新 首先将Ubuntu 18 04系统软件包更新和
  • 深入学习jquery源码之trigger()与triggerHandler()

    深入学习jquery源码之trigger 与triggerHandler trigger type data 概述 在每一个匹配的元素上触发某类事件 这个函数也会导致浏览器同名的默认行为的执行 比如 如果用trigger 触发一个 subm
  • C#异步编程案例学习——异步加载大资源文件1 之 使用 BeginInvoke 与 EndInvoke

    C 异步编程案例学习 异步加载大资源文件1 之 使用 BeginInvoke 与 EndInvoke C 中 BeginInvoke 与 EndInvoke 的一个简单的使用案例 异步编程模型模式 APM 异步编程中的 BeginInvok
  • CentOS 6.4利用xampp安装bugfree3

    1 下载xampp 安装 http www apachefriends org zh cn xampp html 直接执行 run文件安装 默认会安装到 opt lampp 2 启动xampp root localhost opt lamp
  • 米哈游服务器位置,米哈游(米哈游账号中心系统)

    只要绑定了手机号就不要紧了 别人也无法用这个邮箱改密码 别人用也是无法验证 去官网下载崩坏3 不要在小米游戏这种第三方应用市场下载 有人买了米哈游的账号被找回吗 我买的三无号直接登不上 登陆的时候提示说没有这个账号 所以最好不要买 自己注册
  • 对SFBC空频编码和FSTD-SFBC频率切换分集与空频编码的MIMO系统误码率matlab仿真

    目录 一 理论基础 二 核心程序 三 测试结果 一 理论基础 Space Frequency Block Code SFBC 是TD LTE系统中的一种抗干扰技术 其基本原理与Wimax中基于Alamuti 编码的STBC类似 LTE标准中
  • 服务器如何安装 宝塔国外版本

    linux服务器如何安装 宝塔国外版本 centos安装方式 yum install y wget wget O install sh http www aapanel com script install 6 0 en sh bash i
  • fiddlerJScript脚本工具类,轻松写出fiddler 脚本,完成数据抓取

    fiddler是常用的抓包工具 fiddlerJScript脚本是用JScript NET 编写的 使用起来和JS 还是有很多区别的 目前网络上的文章比较分散 有些内容也比较旧 对新手不友好 所以自己动手写了一个工具类 封装了一些常用的方法
  • 进程概念(详解)

    进程概念 基本概念 进程的描述 pcb pcb task struct中内容分类 查看进程 查看进程的信息 通过系统调用来查看进程的标识符 创建进程 fork 杀掉进程 kill 进程状态 特殊进程 僵尸进程 孤儿进程 进程的优先级 PRI
  • java获取季度日期

    获取季度第一天和最后一天 获取当前季度日期 方式一 param dateStr 当前日期字符串 默认为当前日期 return String 季度起始日期 季度结束日期 public static String getSeasonDay St
  • Nginx+Tomcat搭建高性能负载均衡集群

    本文转载至 http blog csdn net wang379275614 article details 47778201 一 工具 nginx 1 8 0 apache tomcat 6 0 33 二 目标 实现高性能负载均衡的Tom
  • Node.js详解(四):连接MongoDB

    文章目录 一 安装MongoDB访问驱动 二 连接数据库 三 添加数据 四 添加多条数据 五 修改数据 六 查询数据 1 查询单条记录 2 查询多条记录 七 删除数据 八 完整示例代码 1 路由 Api 接口 2 运行结果 MongoDB
  • 从不懂到会用,PID从理论到实践~笔记

    从不懂到会用 PID从理论到实践 哔哩哔哩 bilibili PID的适用性 一阶 二阶的线性系统 前馈系统只是对干扰做一个补偿 单闭环系统 双闭环控制系统 一个是还没发生干扰但我知道你会干扰进行反应 一个是看到你对我干扰后并发生后才进行反
  • Nginx重中之重的知识点

    1 反向代理 proxy pass http baidu com location proxy pass http atcui com 代理服务器的概念 代理服务器 客户机在发送请求时 不会直接发送给目的主机 而是先发送给代理服务器 代理服
  • wenstorm 快捷键(java)

    向下复制一行 Duplicate Lines Ctrl Down 修改变量名与方法名 Alt Shift R 向下移动行 Alt Down 显示设置窗口 Ctrl Alt S 向上开始新的一行 Start New Line before c
  • Vscode 调试arm64 linux内核

    对于linux内存系列的阅读和测试记录 https zhuanlan zhihu com p 105069730 https zhuanlan zhihu com p 510289859 搭建arm64内核调试环境 安装工具 sudo ap
  • BAT大佬分享:Linux 工程师的 6 类好习惯和 23 个教训

    一 线上操作规范 1 测试使用 当初学习 Linux 的使用 从基础到服务到集群 都是在虚拟机做的 虽然老师告诉我们跟真机没有什么差别 可是对真实环境的渴望日渐上升 不过虚拟机的各种快照却让我们养成了各种手贱的习惯 以致于拿到服务器操作权限