Maior erro na linha de comando? [fechadas]


35

Qual foi o maior dano (de qualquer tipo) que você já causou com uma única linha de comando equivocada / mal digitada / equivocada? Excluí um banco de dados do sistema de produção por engano há um tempo, por exemplo, mas tive sorte (por exemplo, backup) e não houve perda permanente de dados, perda de dinheiro, danos à propriedade etc.

Mais importante (para votar), o que você faz para garantir que isso nunca mais aconteça?


9
Desde que esta é uma pesquisa, que deve ser CW
Eddie

Então, por que as pesquisas não são CW por padrão?
660 Luke

4
Como eles devem saber que é uma pesquisa progressivamente?
Mikeage

1
Se o mecanismo for o mesmo do SO, mesmo que você possa editar uma pergunta, não poderá alterá-la para CW. Somente o OP ou um moderador pode fazer isso.
caos

9
Boa ideia - publique publicamente o seu erro mais destrutivo na Internet para todos os futuros empregadores verem! :)
Sam Schutte

Respostas:


46

No SQL server, em um sistema de produção:

update customer set password = '' <enter>

O backup mais recente tinha cerca de uma semana.

Para atenuar isso, agora eu normalmente escrevo uma selectdeclaração primeiro para garantir que a wherecláusula esteja correta, depois volto e edite-a para inserir a setcláusula e alterá-la para update.


11
Ai. Outra opção seria 'COMEÇAR A TRANSAÇÃO'; é bom saber que você pode reverter. :)
Murali Suriar

5
Combinação dos dois, selecione count (*) para ver quantos eu acho que vou atualizar e, em seguida, atualize na transação para fazer a atualização. Se as contagens corresponderem a confirmação, se não for, reverter e descobrir o porquê. Claro, eu não faço isso para atualizações "simples", e essas sempre são as que te ferem. :-)
WaldenL

Culpado, eu fiz isso me :(
Jim OHalloran

8
Tome cuidado com BEGIN TRANSACTION em um sistema ativo (ou um sistema de teste sendo usado por outras pessoas também) - certifique-se de COMITAR ou ROLLBACK em breve, ou você pode acabar travando outros processos aguardando bloqueios nos recursos nos quais sua transação trava.
21715 David Spillett

Em alguns sistemas, você pode fazer; ser o identificador declaração de conclusão, em vez de <enter>
J. Polfer

37

Maior erro? Pensando que eu tinha definido duas variáveis ​​quando não tinha. Então rm -rf $ VARIABLE / $ VARIABLE2 se tornou rm -rf /. O FreeBSD atualizou recentemente sua ferramenta rm para que rm -rf / não seja mais possível precisamente por causa desse erro!


4
Gostaria de salientar que, relendo minha frase, parece que eu fui a razão de mudar a maneira como rm funcionava, não é esse o caso. Aparentemente, as pessoas usavam rm em scripts e a mesma coisa aconteceu e eles queriam adicionar um fail-safe.
X-Istence

3
i retirar meu voto então :)
Colin Pickard

Uma vez vi um cara fazer rm -rf / usr / local / junk ... eu vi, mas não a tempo de impedi-lo de entrar.
23611 Satanicpuppy

E quanto a "rm -rf / *" em vez de "rm -rf /"? Eu não tenho idéia de como ele olha para BSD de agora, mas deve funcionar;)
Ryszard Stawiarski

26
shutdown -h now 

destinado à estação de trabalho local, mas digitou-a enquanto estava logado via ssh no servidor de produção. Desde então, eu sempre tenho o nome do host no meu $PS1.


Pelo menos você provavelmente não iria perder todos os dados ...
Zifre

É verdade, mas isso foi há muito tempo, IPMI e KVMoIP ainda não eram populares. Tivemos que procurar um técnico para realmente ir até lá e acionar o interruptor.
Vartec


Mesmo em estações de trabalho locais, eu sempre uso "+1" apenas por precaução.
7289 msanford

3
Eu costumava colocar o nome do host no prompt, mas agora corrigi os comandos shutdown (e related - halt et al) para solicitar que eu digite o nome da máquina atual antes de executar o comando. Isso me dá a etapa extra necessária para perceber que acabei de desligar o servidor errado. O problema é que, uma vez que eu implementado esse patch, eu nunca fiz isso de novo - mas a sua salva alguns dos meus colegas tho :)
Moo

26

Omitindo -r de um comando de desligamento. Em um servidor remoto. Do outro lado do país. Sem equipe de TI no escritório remoto.

