最大的命令行错误?[关闭]


35

您使用单个错误/错误输入/错误引导的命令行造成的最大损失(无论何种类型)是什么?例如,我前一段时间误删除了生产系统数据库,但是我很幸运(即已备份),并且没有永久性的数据丢失,金钱损失,财产损失等。

最重要的是(对于投票),您如何确保不会再次发生?


9
由于这是一项民意测验,因此应该为CW
Eddie

那为什么默认情况下不轮询CW?
路加福音

4
他们怎么应该知道这是一次民意测验?
Mikeage

1
如果机制与SO相同,则即使您可以编辑问题,也无法将其更改为CW。只有OP或主持人才能做到这一点。
混乱

9
好主意-在互联网上公开发布您最具破坏力的错误,供所有未来的雇主查看!:)
山姆·舒特

Answers:


46

在SQL Server的生产系统上:

update customer set password = '' <enter>

最近的备份大约一个星期了。

为了减轻这种情况,我现在通常select首先编写一条语句以确保该where子句正确无误,然后返回并对其进行编辑以插入该set子句并将该语句更改为update


11
哎哟。另一种选择是“开始交易”;很高兴知道您可以回滚。:)
Murali Suriar,2009年

5
将两者结合起来,选择count(*)来查看我想更新的数量,然后在事务中进行更新以进行更新。如果计数匹配提交,则不进行回滚并找出原因。当然,对于“简单”更新,我不这样做,而这些总是使您感到困惑的更新。:-)
WaldenL,2009年

有罪,我自己做了:(
吉姆·哈洛兰

8
在实时系统(或其他人也正在使用的测试系统)上使用BEGIN TRANSACTION时要小心-确保您很快进行COMMIT或ROLLBACK,否则您最终可能会死锁其他进程,以等待事务对资源的锁定。
David Spillett

在某些系统上,您可以进行; 是语句完成标识符,而不是<enter>
J. Polfer 09年

37

最大的错误?以为我设定了两个变量,而没有设定两个变量。因此rm -rf $ VARIABLE / $ VARIABLE2变为rm -rf /。FreeBSD最近更新了他们的rm工具,因此由于这个错误,不可能再使用rm -rf /了!


4
我想指出,重新阅读我的句子,听起来好像是改变rm工作方式的原因,但事实并非如此。显然,人们在脚本中使用rm,并且发生了同样的事情,因此他们想添加故障保护功能。
X-Istence,2009年

3
然后我撤回我的投票:)
科林·皮卡德

我曾经看到一个人在做rm -rf / usr / local / junk ...我看到了,但是没有及时阻止他打回车。
Satanicpuppy 2011年

用“ rm -rf / *”代替“ rm -rf /”呢?我不知道它现在在BSD上的外观如何,但是应该可以工作;)
Ryszard Stawiarski 2011年

26
shutdown -h now 

用于本地工作站,但在通过生产服务器上的ssh登录时键入了它。从那时起,我始终在主机名中$PS1


至少您可能不会丢失任何数据……
Zifre

没错,但这确实是很久以前的事,IPMI或KVMoIP尚未流行。我们必须让技术人员真正去那里并拨动开关。
vartec


即使在本地工作站上,我也总是使用“ +1”以防万一。
msanford,2009年

3
我曾经将主机名放在提示符中,但是现在我修补了shutdown(以及相关的-halt等)命令,以提示我输入当前的计算机名称,然后执行该命令。那给了我额外的步骤,使我意识到我只是关闭了错误的服务器。问题是,一旦实施了该补丁程序,我就再也没有做过-但是它节省了一些同事,这是:)
Moo


25

在VMS系统上,我一直在使用ASSIGN DCL命令分配逻辑名称,并且我想重新调用以前的ASSIGN命令行。现在,在VMS中,您只需键入命令的尽可能多的字符就可以使它明确。所以我打算输入

REC ASS

但是我不小心打了

REQ ASS

代替。对于REQUEST命令,REQ足够明确,该命令将参数广播给具有操作员priv的每个人(IT中的每个人)。因此,整个部门都收到了我的广播消息,简称为“ ASS”。


热闹的:-) :-)
路德维希·威尼泽尔

1
众所周知,所有软件都很烂。为什么IT中的任何人都认为这意味着别的意思?
2009年

24

在Solaris系统上:“ killall dataLoader”。

