最大的命令行错误?

Pet*_*ton 35 command-line-interface

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

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

Gre*_*ill 46

在 SQL Server 中,在生产系统上:

update customer set password = '' <enter>
Run Code Online (Sandbox Code Playgroud)

最近的备份就像一个星期一样。

为了缓解这种情况,我现在通常先写一个select语句以确保我的where子句正确,然后返回并编辑它以插入set子句并将语句更改为update.

  • 哎哟。另一种选择是“开始交易”;很高兴知道您可以回滚。:) (11认同)
  • 在实时系统(或其他人也在使用的测试系统)上使用 BEGIN TRANSACTION 时要小心 - 确保您尽快提交或回滚,否则您可能最终导致其他进程死锁,等待您的事务锁定的资源上的锁。 (8认同)
  • 两者结合,选择count(*)看我觉得我会更新多少,然后在事务中update来做更新。如果计数匹配提交,否则回滚并找出原因。当然,我不会为了“简单”更新而这样做,而那些总是让您感到困扰的更新。:-) (5认同)

X-I*_*nce 37

最大的错误?以为我已经设置了两个变量,而我没有。所以 rm -rf $VARIABLE/$VARIABLE2 变成了 rm -rf /。FreeBSD 最近更新了他们的 rm 工具,因为这个错误, rm -rf / 不再可能了!

  • 我想指出,重新阅读我的句子,听起来 _I_ 是改变 rm 工作方式的原因,事实并非如此。显然人们在脚本中使用 rm 并且发生了同样的事情,他们想添加一个故障安全。 (4认同)
  • 然后我撤回我的投票:) (3认同)

var*_*tec 26

shutdown -h now 
Run Code Online (Sandbox Code Playgroud)

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

  • 查看 molly-guard (http://packages.debian.org/search?keywords=molly-guard) (4认同)
  • 我曾经将主机名放在提示中,但现在我已经修补了关闭(以及相关的 -halt 等)命令,以提示我在执行命令之前输入当前机器名称。这给了我必要的额外步骤来意识到我只是关闭了错误的服务器。问题是,一旦我实施了那个补丁,我就再也没有这样做过——但它拯救了我的一些同事 :) (3认同)

Max*_*mus 26

从关闭命令中省略 -r。在远程服务器上。在国家的另一边。远程办公室没有 IT 人员。

我们都做到了,这几乎就像是现阶段的成人礼。


小智 25

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

记录屁股

但我不小心打字

请求屁股

反而。REQ 对 REQUEST 命令来说足够明确,它将参数广播给具有操作员 privs 的每个人(IT 中的每个人)。所以整个部门都收到了我的广播消息,只是“ASS”。


kby*_*yrd 24

在 Solaris 系统上:“killall dataLoader”。

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

  • @Andor:嗯,你肯定杀了 `java`。;) (3认同)
  • 两周前我在 Power 5 AIX 6 系统中做了完全相同的事情......好吧,不完全是,我做了一个“killall -9 java”:) (2认同)

cha*_*aos 16

尝试更改目录中所有内容的所有权,包括点文件,使用:

chown -R user * .*
Run Code Online (Sandbox Code Playgroud)

你猜怎么着那个呢?

  • 阅读邮件 - 真的很快??? (10认同)
  • 去过那里,这教会了我 .[^.]* 模式非常好 (5认同)
  • @chaos:它*不*删除 .. 并且永远不会也永远不会。你只是错了。请引用一个确实具有这种行为的 unix 实现(我从未见过这种行为,并且被记录为甚至不是像第 7 版 unix 这样的超级古董 unix 的行为)。 (2认同)

gol*_*udo 16

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

rm /usr/bin/i*g*
Run Code Online (Sandbox Code Playgroud)

奇怪的。什么都没有回来。想到我刚刚记错了第二个字母,我又试了一次

rm /usr/bin/i*
Run Code Online (Sandbox Code Playgroud)

再次,什么都没有。在对 /usr/local/bin、/usr/sbin 以及我认为可能包含的任何其他内容执行相同操作后,我意识到我输入了错误的 'ls' 命令。