Todos nós já fizemos isso, é quase como um rito de passagem nesta fase.


25

Em um sistema VMS, eu estava usando o comando ASSIGN DCL para atribuir nomes lógicos e queria RECALL de uma linha de comando ASSIGN anterior. Agora, no VMS, você digitou apenas o número de caracteres de um comando para torná-lo inequívoco. Então eu pretendia digitar

REC ASS

mas eu digitei acidentalmente

REQ ASS

em vez de. O REQ foi suficientemente ambíguo para o comando REQUEST, que transmite o argumento para todos os operadores privados (que eram todos em TI). Então todo o departamento recebeu minha mensagem de transmissão que era simplesmente "ASS".


Hilarious :-) :-) #
314 Ludwig Weinzierl #:

1
Todo software é péssimo, como todos sabemos. Por que alguém na equipe de TI acha que isso significa outra coisa?
Adriano Varoli Piazza

24

Em um sistema Solaris: "killall dataLoader".

'dataLoader' era um aplicativo em que eu estava trabalhando. No Linux, o killall funciona como pkill. Ele envia um sinal para processos que correspondem a uma sequência fornecida como argumento. No Solaris, mate todos os esforços para matar tudo no sistema que o usuário atual pode matar. Eu era raiz.


estado lá, feito isso ...
James

2
Eu fiz exatamente o mesmo duas semanas atrás, em um sistema de energia 5 AIX 6 ... Ok, não exatamente, eu fiz um "killall -9 java" :)
Andor

3
@ Andor: Bem, você matou javacom certeza. ;)
Bobby

16

Uma vez, muitas luas atrás, eu precisava encontrar um executável específico, mas não conseguia lembrar o nome completo (mas conseguia lembrar algumas letras). Então, pensei em verificar o diretório / usr / bin com algo parecido com isto

rm /usr/bin/i*g*

Estranho. Nada retornou. Achando que acabara de me lembrar da segunda carta, tentei novamente com

rm /usr/bin/i*

Mais uma vez, nada. Depois de fazer o mesmo com / usr / local / bin, / usr / sbin e qualquer outra coisa que imaginei que poderia estar, percebi que estava digitando errado o comando 'ls'.

Não sei bem de onde veio o cérebro, mas definitivamente não é um erro que cometi novamente.


Isso é algo que você deve estar ciente ao reutilizar caminhos como, digamos, ls / etc / something, Ctrl + r, Ctrl + a, Del, Del, cat, Enter.
2828 Alex

8
Mesmo no meu servidor, ele não retorna nada.
Mircea Vutcovici 17/03


16

Tentando alterar a propriedade de tudo em um diretório, incluindo arquivos de ponto, com:

chown -R user * .*

Adivinha o que isso faz?


10
ler e-mail muito rápido ??
Wiren

5
Estive lá, isso me ensinou o padrão. [^.] * Muito bem #
Maciej Pasternacki

1
@chaos: O comando parece remover tudo em seu diretório atual, e até mesmo dot-arquivos
Léo Léopold Hertz 준영

2
@chaos: Ele não remove .. e nunca remove e nunca removerá. Você está simplesmente enganado. Por favor, cite uma única implementação do unix que tem esse comportamento (que eu nunca vi e que está documentado para não ser o comportamento de até mesmo os unixes super-antigos, como a 7ª edição unix).
chris

1
./.* impediria isso ou ainda seria propagado para backup na árvore de diretórios via ./../?
Tj111

15

Pretendia destruir / dev / sdb, felizmente eu tinha um bom backup atualizado

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

Fez isso uma vez (exceto com / dev / zero), destruiu a partição raiz de um servidor Linux, recuperada copiando tudo de volta de um servidor idêntico.
Marius Gedminas 28/09/10

14
select * from <File1> join <file2>

Em uma caixa de produção. Observe a falta de uma oncláusula. :-) Ambas as tabelas eram tabelas de vários milhões de linhas, e isso foi em um AS / 400 em meados dos anos 90, onde uma vez que o SQL estava sendo executado, você não podia matá-lo.


14

Em um dos nossos servidores de produção de dados, uma das minhas raízes digitou:

chmod -R 777 /

Porque ele estava recebendo erro de permissão com alguns scripts ...

Logo depois, sua chave privada foi removida de todos os servidores e ele cuidou da restauração de dados de 1 TB no servidor de produção de dados ...


12

