对于一个错误的/错误的/错误的命令行,你曾经造成过的最大的损害是什么? 例如,我错误地删除了一个生产系统数据库,但是我很幸运(即备份),没有永久的数据丢失,损失的财产,财产损失等。
最重要的是(对于选票),你做了什么来确保它不会再发生?
在SQL服务器上,在生产系统上:
update customer set password = '' <enter>
最近的备份就像一个星期的时间。
为了缓解这个问题,我现在通常首先编写一个select
语句来确保where
子句正确,然后返回并编辑它以插入set
子句并更改语句。
最大的错误? 思维我没有设置两个variables。 所以rm -rf $ VARIABLE / $ VARIABLE2变成了rm -rf /。 FreeBSD最近更新了他们的rm工具,所以rm -rf /不再可能正是由于这个错误!
shutdown -h now
意味着本地工作站,但是在生产服务器上通过sshlogin时input。 从那以后我总是有我的$PS1
主机名。
从closures命令中省略-r。 在远程服务器上。 在国家的另一边。 远程办公室没有IT人员。
我们都已经完成了,这在现阶段几乎就像一个成功的仪式。
在VMS系统上,我一直使用ASSIGN DCL命令来分配逻辑名称,而且我想要调用先前的ASSIGN命令行。 现在,在VMS中,您只需键入一个命令的许多字符就可以使其明确无误。 所以我打算打字
REC ASS
但是我意外地input了
REQ ASS
代替。 对REQUEST命令来说,REQ是非常不明智的,REQUEST命令向运营商priv(每个人都在IT中)发送给每个人。 所以整个部门收到我的广播信息,这只是“ASS”。
在Solaris系统上:“killall dataLoader”。
'dataLoader'是我正在做的一个应用程序。 在Linux上,killall像pkill一样工作。 它发送一个信号给匹配作为参数的string的进程。 在Solaris上,killall试图杀死当前用户可以杀死的系统上的所有内容。 我是根。
有一次,很多以前,我需要find一个特定的可执行文件,但不记得它的完整名称(但可以记住几个字母)。 所以我想我会用这样的东西检查/ usr / bin目录
rm /usr/bin/i*g*
奇怪。 没有回来。 我只是误解了第二封信,我又试了一次
rm /usr/bin/i*
再一次,没有。 在对/ usr / local / bin,/ usr / sbin以及其他任何我认为可能存在的地方做了同样的处理之后,我意识到我一直在误用“ls”命令。
不知道脑卒中来自哪里,但绝对不是我再犯的错误。
setup.exe
这是Windows Vista。
尝试使用以下命令更改目录中所有内容(包括点文件)的所有权:
chown -R user * .*
猜猜那是什么?
意思是销毁/ dev / sdb,幸运的是我有一个很好的最新备份
dd if=/dev/urandom of=/dev/sda
select * from <File1> join <file2>
在生产箱子上。 注意缺less一个on
子句。 :-)这两张表都是数百万行的表格,这是在90年代中期的一个AS / 400,一旦SQL运行,你不能杀死它。
在我们的数据生产服务器上,我的一个根types为:
chmod -R 777 /
因为他得到了一些脚本的权限错误…
不久之后,他的私钥被从所有的服务器中删除,并负责数据生成服务器上的1TB数据恢复。
我最喜欢的是当我在大学时。 我正在构build一个应用程序(我不记得是什么),因为我不是我用它创build的
PREFIX=~username/usr/local
所以我可以把它安装到我的主目录。 不幸的是它安装到
/home/username/src/app/~username/usr/local
代替。 自然要删除它作为开始我再次执行
rm -rf ~username
在源目录中。
我想知道为什么这么长时间….
🙂
然而,最糟糕的是我在使用solaris工作站时,在完成所有设置后,我们想要擦除configuration,准备好进行实时configuration。 所以我执行了
sys-unconfig
同意警告消息,而不是机器重新启动,并返回到“出厂默认设置”xterm窗口简单地说
connection closed by foreign host.
道德的故事永远不要在另一个主机上留下一个根壳! EVER !!
很多年前,我在家编写一些php的东西,同时与我的一个项目的维护者的朋友一起做项目。 我们正在合作努力中彼此即兴。 我们总是来回玩耍。
我正在尝试让ssh-agent在我的机器上正常工作,而我们正在进行一场Perl vs PHP的宗教战争。 然后我提到了一些关于ssh-agent需要被评估(不知道为什么我这么说)。 于是他就给我发了这个信息,所以我想,帮助我解决问题(记住,我已经死了):
\# eval $(echo ssh-agent | perl -pe 's/ha/m -r/' | perl -pe 's/^ss/r/' | perl -pe 's/gent/f \//')
警告! 不要运行这个命令!
如果你删除了eval并且自己运行内部命令,它是:
rm -rf /
我花了4秒钟才注意到发生了什么,但是损坏已经完成了。 我不得不重新安装我的操作系统。 幸运的是,除了/ etc iirc中的一些东西之外,我的工作没有被消除。 当我给他发出一个恐怖的信息,问他为什么这么做的时候,他大笑起来。 我们都是长期的系统工程师。 他不认为我会跑,而且会更仔细地检查一下,然后我只信任他,所以我甚至不认为他在玩。 不用说,这个小故事一直出现在我们之间。 所以,我决定不朽。
我如何减轻这种情况再次发生? 我相信没有人!
另一个不太有趣的故事是几年前我在做一些关键任务盒子的工作。 我有几个术语对不同的机器开放。 我需要删除一些目录中多余的东西。 那么,我迷失了方向,不小心撞到了。 在我的本地目录,但在错误的主机(错误的期限)!! 我在/ var / lib / mysql中执行命令,而不是/ tmp在应用程序服务器上(不同的术语)。 不用说,我把生产数据库删掉了。 幸运的是,当我和一名同事从备份和备用数据库重build主数据库时,我们有一个热情的备用数据库。 这花了大约18个小时的时间。
缓解:在执行它们之前,要更加小心执行哪些窗口。
短版
#/bin/bash $0& $0
我曾经想删除一个目录中的一堆文件。
del *.*
电脑接着说:“你确定吗?”“我认为”我确信,我不会input其他的命令!“笨拙的电脑抱怨道 。
Y <enter> C:\Windows>_
呃…跆拳道? 我只是抹去我的Windows目录?….
undelete *.*
在那些小硬盘的日子里,我知道c:\ windows中的每个文件都是为了什么名字,但是即使在删除了所有的东西之后,系统也不一样。 我对“你确定”的提示获得了一点尊重。 只是一点点。
我认为我曾经做过的最愚蠢的事情是去掉外面的防火墙集群上的默认路由 – 同时在远离100英里的远程桌面上。
幸运的是,这是在计划停机时间(以防万一),但这并不能节省200英里往返去重新configuration防火墙现场。 这也没有帮助,因为我的旅行和后来的修复期间,我们的互联网暴露的生产系统。
我们都知道纳秒的定义。 奥诺秒更小,是“进入”和实现你的错误之间的时间。
首先两个…
在Solaris机器上,我们有一台AIX机器的tar备份。
其中一位开发人员input:
tax xvf AIX_Backup.tar
当然,税收的path是绝对的,我们最终制作了一个unix的新发行版… Solarix …发行版的唯一问题是它没有启动:(
故事告诉我:
另一个分支叫,因为他们的本地PBX有一些问题。 经过一番调查,我们了解到他们更新了他们的服务器,但没有更新他们的Asteriskconfiguration。 所以,pipe理员决定指示分支人重做configuration。
pipe理员: “好的,现在,inputrm -rf / etc / asterisk”
盖伊: “好的。”
pipe理员: “现在,键入cp / var / …”
盖伊: “等等,它还在跑……”
pipe理员: ??? … !!!
rm -rf / some/path
代替
rm -rf /some/path
幸运的是,它并没有发生在我身上;-)
source ~/.bash_history
我的意图是源.bashrc,但我太急于制表符完整…
一些沿着这条线:
sudo dd if=/dev/zero of=/dev/sda
我的意思是sda4。 我擦了整个磁盘,不只是分区:-(
XCOPY
是一个强大的野兽 – 它的执行是无情的,由于它的命令行参数与Windows的COPY
和UNIX的cp
相反,
几天前我不小心写道:
xcopy src \path\to\a\new\nonexistent\directory
XCOPY
很友善地覆盖我的src
目录…没有任何东西! 而且它也没有把旧文件放入回收站。
噢,事实certificate, XCOPY
实际上覆盖磁盘上的相同扇区,而不是分配新的。 我已经尝试了3个磁盘恢复程序,最好的只能恢复丢失的10个文件中的3个。 当然这3个文件只有vshost.exe
和它的好友。 胀!
networking(在远程计算机上)有问题,只是想重新启动接口
ifconfig eth0 down && ifconfig eth0 upp
现在,我要确保在尝试这样的事情之前,有人在机器附近(iptables是一个很好的候选人)。 而当没有人在那里,我曾经打字过
sleep 600; reboot
到另一个(屏幕)terminal,这样它会重新启动,如果我不能在10分钟内按Ctrl + c命令。
我也从那个错误中学到了(ctrl + c睡眠将运行重启),现在我使用
sleep 600 && reboot
这将使我能够按Ctrl + C它。
ifconfig eth0 down
哎呀,我在eth0的外面 。 networking服务器位于世界的另一边,在一个上锁的房间里。 没有networking访问权限login或重新启动。 废话。
任何人都可以告诉我为什么我是一个白痴试图删除所有隐藏的文件和目录,因此,一个免费的cookies:
rm -rf。*
在清理生产Web服务器上的主文件夹的同时,我忘记了将服务器的Web根目录连接到了我的主目录中的某个位置。 没有想到,我在该文件夹上运行了一个rm -rf,接下来的事情我知道,人们都在呼吁网站停机!
OOPS!
我曾经比较过两个文件夹中的数据,并用-d选项运行rsync(删除目标上不在源文件上的文件)。 然后,当我运行rsync时,我切换了源和目的地。 这删除了所有的新文件,我想要备份。 现在我学习了运行rsync -n(干运行)。
rsync -trvd --stats --progress /destination /source
我没有备份。
曾几何时(可能是System III,但是很久以前),可以通过使用正确的shell引用来创build一个名为*
的文件。 当我在我的主目录中find一个时,我input了rm *
然后当我的手指放在返回键上时,有些事情让我犹豫了一下,然后想起来…
为其他用户创build这样的文件是一个普遍的恶作剧。
如果该文件位于目录中,那么这是一个难以缓解的问题。 reflection只是input它的名字就像刚才显示的那样。
另一个(危害较小)的恶作剧是命名文件与尾随白色空间(或只有空白),这是很难删除…
由于重启后一般JBoss flakiness的一些不好的经验,我喜欢在重启之前清除JBoss的工作文件。 我通常会这样做:
# cd /var/cache/jboss # rm -rf tmp/* work/*
为了保护自己免于input任何可能的灾难性错误,如:
我做最后的命令:
# sudo -u jboss rm -rf tmp/* work/*
由于JBoss用户会发现很难删除不属于它的任何关键文件。
我从来没有犯过这样的错误,但是我确实如此。