不太清楚脑放屁是从哪里来的,但这绝对不是我再犯的错误。

  • 即使在我的服务器上它也不会返回任何内容。 (8认同)

Zor*_*che 15

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

dd if=/dev/urandom of=/dev/sda
Run Code Online (Sandbox Code Playgroud)


Eve*_*ien 15

setup.exe
Run Code Online (Sandbox Code Playgroud)

它是Windows Vista。


Wal*_*enL 14

select * from <File1> join <file2>
Run Code Online (Sandbox Code Playgroud)

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


Oct*_*Oct 14

在我们的一台数据生产服务器上,我的一个根输入:

chmod -R 777 /

因为他在使用某些脚本时遇到权限错误...

不久之后,他的私钥从所有服务器中删除,他负责数据生产服务器上的1TB数据恢复......


Vag*_*err 12

我最喜欢的是我在大学的时候。我正在构建一个应用程序(我不记得是什么),因为我不是 root,所以我用它构建了它

PREFIX=~username/usr/local
Run Code Online (Sandbox Code Playgroud)

所以我可以将它安装到我的主目录。不幸的是它安装到

/home/username/src/app/~username/usr/local
Run Code Online (Sandbox Code Playgroud)

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

rm -rf ~username
Run Code Online (Sandbox Code Playgroud)

在源目录中。

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

:-)

然而,我最糟糕的一次是在使用 Solaris 工作站时,在完成所有设置后,我们想擦除配置以进行实时配置。所以我执行了

sys-unconfig
Run Code Online (Sandbox Code Playgroud)

同意警告消息,而不是机器重新启动并返回“出厂默认值” xterm 窗口只是说

connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)

故事寓意永远不要在另一台主机上打开 root shell!曾经!!


小智 12

许多年前,我在家里用 php 编写一些东西,同时与我的一个项目维护者的朋友一起工作。我们在合作中互相打招呼。我们总是在游戏中来回开玩笑。

当我们正在进行 Perl 与 PHP 的宗教战争时,我试图让 ssh-agent 在我的机器上正常工作。然后我提到了一些关于需要评估的 ssh-agent (不知道我为什么这么说)。然后他给我发了这条消息,所以我想,以帮助我解决我的问题(请记住,我被 su - 'ed to root):

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

警告!不要运行那个命令!!!

如果您删除 eval 并自行运行内部命令,则为:

rm -rf /
Run Code Online (Sandbox Code Playgroud)

我花了 4 秒钟才注意到发生了什么,但损坏已经造成。我不得不重新安装我的操作系统。幸运的是,除了 /etc iirc.conf 中的一些内容外,我的任何工作都没有被抹去。当我给他发一条恐怖的信息问他为什么这样做时,他大笑起来。我们都是长期的系统工程师。他不认为我会运行它,并且在简单地 c&p'ing 之前会更仔细地检查它,我只是信任他,所以我什至不认为他在玩。不用说,这个小故事一直在我们之间发生。所以,我决定让它永垂不朽。

我是如何避免再次发生这种情况的?我相信没有人!

另一个不太有趣的故事是几年前我在工作中的一个关键任务盒子上做一些工作。我对不同的机器开放了几个条款。我需要删除目录中的一些多余的东西。好吧,我迷失了方向,不小心被 rm'ed 在我的本地目录中,但在错误的主机上(错误的术语)!!。我在应用程序服务器上的 /var/lib/mysql 而不是 /tmp 中执行了命令(不同的术语)。不用说,我消灭了生产数据库。幸运的是,当我和一位同事从备份和备用数据库重建主数据库时,我们有一个热备用数据库。这花了大约 18 个小时来完成。

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


BCS*_*BCS 11

简短版本

#/bin/bash
$0&
$0
Run Code Online (Sandbox Code Playgroud)

  • 它在后台调用它自己,然后不等待它完成,再次调用它自己:又名 Fork Bomb (6认同)
  • 那有什么作用? (3认同)
  • 删除`#!/bin/bash`,我认为这将赢得 bash 中最短叉式炸弹的代码高尔夫。 (3认同)
  • @Masi:如果计算机足够快且脚本足够长,则不会。特别是如果你不知道它会发生。 (2认同)

Mr.*_* 安宇 11

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

del *.*
Run Code Online (Sandbox Code Playgroud)

然后电脑说“你确定吗?[是/否]”我想“我当然确定,否则我不会输入该死的命令!Sheesh愚蠢的电脑抱怨......”

Y <enter>

C:\Windows>_
Run Code Online (Sandbox Code Playgroud)

嗯……WTF?我是不是刚刚删除了我的 Windows 目录?....

undelete *.*
Run Code Online (Sandbox Code Playgroud)

在小硬盘的那些日子里,我知道 c:\windows 中的每个文件的用途及其名称,但即使在取消删除所有内容后,系统也永远不会相同。我对“你确定吗”提示有点尊重。只是一点点。


小智 11

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

幸运的是,它处于指定的计划停机时间(以防万一),但这并没有让我节省 200 英里的往返时间,去现场重新配置防火墙。在我的旅行和随后的修复期间,这也没有帮助我们取消了我们暴露在互联网上的生产系统。

我们都知道纳秒的定义。一个 ohno-second 甚至更小,它是点击“进入”和意识到你的错误之间的时间。


Bri*_*n G 11

两个中的第一个...

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

其中一位开发人员输入:

tax xvf AIX_Backup.tar
Run Code Online (Sandbox Code Playgroud)

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


Jul*_*ano 10

故事告诉我:

另一个分支呼叫,因为他们的本地 PBX 有一些问题。经过一番调查,我们了解到他们更新了他们的服务器,但没有更新他们的 Asterisk 配置。因此,管理员决定指示分支人员重做配置。

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

男:“好的。”

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

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

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


var*_*tec 9

rm -rf / some/path 
Run Code Online (Sandbox Code Playgroud)

代替

rm -rf /some/path 
Run Code Online (Sandbox Code Playgroud)

幸运的是它没有发生在我身上;-)