Meu favorito foi quando eu estava na universidade. Eu estava construindo um aplicativo (não me lembro o quê) e, como não era root, o construí com

PREFIX=~username/usr/local

Para que eu pudesse instalá-lo no meu diretório pessoal. Infelizmente, ele foi instalado no

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

em vez de. Naturalmente para excluí-lo como começar de novo eu executei

rm -rf ~username

No diretório de origem.

Eu me perguntava por que estava demorando tanto ...

:-)

No entanto, o pior foi quando eu estava trabalhando com uma estação de trabalho solaris e, depois de fazer toda a configuração, queríamos limpar a configuração para a configuração ao vivo. Então eu executei

sys-unconfig

Concordou com a mensagem de aviso e em vez de a máquina reiniciar e voltar para "padrões de fábrica" ​​A janela do xterm dizia simplesmente

connection closed by foreign host.

Moral da história Nunca deixe uma raiz aberta em outro host! SEMPRE!!


Eu mesmo escolho o nome do host no PS1. Em algum momento, usei cores diferentes para logins locais e remotos (assim como cores diferentes para usuário / raiz).
Marius Gedminas

12

Muitos anos atrás, eu estava em casa codificando algumas coisas em php enquanto trabalhava em um projeto com um amigo meu que era o mantenedor do projeto. Estávamos conversando em um esforço de colaboração. Nós sempre brincamos de um lado para o outro no jogo.

Eu estava tentando fazer o ssh-agent funcionar corretamente em minha máquina enquanto estávamos tendo uma guerra religiosa entre Perl e PHP. Então mencionei algo sobre o ssh-agent que precisava ser avaliado (não sei por que disse isso). Então ele me enviou esta mensagem em um esforço, assim pensei, para me ajudar com o meu problema (lembre-se de que eu tinha que enraizar):

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

ATENÇÃO! NÃO EXECUTE ESTE COMANDO !!!

SE você remove o eval e executa o comando interno por si só, é:

rm -rf /

Levei 4 segundos para perceber o que estava acontecendo, mas o estrago já estava feito. Eu tive que reinstalar meu sistema operacional. Felizmente, nada do meu trabalho foi eliminado, exceto algumas coisas no / etc iirc. Ele riu muito quando lhe enviei uma mensagem de horror perguntando por que ele fez isso. Nós dois somos engenheiros de sistemas de longo prazo. Ele não achava que eu iria rodar e seria mais cuidadoso em checar antes de simplesmente c & p'ing e eu confiava nele, então nem pensei que ele estivesse brincando. Escusado será dizer que esta pequena história surge o tempo todo entre nós. Então, eu decidi imortalizá-lo.

Como mitiguei isso de acontecer novamente? Eu não confio em ninguém!

Outra história menos interessante é que, alguns anos atrás, eu estava trabalhando em uma caixa de missão crítica no trabalho. Eu tinha alguns termos abertos para máquinas diferentes. Eu precisava remover algumas coisas supérfluas em um diretório. Bem, eu me perdi nos meus termos e acidentalmente me levantei . no meu diretório local, mas no host errado (termo errado) !!. Eu executei o comando em / var / lib / mysql em vez de / tmp no servidor de aplicativos (termo diferente). Escusado será dizer que acabei com o banco de dados de produção. Felizmente, tínhamos uma espera calorosa para a qual passamos, enquanto eu e um colega de trabalho reconstruímos a primária de backups e espera. Isso levou cerca de 18 horas para fazer.

Mitigação: mais cuidado em quais janelas eu executo comandos antes de executá-los.


No trabalho, todos configuramos o .bashrc de todos os nossos servidores para exibir nomes de usuários no bash em cores exclusivas. Dessa forma, você sempre vê em um instante qual máquina você é. (Ok, isso pode se tornar um problema quando você está managin mais do que talvez 20-30 máquinas ... mas ainda muito útil.)
fgysin Reintegrar Monica

+1 por confiar em ninguém.
Wayne Werner

11

a versão curta

#/bin/bash
$0&
$0

Por que vale a pena, se você nunca fazer que não como root, executekill -9 -1
BCS

3
o que isso faz?
18419 Nathan DeWitt

6
Ele chama isso de auto no fundo do que, em seguida, sem esperar que ao fim, chama-lhe a si mesmo novamente: aka Fork bomba
BCS

2
@ Masi: Não se o computador for rápido o suficiente e o script for longo o suficiente. Especialmente se você não sabe que isso vai acontecer.
Voyager

