你说你误操作的,谁信呢?
严禁酒后登录线上服务器操作 严禁吵架后情绪激动登录线上服务器操作 严禁长时间加班后操作线上环境 禁止在线上试验不熟悉的命令 重要系统先做备份
1. 准备工作
在执行危险命令时,请深呼吸。首先执行ifconfig
,或者ip addr
命令,确认是在正确的服务器上。
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:16:3e:34:e9:a9 brd ff:ff:ff:ff:ff:ff
inet 172.19.26.39/20 brd 172.19.31.255 scope global dynamic noprefixroute eth0
valid_lft 313267185sec preferred_lft 313267185sec
inet6 fe80::216:3eff:fe34:e9a9/64 scope link
valid_lft forever preferred_lft forever
pwd
命令,确保自己是在正确的目录下面。$ pwd
/etc/nginx
接下来,就可以看一下执行的命令,是不是危险指令。
2. rm -rf命令
-rf
参数将递归删除文件,误删文件导致数据丢失,产生严重后果。如果多一个空格,或者 /
没有补齐,或者文件有特殊符号,导致误删文件的误操作居多。rm -rf ./* => rm -rf /
rm -rf abc/ => rm -rf abc /
rm -rf ${p}/*
rm -rf /
。所以rm还有另外一条谨言:在脚本中执行rm的时候,请先判断相关的变量是否为空。3. chmod命令
getfacl
这个命令。getfacl -R / > chmod.txt
恢复的时候,执行
setfacl --restore=chmod.txt
它将回放这个文件的权限,有时候是救命的。
4. cat命令
追加
内容,会使用 cat >> file
的方式,如果你不小心少输入了一个>
,那么不好意思,你的文件内容就丢失了。echo
等,可以看到,问题不在cat,在重定向符,太容易写错。5. dd命令
dd
命令很酷,和xjjdog
的jj
遥相呼应。命令如下:
dd if=/dev/zero of=/dev/sda bs=512 count=1
6. cp命令
alias cp ='cp -i'
,i参数表示会在拷贝时生成一个备份。大多数时候没用,有时候很有用。7. tar命令
覆盖
这两个字,很多时候意味着不安全。8. vim命令
oom-killer
,将会造成其他正常进程的死亡。:wq
,将会造成文件的不一致甚至损坏。less
或者more
这样的命令,来查看信息。更高效,也更安全。view
命令,它是vim的只读模式。9. mkfs.*
10. MySQL
(1)使用mysql -U
--safe-updates, --i-am-a-dummy, -U
mysql -U
防止delete
、update
执行没带where条件的操作。当发出没有WHERE或LIMIT关键字的UPDATE或DELETE时,mysql程序拒绝执行。
alias mysql='mysql -U'
(2)重要操作时,使用事务
start transaction
执行
确认
commit
binlog2sql
inplace
方式操作。