http://xjjdog.cn 对200+原创文章进行了细致的分类,阅读更流畅,欢迎收藏。

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。

每一年,都会有删库跑路的新闻。现实中,删库容易,跑路难,从业者充满了泪水。

这些动作里面,并不总是存在主观的恶意,而是这些命令太危险了。线上操作时,一定要保持清醒的头脑,切记马虎大意。

你说你误操作的,谁信呢?

切记:

  • 严禁酒后登录线上服务器操作

  • 严禁吵架后情绪激动登录线上服务器操作

  • 严禁长时间加班后操作线上环境

  • 禁止在线上试验不熟悉的命令

  • 重要系统先做备份

1. 准备工作

在执行危险命令时,请深呼吸。首先执行ifconfig,或者ip addr命令,确认是在正确的服务器上。

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:16:3e:34:e9:a9 brd ff:ff:ff:ff:ff:ffinet 172.19.26.39/20 brd 172.19.31.255 scope global dynamic noprefixroute eth0valid_lft 313267185sec preferred_lft 313267185secinet6 fe80::216:3eff:fe34:e9a9/64 scope linkvalid_lft forever preferred_lft forever

这时候,再次深呼吸,然后执行pwd命令,确保自己是在正确的目录下面。

$ pwd
/etc/nginx

接下来,就可以看一下执行的命令,是不是危险指令。

2. rm -rf命令

-rf参数将递归删除文件,误删文件导致数据丢失,产生严重后果。如果多一个空格,或者 /没有补齐,或者文件有特殊符号,导致误删文件的误操作居多。