3
Solte o #!/bin/bash, e acho que isso ganharia um código de golfe para o menor forkbomb no bash.
Joey Adams

11

Uma vez eu quis excluir um monte de arquivos em um diretório.

del *.*

O computador então disse: "Você tem certeza? [S / N]" Pensei: "É claro que não teria digitado o comando danado de outra maneira! Sheesh computadores estúpidos resmungam ..."

Y <enter>

C:\Windows>_

Hum ... WTF? Acabei de apagar meu diretório do Windows? ....

undelete *.*

Naqueles dias de pequenos discos rígidos, eu sabia para que serviam todos os arquivos em c: \ windows e qual era seu nome, mas mesmo depois de desmarcar tudo o sistema nunca mais era o mesmo. Ganhei um pouco de respeito pelo prompt "você tem certeza". Só um pouco.


1
Uma vez eu fiz exatamente a mesma coisa. Eu fiz o sistema inicializar e executar novamente, mas nunca mais estava certo. Eu reconstruí o sistema cerca de uma semana depois.
21410 Jim Jimalloran

11

Acho que a coisa mais estúpida que já fiz foi remover a rota padrão em um cluster de firewall externo - enquanto vpn'ed no meu desktop a mais de 160 quilômetros de distância.

Felizmente, foi em um período designado como tempo de inatividade planejado (apenas no caso), mas isso não me salvou da viagem de ida e volta de 200 milhas para reconfigurar o firewall no local. Também não ajudou que isso eliminou nossos sistemas de produção expostos à Internet durante a minha viagem e a correção subsequente.

Todos nós sabemos a definição de um nanossegundo. Um minuto é ainda menor, e é o tempo entre pressionar 'enter' e perceber seu erro.


11

Primeiro de dois ...

Em uma caixa Solaris, tínhamos um backup tar de uma máquina AIX.

Um dos desenvolvedores digitou:

tax xvf AIX_Backup.tar

É claro que os caminhos no imposto eram absolutos e acabamos fazendo uma nova distribuição do unix ... Solarix ... O único problema da distribuição é que ela não inicializou :(


10

A história me contou:

Outra filial ligou porque o PBX local teve alguns problemas. Após alguma investigação, descobrimos que eles atualizaram o servidor, mas não a configuração do Asterisk. Portanto, o administrador decidiu instruir o responsável pelo ramo a refazer a configuração.

Admin: "Ok, agora, digite rm -rf / etc / asterisk"

Cara: "Ok."

Admin: "Agora, digite cp / var / ..."

Guy: "Espere, ainda está em execução ..."

Admin: ??? ... !!!


1
Se algo pode dar errado, vai dar errado.
Joey Adams

9
rm -rf / some/path 

ao invés de

rm -rf /some/path 

Felizmente, isso não aconteceu comigo ;-)


aconteceu com um colega meu recentemente. Felizmente, foi apenas com / etc / algum / outro / caminho
Ikke

Ele deve estar desativado! Eu acho que agora está desativado em muitos sistemas operacionais. Muito medo de tentar, no Ubuntu rm-rf /
Lakshman Prasad

Na verdade, seria perigoso para o sistema apenas com sudo rm-rf /
Voyager

Estive lá, fiz isso ...
fgysin restabelece Monica

9
source ~/.bash_history

Minha intenção era source .bashrc, mas eu estava muito apressado com o tab-complete ...


+1: Esse é incrível.
Satanicpuppy

8

Algo nesse sentido:

sudo dd if=/dev/zero of=/dev/sda

