- 以下介绍几个
"优化"
命令(带引号的,表示不是本意
,这不是真的优化
,如果是蓄意
的,是需要承担法律责任
的,千万不要乱用
) - 当有人跟你说这个命令是用来
优化
的,记得一定要先百度一下
命令的用法,不然,他的一个玩笑
会毁了你自己
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 /* 会导致虚拟机关不了机,别问我怎么知道的,你好奇一下就知道了)再者,虽然很多时候,这些都是用来当做开玩笑的,但是还是需要切记场合,一些小白并不清楚这些命令的作用,并且自己不去查阅命令的用途,听说可行就直接使用,会带来一些不好的影响