“ dataLoader”是我正在开发的应用程序。在Linux上,killall的作用类似于pkill。它向与作为参数给出的字符串匹配的进程发送信号。在Solaris上,killall尝试杀死当前用户可以杀死的系统上的所有东西。我是根。


到那儿去了...
James

2
我已经在两周前在Power 5 AIX 6系统中完成了完全相同的工作...好的,不完全是,我做了一个“ killall -9 java” :)
Andor 2010年

3
@安道尔:好吧,你java肯定被杀了。;)
Bobby

16

一次,很多月以前,我需要找到一个特定的可执行文件,但不记得它的全名(但可以记住几个字母)。所以我想我会用这样的东西检查/ usr / bin目录

rm /usr/bin/i*g*

奇怪。一无所有。弄清楚我刚才记错了第二个字母,我再次尝试

rm /usr/bin/i*

再说一遍,什么都没有。在对/ usr / local / bin,/ usr / sbin以及我可能认为的其他任何内容进行了相同的处理后,我意识到我一直在迷惑'ls'命令。

不太了解Brainfart的来源,但这绝对不是我再犯的错误。


重用ls / etc / something,Ctrl + r,Ctrl + a,Del,Del,cat,Enter等路径时,应该注意这一点。
亚历克斯(Alex

8
即使在我的服务器上,它也不返回任何内容。
Mircea Vutcovici 2011年


16

尝试使用以下方法更改目录中所有内容(包括点文件)的所有权:

chown -R user * .*

猜猜是什么?


10
读邮件-真的很快???
有线

5
到了那里,这真的很好地教给了我[。^。] *模式
Maciej Pasternacki

1
@chaos:该命令似乎在当前目录删除一切,甚至点文件
莱奥列奥波尔德·赫兹준 영

2
@chaos:它并没有删除..,从来没有也永远不会。你简直是误会。请列举一个确实具有这种行为的unix实现(我从未见过,而且据记载,它甚至不是像第七版unix这样的超古董unix的行为)。
克里斯,2009年

1
./.*会阻止这种情况,还是仍然会通过./../传播回目录树?
tj111 2009年

15

打算销毁/ dev / sdb,幸运的是我有一个很好的最新备份

dd if=/dev/urandom of=/dev/sda

这样做一次(/ dev / zero除外),破坏了Linux服务器的根分区,并通过将其全部从同一服务器复制回去来恢复。
Marius Gedminas

14
select * from <File1> join <file2>

在生产盒上。请注意缺少on子句。:-)两个表都是数以百万计的行表,而这是在90年代中期的AS / 400上,一旦SQL运行,就无法杀死它。


14

在我们的一台数据生产服务器上,我的一位根源键入:

chmod -R 777 /

因为他的某些脚本出现权限错误...

此后不久,他的私钥已从所有服务器上删除,他负责数据生产服务器上的1TB数据还原...


12

我最喜欢的是当我上大学时。我正在构建一个应用程序(我不记得是什么),而且由于我不是root用户,所以我用它来构建它

PREFIX=~username/usr/local

因此,我可以将其安装到我的主目录中。不幸的是它安装到

/home/username/src/app/~username/usr/local

代替。自然地删除它作为重新开始我执行

rm -rf ~username

在源目录中。

我想知道为什么要花这么长时间...

:-)

但是,最糟糕的是当我使用solaris工作站时,在完成所有设置后,我们希望擦除配置以进行实时配置。所以我执行了

sys-unconfig

同意警告消息,而不是重新引导计算机并返回到“出厂默认设置”,xterm窗口只是说

connection closed by foreign host.

这个故事的寓意不要让根主机在另一个主机上打开!永远!


我自己在PS1中寻求主机名。在某些时候,我为本地和远程登录使用了不同的颜色(对于用户/ root用户也使用了不同的颜色)。
Marius Gedminas

12

许多年前,当我和一个由我的朋友(该项目的维护者)一起从事一个项目时,我在家里用php编写了一些东西。我们正在互相协作进行即时通讯。我们总是在游戏中来回嬉戏。

在进行Perl vs PHP的宗教战争时,我试图让ssh-agent在我的机器上正常工作。然后,我提到了一些有关ssh-agent的信息,需要评估(不确定我为什么这么说)。因此,他随后将此邮件发送给我,是为了帮助我解决我的问题(请记住,我已经扎根了):

\# eval $(echo ssh-agent | 
perl -pe 's/h-a/m -r/' | 
perl -pe 's/^ss/r/' | 
perl -pe 's/gent/f \//')

警告!不要运行该命令!!!