rm -rf ./* => rm -rf /
rm -rf abc/ => rm -rf abc /

执行rm命令,手速一定要慢。按<tab>补全,一定要等屏幕回显后操作。

另外,在脚本中,rm的坑也不小,比如:

rm -rf ${p}/*

如果p变量没有设置,就会是灾难性的后果,命令等同于rm -rf /。所以rm还有另外一条谨言:在脚本中执行rm的时候,请先判断相关的变量是否为空。

3. chmod命令

chmod是更改目录和文件权限用的,如果处理不当,会产生和rm一样的后果。

这里介绍一种非常霸道的恢复方法。在执行这个命令之前,先把所有文件的权限备份一下。这里用到getfacl这个命令。

getfacl -R / > chmod.txt

恢复的时候,执行

setfacl --restore=chmod.txt

它将回放这个文件的权限,有时候是救命的。

4. cat命令

cat命令也能出错?是的,而且还很严重,因为你掌握了高级技能:重定向符。

如果你想要向文件中追加 内容,会使用 cat >> file的方式,如果你不小心少输入了一个>,那么不好意思,你的文件内容就丢失了。

类似的命令还有echo等,可以看到,问题不在cat,在重定向符,太容易写错。

在此,请你操作之前,确保每次深呼吸,数好箭头的个数再操作。

5. dd命令

dd命令很酷,和xjjdogjj遥相呼应。命令如下:

dd if=/dev/zero of=/dev/sda bs=512 count=1

以上命令,用于格式化硬盘,如果你的剪贴板里面有这样的命令,而且不小心粘到了命令行里,你的数据将会蒸发。

6. cp命令

cp命令会产生覆盖,如果你后悔了,想找到原文件,将非常困难。

建议增加alias cp ='cp -i',i参数表示会在拷贝时生成一个备份。大多数时候没用,有时候很有用。

和我们买保险一个道理。

mv命令类似,也可以加上-i。

7. tar命令

不要觉得tar很安全,我就曾经因为tar命令丢失过数据。

第一,tar -xf 解压的时候, 如果解压的文件已经在当前目录,覆盖原有的文件夹及文件。覆盖这两个字,很多时候意味着不安全。

8. vim命令

vim容易在打开大文件的时候,造成系统内存占用过高。如果触发了操作系统的oom-killer,将会造成其他正常进程的死亡。

如果你手速过快,执行了:wq,将会造成文件的不一致甚至损坏。

可是使用less或者more这样的命令,来查看信息。更高效,也更安全。

如果你实在不得不用vim,请保持使用view命令,它是vim的只读模式。

9. mkfs.*

类似于mkfs.ext4这种指令,将会格式化硬盘,一般用于线上环境初始化,否则不要执行。

10. MySQL

(1)使用mysql -U

--safe-updates, --i-am-a-dummy, -U

使用mysql -U 防止deleteupdate执行没带where条件的操作。当发出没有WHERE或LIMIT关键字的UPDATE或DELETE时,mysql程序拒绝执行。

alias同样是我们的好帮手,可以这么设置:

alias mysql='mysql -U'

(2)重要操作时,使用事务

start transaction
执行
确认
commit

(3)DML误操作回滚,可以使用binlog2sql

(4)小心DDL操作

DDL往往意味着巨大的坑,锁表、误删、数据转变,往往是灾难性的。DDL 对整个表进行操作,或者是整个表所有的行、列,产生exclusive锁,产生疯狂io、严重影响生产。

这里面的任何一条,都是要命的。

仔细检查DDL,尽量在业务低峰执行,而且尽量采用inplace方式操作。

End

线上值万金,执行需谨慎。小心驶得万年船,在危险的线上环境,做事追求的不是快,而是稳。

毕竟,成熟的公司,光审批阶段就耗了好几天,你又为啥这么在乎这几秒钟呢?

作者简介:小姐姐味道  (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。

推荐阅读:

一图解千愁,jvm内存从来没有这么简单过!
失联的架构师,只留下一段脚本
架构师写的BUG,非比寻常
nginx工程师,需要上承天命,下召九幽
实力解剖一枚挖矿脚本,风骚操作亮瞎双眼
又一P1故障,锅比脸圆
传统企业的人才们,先别忙着跳“互联网”!
面试官很牛,逼我尿遁
又一批长事务,P0故障谁来背锅?
一天有24个小时?别开玩笑了!
《程序人生》杀机!
可怕的“浏览器指纹”,让你在互联网上,无处可藏
2w字长文,让你瞬间拥有「调用链」开发经验
996的乐趣,你是无法想象的
作为高级Java,你应该了解的Linux知识(非广告)
必看!java后端,亮剑诛仙(最全知识点)
学完这100多技术,能当架构师么?(非广告)
Linux上,最常用的一批命令解析(10年精选)
数百篇「原创」文章,助你完成技术「体系化」


10条Linux命令锦囊,防你牢底坐穿相关推荐

  1. 这 10条 Linux 命令锦囊,防你牢底坐穿

    每一年,都会有删库跑路的新闻.现实中,删库容易,跑路难,从业者充满了泪水. 这些动作里面,并不总是存在主观的恶意,而是这些命令太危险了.线上操作时,一定要保持清醒的头脑,切记马虎大意. 你说你误操作的 ...

  2. Linux学习总结(9)——Linux 新手必知必会的 10 条 Linux 基本命令

    Linux 对我们的生活产生了巨大的冲击.至少你的安卓手机使用的就是 Linux 核心.尽管如此,在第一次开始使用 Linux 时你还是会感到难以下手.因为在 Linux 中,通常需要使用终端命令来取 ...

  3. 日常必备的16条Linux命令

    公众号:尤而小屋 作者:Peter 编辑:Peter 今天带来的一篇文章是关于Linux命令. 工作之后第一次接触到了Linux系统,起初是Centos系统,后来慢慢地变成了Ubuntu.最后因为换电 ...

  4. centos7修改ip地址命令_每天一条Linux命令(12) hostnam (超详细)

    在Linux系统中,命令 hostname 用于显示或者设置系统主机名称.许多网络程序均用主机名来标识主机,若没有设置好主机名,则可能会导致网络服务不正常. 语法: hostname [选择] 参数: ...

  5. linux 的vi命令中将当前文件另存为新文件a.log,【转】20条Linux命令面试问答

    问:1 如何查看当前的Linux服务器的运行级别? 答: 'who -r' 和 'runlevel' 命令可以用来查看当前的Linux服务器的运行级别. 问:2 如何查看Linux的默认网关? 答: ...

  6. Linux 新手必知必会的 10 条 Linux 基本命令

    Linux 对我们的生活产生了巨大的冲击.至少你的安卓手机使用的就是 Linux 核心.尽管如此,在第一次开始使用 Linux 时你还是会感到难以下手.因为在 Linux 中,通常需要使用终端命令来取 ...

  7. 20条Linux命令面试问答

    问:1 如何查看当前的Linux服务器的运行级别? 答: 'who -r' 和 'runlevel' 命令可以用来查看当前的Linux服务器的运行级别. 问:2 如何查看Linux的默认网关? 答: ...

  8. 抓包分析,一条Linux命令实现路由器自动登录深大校园网认证(Drcom Pt版)

    先说结论,通过抓包分析简化最后可以得出,其登录过程只是一个简单的向服务器发送HTTP GET请求或HTTP POST请求.只要在路由器启动之后自动发送一段 HTTP 请求,即可实现自动登录. 对于 G ...

  9. 20条Linux命令笔试常见问答

    问:1 如何查看当前的Linux服务器的运行级别? 答: 'who -r' 和 'runlevel' 命令可以用来查看当前的Linux服务器的运行级别. 问:2 如何查看Linux的默认网关? 答: ...

最新文章

  1. 显卡安装一直循环在登录界面——解决之-T450安装显卡驱动和cuda7.5发现的一些问题...
  2. tomcat更改端口
  3. VTK:投影点用法实战
  4. Linux RedHat下安装eclipse-standard-kepler-SR1-linux-gtk.tar.gz
  5. flume + kafka
  6. oracle 合并函数
  7. c 输出空格_C/C++知识分享:C++常用内置函数你会几个,使用过几次呢?
  8. Windows 编程[11] - WM_SIZE 消息
  9. 科普:SDN(软件定义网络)
  10. Jquery-无法有效获取当前窗口高度
  11. 追赶法 c++代码实现
  12. word 论文排版相关
  13. 大数据图解美英法空袭叙利亚,都动用了哪些装备?
  14. Latex改变图片、表格标题字号
  15. M365 比较 WLB?而 Bing 加班很猛?我也吃了一鲸!
  16. iPhone 12手机真实信号强度查看方法教程
  17. c++用贪心算法解决汽车加油问题
  18. 荣耀破壁2022:蜕变的解法、蓄势的护法、进击的打法
  19. ida符号文件路径设置
  20. Vue css最高优先级

热门文章

  1. c语言调试时窗口一闪就没了,VS2012编译C语言代码运行出现黑框一闪就没了
  2. 基于Zotero和坚果云的大规模文献同步管理环境配置及常用功能介绍(超详细)
  3. Excel打开csv文件乱码问题的解决办法
  4. ATA接口寄存器详解
  5. 教你如何搭建本地私有云
  6. 新手小白H5微应用接入浙里办流程指南
  7. 去掉PPT英文字体下面的红线
  8. Developing Application Frameworks in .NET(隨書源碼下載地址)
  9. DM——数据处理基础之数据、数据统计特性
  10. 使用python创造照片马赛克