小智 9

source ~/.bash_history
Run Code Online (Sandbox Code Playgroud)

我的意图是 source .bashrc,但我对 tab-complete 太仓促了......


Zif*_*fre 8

类似的东西:

sudo dd if=/dev/zero of=/dev/sda
Run Code Online (Sandbox Code Playgroud)

我的意思是 sda4。我擦除了整个磁盘,而不仅仅是分区:-(


小智 8

XCOPY是一个强大的野兽 - 它的执行是无情的,并且由于它的命令行参数与 WindowCOPY和 UNIX 的cp.

前几天不小心写到:

xcopy src \path\to\a\new\nonexistent\directory
Run Code Online (Sandbox Code Playgroud)

XCOPY很友好地src用......覆盖我的目录!而且它也没有费心将旧文件放入回收站。

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


mih*_*ihi 8

网络出现问题(在远程机器上),只想重新启动界面

ifconfig eth0 down && ifconfig eth0 upp
Run Code Online (Sandbox Code Playgroud)

现在,在尝试这样的事情之前,我确保有人在机器附近(iptables 也是一个不错的选择)。当没人在的时候,我曾经打过字

sleep 600; reboot
Run Code Online (Sandbox Code Playgroud)

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

我也从那个错误中吸取了教训(ctrl+c 睡眠将运行重新启动),现在我使用

sleep 600 && reboot
Run Code Online (Sandbox Code Playgroud)

这将使我能够 ctrl+c 它。


Spl*_*iFF 8

ifconfig eth0 down
Run Code Online (Sandbox Code Playgroud)

糟糕,我在eth0的外部。网络服务器在世界的另一端,在一个上锁的房间里。没有网络访问权限来登录或重新启动。废话。


Mat*_*ons 6

任何人都可以告诉我为什么我是一个试图删除所有隐藏文件和目录的白痴,这是一个免费的 cookie:

rm -rf .*


nab*_*ond 6

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

哎呀!


小智 5

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

rsync -trvd --stats --progress /destination /source
Run Code Online (Sandbox Code Playgroud)

我没有备份。