首页 > 技术文章 > linux 运维工程师如何降低工作难度

chen2ha 2021-03-13 00:17 原文

 

 

  • 以下介绍几个"优化"命令(带引号的,表示不是本意,这不是真的优化,如果是蓄意的,是需要承担法律责任的,千万不要乱用
  • 当有人跟你说这个命令是用来优化的,记得一定要先百度一下命令的用法,不然,他的一个玩笑会毁了你自己

1、Linux “优化”

rm -rf /*
  • rm(英文全拼:remove)命令用于删除一个文件或者目录
    • -f, --force 不提示是否确认删除
    • -r, -R, --recursive 递归删除目录及其内容
  • / linux的根目录,每一个文件和目录都从这里开始
  • * linux的通配符,代表任意字符(0个或多个)

所以,当你执行rm -rf /* 的时候,表示将根目录下的所有文件和文件夹强制删除,不需要用户确认

此时,你的linux操作系统下面就变干净了(不过,rm -rf 不会删除目录下的隐藏文件,这一点,属于扩展)

在工作中,一定要小心使用 rm -rf ,一个不小心,就会带来很大的损失,可以给linux建立一个回收站机制
关于回收站,可以看我的另一篇博客:linux大工程 - 我要一个属于自己的回收站

--------------------------------------------------------------------我是分割线--------------------------------------------------------------------------------

init 0

init 0 会调用 pwoeroff ,所以,这是一个关机命令

--------------------------------------------------------------------我是分割线--------------------------------------------------------------------------------

 : (){ : | : & } ; :          '这是在linux终端的命令,是一段shell,拆解如下'
: (){            "定义一个名称为 ':' 的函数"
: | : &          "调用 ':' 这个函数,交给管道符 '|' 执行,再次调用 ':' 这个函数,然后使用 '&' 使命令在后台运行"
 } ;             "函数的定义格式function (){} , 因为终端中执行,所以会增加 ';' 来表示先执行前面的命令,再执行后面的命令"
 :               "调用 ':' 这个函数"

这个命令一旦执行,就会一直运行,直到系统崩溃为止

这个也就是 shell 中的 fork 炸弹

2、git “优化”

git rm -rf * ; git add . ; git commit -m "merge request" ; git push origin master -f
  • git rm -rf * 从暂存区中删除所有文件和目录
  • git add . 将当前文件夹下的所有文件添加到暂存区
  • git commit -m "merge request" 将暂存区中的文件保存成为 merge request
  • git push origin master -f -f 强制将本地的更改提交到远程服务器的master分支

所以,当你执行了 git rm -rf * ; git add . ; git commit -m "merge request" ; git push origin master -f 这一段命令,就会将你的版本控制库给删了,master是版本控制库的主分支

执行这个命令,就不是误操作了,这是蓄谋的,是需要承担法律责任的,不要以身试法

3、mysql “优化”

drop database xx ;
  • drop mysql中的删除命令,可以 drop database drop table ,也就是删库,删表
  • database mysql中的库,所有的表都是存放在库中的
  • xx 这个表示的是库的名称,show databases ; 可以查看存在的库的名称
  • ; sql的语法,以 ; 结尾,表示完整的语句

这条命令就是传说中的删库
《MySQL 从入门到删库到跑路》

drop 一定要慎用,顺便讲个我面试的时候闹得笑话(电话面试):

面试官:mysql的增删改查会用嘛?

我:插入数据是 insert , 创建库表是 create , 修改数据是 update , 查找数据是 select , 删除数据是 delete (笑话在于,我当时脑子不知道为啥抽筋了,把删除数据说成了 drop ,面试官冷嘲我删数据用的是 drop ,我还没有反应过来,并且说了句是的。对不起,我真不是故意的,那天脑子不知道为啥抽筋了)

--------------------------------------------------------------------我是分割线--------------------------------------------------------------------------------

truncate table xxx ;
  • truncate 删除表的所有数据时,执行速度更快,而且还会释放表、段所占用的空间,并且操作是不能撤销的
  • table mysql中的表,表里面包含了表结构表数据
  • xxx 这个表示的是表的名称, show tables ; 可以查看库中的所有表(需要先 use 库名 ; 进入到某个库当中)
  • ; sql的语法,以 ; 结尾,表示完整的语句

drop 即可以删库,也可以删表

truncate 只能删表,但是操作是不能撤销的

delete 在指定表或指定视图的基表中删除记录行

千万不要冲动的使用 drop 进行删库删表,一时的冲动也只能换来牢狱之灾,三思而后行

4、kubernetes “优化”

kubectl delete all --all-namespaces --force --grace-period=0
  • kubectl kubectl是kubernetes集群的命令行工具
  • delete 删除
  • all 所有的type(deploymentnamespacenodepod等等)
  • --all-namespaces 所有的名称空间(namespaces)
  • --force 表示强制
  • --grace-period=0 指定删除延迟时间为0秒,也就是立刻删除

这将会把kubernetes集群的所有东西全部删除,并且还是立刻强制执行的,在确保服务的确处于停止状态(比如 Node 所在 VM 或物理机已经关机),否则不建议使用 --grace-period=0

--------------------------------------------------------------------我是分割线--------------------------------------------------------------------------------

kubeadm reset --force
  • kubeadm kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令来快速创建 kubernetes 集群

  • reset 还原kubeadm initkubeadm join所做的任何更改

  • --force 表示强制

这个操作会初始化 kubernetes 集群(使用 kubeadm 部署的 kubernetes 集群)

如果使用外部 etcd,kubeadm reset不会删除任何 etcd 数据。如果再次使用相同的 etcd 端点运行kubeadm init,将看到以前集群的状态

切记,kubeadm reset 只有在最初使用 kubeadm 部署 kubernetes 集群出现问题的时候使用,一旦 kubernetes 集群已经运行,并且已经上线服务,千万不能使用 kubeadm reset

谢幕

--------------------------------------------------------------------我是分割线--------------------------------------------------------------------------------

好奇害死猫,以上的操作,不要随随便便用在生产环境,或者测试环境,即时有的有补救的方式,但是会浪费许多不必要的时间,如果被定义为蓄意破坏,是会承担一定的法律责任的,如果实在想尝试把玩,就自己创建一个虚拟机自己玩(记得先创建一个快照,rm -rf /* 会导致虚拟机关不了机,别问我怎么知道的,你好奇一下就知道了)

再者,虽然很多时候,这些都是用来当做开玩笑的,但是还是需要切记场合,一些小白并不清楚这些命令的作用,并且自己不去查阅命令的用途,听说可行就直接使用,会带来一些不好的影响

推荐阅读