- 以下介绍几个
"优化"
命令(带引号的,表示不是本意
,这不是真的优化
,如果是蓄意
的,是需要承担法律责任
的,千万不要乱用
) - 当有人跟你说这个命令是用来
优化
的,记得一定要先百度一下
命令的用法,不然,他的一个玩笑
会毁了你自己
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 requestgit 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(deployment
、namespace
、node
、pod
等等)--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 init
和kubeadm join
所做的任何更改 -
--force
表示强制
这个操作会初始化 kubernetes 集群(使用 kubeadm 部署的 kubernetes 集群)
如果使用外部 etcd,
kubeadm reset
不会删除任何 etcd 数据。如果再次使用相同的 etcd 端点运行kubeadm init
,将看到以前集群的状态切记,
kubeadm reset
只有在最初使用 kubeadm 部署 kubernetes 集群出现问题的时候使用,一旦 kubernetes 集群已经运行,并且已经上线服务,千万不能使用kubeadm reset
谢幕
--------------------------------------------------------------------我是分割线--------------------------------------------------------------------------------
好奇害死猫,以上的操作,不要随随便便用在生产环境,或者测试环境,即时有的有补救的方式,但是会浪费许多不必要的时间,如果被定义为蓄意破坏,是会承担一定的法律责任的,如果实在想尝试把玩,就自己创建一个虚拟机自己玩(记得先创建一个快照,rm -rf /* 会导致虚拟机关不了机,别问我怎么知道的,你好奇一下就知道了)
再者,虽然很多时候,这些都是用来当做开玩笑的,但是还是需要切记场合,一些小白并不清楚这些命令的作用,并且自己不去查阅命令的用途,听说可行就直接使用,会带来一些不好的影响