如果删除eval并单独运行内部命令,则它是:

rm -rf /

我花了整整4秒钟的时间来注意发生了什么,但损坏已经造成了。我必须重新安装操作系统。幸运的是,除了/ etc iirc中的某些内容外,我的工作没有被抹掉。当我发给他一个恐怖的消息问他为什么这么做时,他笑得很厉害。我们都是长期的系统工程师。他认为我不会运行它,并且在进行简单的c&p'ing操作之前会更仔细地检查它,我只是信任他,所以我什至都不认为他在玩耍。不用说,这个小故事总是在我们之间出现。因此,我决定将其永生。

我如何缓解这种情况再次发生?我不相信任何人!

另一个不太有趣的故事是几年前,我在工作中的关键任务箱上做一些工作。我对其他机器开放了一些条件。我需要删除目录中的一些多余内容。好吧,我迷失了自己,无意间得到了回报在我的本地目录中,但是在错误的主机上(错误的术语)!我在/ var / lib / mysql而不是在应用程序服务器上的/ tmp(不同的术语)中执行了命令。不用说,我消灭了生产数据库。幸运的是,当我和一位同事从备份和备用数据库重建主数据库时,我们有了一个热备用数据库。这花了大约18个小时。

缓解措施:在执行命令之前,请更加小心我在哪些窗口中执行命令。


在工作中,我们都将所有服务器的.bashrc配置为以独特的颜色在bash中显示用户名。这样一来,您就可以立即在自己的机器上看到。(好吧,当您管理的机器超过20-30台时,这可能会成为一个问题。但是仍然非常方便。)
fgysin恢复了Monica 2010年

+1代表没有人信任。
韦恩·沃纳

11

短版

#/bin/bash
$0&
$0

的价值,如果您不以root用户的身份这样做,请运行kill -9 -1
BCS

3
那是做什么的?
内森·德威特

6
它称自己为背景,而不是等待其完成,然后又称其为自身:又名Fork Bomb
BCS,2009年

2
@Masi:如果计算机速度足够快且脚本足够长,则不会。特别是如果您不知道它会发生。
旅行者

3
删除#!/bin/bash,我认为这将赢得bash中最短前炸弹的代码高尔夫。
乔伊·亚当斯

11

我曾经想删除目录中的一堆文件。

del *.*

然后,计算机说:“你确定吗?[Y / N]”我想:“当然,我敢肯定,我就不会键入否则混账命令!啧愚蠢电脑 ......”

Y <enter>

C:\Windows>_

嗯... WTF?我只是删除Windows目录吗?

undelete *.*

在那些小型硬盘的日子里,我知道c:\ windows中的每个文件是做什么用的,它的名字是什么,但是即使取消删除所有内容后,系统也永远不一样。我对“您确定”提示有些尊重。一点点


1
我曾经做过完全相同的事情。我让系统重新启动并运行,但是再也无法正常运行了。大约一周后,我重建了系统。
吉姆·奥哈兰

11

我认为我做过的最愚蠢的事情是删除面向外部的防火墙群集上的默认路由-同时在100英里之外将vpn连接到我的桌面。

幸运的是,它处于计划的停机时间(以防万一),但这并没有为我节省200英里的往返路程,可以在现场重新配置防火墙。这也无济于事,在我旅行和随后的修复过程中,这淘汰了我们暴露于互联网的生产系统。

我们都知道纳秒的定义。零秒甚至更小,它是敲击“输入”与意识到您的错误之间的时间。


11

两个中的第一个...

在Solaris机器上,我们有AIX机器的tar备份。

一名开发人员输入:

tax xvf AIX_Backup.tar

当然,税收的途径是绝对的,我们最终制作了一个新的unix发行版... Solarix ...发行版的唯一问题是它没有启动:(


10

故事告诉我:

另一个分支之所以打电话,是因为其本地PBX出现了问题。经过调查,我们了解到他们更新了服务器,但没有更新其Asterisk配置。因此,管理员决定指示分支机构重做配置。

管理员:“好吧,现在,键入rm -rf / etc / asterisk”

盖伊:“好。”

管理员:“现在,键入cp / var / ...”

盖伊:“等等,它还在运行……”

管理员:??? ... !!!


1
如果有什么地方出错,那就会出错。
乔伊·亚当斯

9
rm -rf / some/path 

代替

rm -rf /some/path 

幸运的是我没有发生过;-)