Eu quis dizer sda4. Limpei o disco inteiro, não apenas a partição :-(


esteve lá .
Mr. Shiny and New #

8

XCOPYé uma fera poderosa - impiedosa em sua execução e retardada pelo fato de que seus argumentos de linha de comando são inversos aos do Windows COPYe do UNIX cp.

Alguns dias atrás, escrevi acidentalmente:

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

XCOPYteve a gentileza de sobrescrever meu srcdiretório com ... nada! E também não se preocupou em colocar os arquivos antigos na lixeira.

Ah, e acontece que XCOPYrealmente substitui os mesmos setores no disco em vez de alocar novos. Eu tentei 3 programas de recuperação de disco, e o melhor só conseguiu recuperar 3 dos 10 arquivos perdidos. Claro que esses 3 arquivos eram apenas vshost.exee seus amigos. Inchar!


8

teve problemas com a rede (em uma máquina remota) e só queria reiniciar a interface

ifconfig eth0 down && ifconfig eth0 upp

Atualmente, garanto que alguém esteja perto da máquina antes de tentar coisas como esta (o iptables também é um bom candidato). E quando ninguém estava lá, eu digitei uma vez

sleep 600; reboot

em outro terminal (tela), para que ele fosse reiniciado se eu não pudesse pressionar Ctrl + c dentro de 10 minutos.

Eu aprendi com esse erro também (ctrl + c o sono executará a reinicialização) e agora eu uso

sleep 600 && reboot

o que me permitirá pressionar Ctrl + C.


1
shutdown -r +5irá reiniciar o sistema em 5 minutos, a menos que você interrompa o shutdownprocesso com, killall shutdownpor exemplo.
21811 gelraen #

1
Posso apenas ver o administrador que comete o erro de mihi no Solaris e, em seguida, (aprendendo com o erro) tenta a alternativa de gelraen.
outis

8
ifconfig eth0 down

Opa, eu estou do lado externo do eth0. O servidor da web está do outro lado do mundo, em uma sala trancada. Sem acesso à rede para efetuar login ou reiniciar. Porcaria.


6

Um cookie gratuito para qualquer um que possa me dizer por que eu era um idiota por tentar remover todos os arquivos e diretórios ocultos da seguinte maneira:

rm -rf. *


1
Seu comando também remove subdiretórios abaixo do diretório atual?
Léo Léopold Hertz

Pergunto-me se o seu padrão está combinando ..hardlink
Mircea Vutcovici

BTW, você quer ganhar biscoitos :-)
Matt Simmons

6

Ao limpar minha pasta pessoal em um servidor da web de produção, esqueci que havia vinculado a raiz da web do servidor a um local da minha pasta pessoal. Sem pensar, eu executei um rm -rf nessa pasta e, em seguida, sei que as pessoas estão chamando que o site está inoperante!

OOPS!


5

Certa vez, eu estava comparando dados em duas pastas e executei o rsync com a opção -d (exclua arquivos no destino que não estão na fonte). E então eu troquei a origem e o destino quando executei o rsync. Isso excluiu todos os novos arquivos que eu queria fazer backup. Agora eu aprendi a executar o rsync com -n (dry-run).

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

Eu não tinha backup.


4

Era uma vez (provavelmente o Sistema III, mas foi há muito tempo), era possível criar um arquivo nomeado *usando a citação correta do shell. Quando encontrei um no meu diretório pessoal, digitei rm *e coloquei o dedo na tecla de retorno quando algo me fez hesitar e pensar sobre isso ...

Criar esse arquivo para outros usuários era uma brincadeira comum.

Se o arquivo estiver em um diretório, é difícil mitigá-lo. O reflexo de apenas digitar seu nome exatamente como lsexibido, é bastante forte.

A outra brincadeira (menos prejudicial) era nomear arquivos com espaço em branco à direita (ou apenas espaço em branco), que eram muito mais difíceis de remover ...


2
Isso é o que GUIs são para :)
Zifre

1
shell conclusão é uma grande economia de tempo para os arquivos de espaços extras :)
Mr. Shiny and New安宇

1
Isso teria sido ca. 1985, e acessado via conexão discada ou via cabo RS-232 a partir de um clone de um terminal VT-100. Não é um emulador de terminal, mas um terminal real. Não me lembro de o csh ter preenchimento de nome no momento ... ;-) Hoje, é claro, as GUIs e o preenchimento de nome tornam esses dois menos arriscados, e muitos SOs tornam muito mais difícil criar esses arquivos sem recorrer a edição do setor de disco ....
RBerteig 15/05/09

tocar ./--help então nem rm --help nem rm * vai funcionar ...
mihi

Você ainda pode criar um arquivo chamado , pelo menos no Linux: "touch ' '". E "rm '*'" também funciona ...
sleske 15/09/09

4

Devido a alguma experiência ruim com falhas no JBoss após uma reinicialização, gosto de limpar os arquivos de trabalho do JBoss antes de uma reinicialização. Eu normalmente faria:

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

Para me proteger de digitar qualquer um dos muitos erros desastrosos possíveis, como:

  • / tmp / *
  • tmp / *
  • Você entendeu a ideia

Eu faço o último comando:

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

Como o usuário do JBoss teria dificuldade em remover todos os arquivos críticos que não pertencem a ele.

Na verdade, nunca cometi esse erro, mas estou seguro no caso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.