最近发生在我的一个同学身上。幸运的是,它只是与/ etc / some / other / path一起使用
-Ikke

必须禁用它!我认为现在许多操作系统都已禁用它。太害怕尝试了,在Ubuntu rm -rf上/
Lakshman Prasad

实际上,仅使用sudo rm -rf /
voyager

去过那里,做了那个……
fgysin恢复了Monica 10'9



8

XCOPY是一个功能强大的野兽,它的执行无懈可击,并且由于其命令行参数与Window COPY和UNIX的相反而受到阻碍cp

几天前,我不小心写道:

xcopy src \path\to\a\new\nonexistent\directory

XCOPY足以src用... 覆盖我的目录了!而且,也没有麻烦将旧文件放入回收站。

哦,事实证明,这XCOPY实际上会覆盖磁盘上的相同扇区,而不是分配新扇区。我尝试了3个磁盘恢复程序,而最好的磁盘恢复程序只能恢复丢失的10个文件中的3个。当然,这3个文件只是vshost.exe它的好朋友。胀!


8

网络(在远程计算机上)遇到问题,只想重新启动界面

ifconfig eth0 down && ifconfig eth0 upp

如今,在尝试这种操作之前,我要确保有人在机器附近(iptables也是不错的选择)。当没有人在那里时,我曾经打字

sleep 600; reboot

进入另一个(屏幕)终端,以便如果我在10分钟内无法按ctrl + c命令重新启动。

我也从该错误中了解到(ctrl + c,睡眠将运行重新启动),现在我使用

sleep 600 && reboot

这将使我能够ctrl + c。


1
shutdown -r +5会在5分钟内重新启动系统,除非您shutdownkillall shutdown例如杀死进程。
gelraen 2011年

1
我只能看到在Solaris下犯了mihi错误的管理员,然后(从错误中学习)尝试了gelraen的替代方法。
2011年

8
ifconfig eth0 down

糟糕,我在eth0 的外面。Web服务器位于世界的另一侧,在一个密闭的房间里。没有网络访问权限来登录或重新引导。废话



6

在清理生产Web服务器上的主文件夹时,我忘了将服务器的Web根链接到主文件夹中的某个位置。没想到,我在该文件夹上运行了rm -rf,接下来我知道,人们都在抱怨该网站已关闭!

糟糕!


5

我曾经比较两个文件夹中的数据,然后使用-d选项运行rsync(删除目标文件,而不是源文件)。然后我在运行rsync时切换了源和目标。那删除了所有我想备份的新文件。现在,我学会了使用-n(dry-run)运行rsync。

rsync -trvd --stats --progress /destination /source

我没有备份。


4

曾几何时(可能是System III,但很久以前),可以*通过使用正确的shell引用创建一个命名文件。当我在主目录中找到一个时,我输入了内容rm *,但当我有些犹豫并思考时,我用手指按了返回键...

为其他用户创建这样的文件是一种常见的恶作剧。

如果文件位于目录中,则很难缓解。完全按照ls显示的方式键入其名称的反射效果很强。

另一个(危害较小)的恶作剧是使用尾随空格(或仅空格)来命名文件,而这些空格很难删除...


2
这就是GUI的目的:)
Zifre

1
Shell补全对于那些尾随空间文件而言是一个真正的节省时间的方法:)
Shiny先生和New安宇2009年

1
这本来是。1985年,并通过拨号或通过VT-100终端克隆的RS-232电缆进行访问。不是终端仿真器,而是实际的终端。我不记得当时csh具有名称补全... ;-)当然,今天,GUI和名称补全使这两者的风险降低,而且许多OS使得在不诉诸于此的情况下创建此类文件变得更加困难。磁盘扇区编辑....
RBerteig

触摸./--help,那么rm --help或rm *都不起作用...
mihi

至少在Linux上,您仍然可以创建一个名为的文件:“ touch' '”。而且“ rm'*'”也有效...
sleske

4

由于重新启动后对一般JBoss脆弱性有一些不好的经验,我想在重新启动之前清除JBoss的工作文件。我通常会这样做:

# cd /var/cache/jboss
# rm -rf tmp/* work/*

为了保护自己免于键入许多可能的灾难性错误,例如:

  • / tmp / *
  • tmp / *
  • 你明白了

我执行最后一条命令:

# sudo -u jboss rm -rf tmp/* work/*

由于JBoss用户将很难删除不属于它的任何关键文件。

我从未真正犯过这个错误,但是我确实可以做到。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.