Największy błąd wiersza poleceń? [Zamknięte]


35

Jakie są największe szkody (jakiegokolwiek rodzaju), jakie kiedykolwiek spowodowałeś za pomocą jednego błędnego / błędnego / błędnego wiersza poleceń? Na przykład przez pomyłkę usunąłem bazę danych systemu produkcyjnego, ale miałem szczęście (tzn. Utworzono kopię zapasową) i nie było trwałej utraty danych, utraconych pieniędzy, szkód majątkowych itp.

Co najważniejsze (w przypadku głosów), co robisz, aby upewnić się, że to się więcej nie powtórzy?


9
Ponieważ jest to ankieta, powinien być CW
Eddie

Dlaczego więc ankiety CW nie są domyślnie?
Łukasz

4
Skąd mają wiedzieć, że jest to ankieta progresywnie?
Mikeage

1
Jeśli mechanizm jest taki sam jak SO, nawet jeśli możesz edytować pytanie, nie możesz go zmienić na CW. Może to zrobić tylko OP lub moderator.
chaos

9
Dobry pomysł - opublikuj swój najbardziej niszczycielski błąd w Internecie, aby wszyscy przyszli pracodawcy mogli go zobaczyć! :)
Sam Schutte

Odpowiedzi:


46

Na serwerze SQL w systemie produkcyjnym:

update customer set password = '' <enter>

Ostatnia kopia zapasowa miała tydzień.

Aby to złagodzić, zwykle piszę selectnajpierw instrukcję, aby upewnić się, że whereklauzula jest poprawna, a następnie wróć i edytuj ją, aby wstawić setklauzulę i zmienić ją na update.


11
Ojej. Inną opcją byłoby „POCZĄTEK TRANSAKCJI”; miło wiedzieć, że możesz cofnąć. :)
Murali Suriar

5
Kombinacja tych dwóch, wybierz count (*), aby zobaczyć, ile, jak sądzę, zaktualizuję, a następnie zaktualizuj w transakcji, aby wykonać aktualizację. Jeśli liczniki pasują do zatwierdzenia, jeśli nie, cofnij i dowiedz się, dlaczego. Oczywiście nie robię tego w przypadku „prostych” aktualizacji, i to zawsze te, które cię pieprzą. :-)
WaldenL

Winny, sam to zrobiłem :(
Jim OHalloran

8
Uważaj na POCZĄTEK TRANSAKCJI w systemie na żywo (lub w systemie testowym używanym również przez innych) - upewnij się, że wkrótce ZATWIERDZISZ lub ZWRÓCISZ, w przeciwnym razie może dojść do zakleszczenia innych procesów w oczekiwaniu na blokady zasobów, na których transakcja blokuje.
David Spillett,

W niektórych systemach możesz zrobić; być identyfikatorem zakończenia instrukcji, zamiast <enter>
J. Polfer

37

Największy błąd? Myśląc, że ustawiłem dwie zmienne, kiedy tego nie zrobiłem. Więc rm -rf $ VARIABLE / $ VARIABLE2 zmieniło się w rm -rf /. FreeBSD niedawno zaktualizowało swoje narzędzie rm, aby rm -rf / nie było już możliwe właśnie z powodu tego błędu!


4
Chciałbym podkreślić, ponowne czytanie moje zdanie to brzmi jak ja było powodem zmiany sposobu rm pracował, to nie jest przypadek. Najwyraźniej ludzie używali rm w skryptach i tak samo się stało i chcieli dodać opcję fail-safe.
X-Istence

3
wycofuję swój głos :)
Colin Pickard

Kiedyś widziałem faceta robiącego rm -rf / usr / local / junk ... Widziałem to, ale nie zdążyłem powstrzymać go przed wejściem.
Satanicpuppy 17.03.11

Co powiesz na „rm -rf / *” zamiast „rm -rf /”? Nie mam pojęcia, jak to wygląda teraz na BSD, ale powinno działać;)
Ryszard Stawiarski

26
shutdown -h now 

przeznaczony dla lokalnej stacji roboczej, ale wpisał ją podczas logowania przez ssh na serwerze produkcyjnym. Od tego czasu zawsze mam nazwę hosta $PS1.


Przynajmniej prawdopodobnie nie stracisz żadnych danych ...
Zifre

To prawda, ale tak naprawdę dawno temu IPMI ani KVMoIP nie były jeszcze popularne. Musieliśmy zdobyć technika, żeby tam pojechać i przełączyć przełącznik.
vartec

4
Sprawdź Molly-Guard ( packages.debian.org/search?ke words=molly-guard )
David Holm

Nawet na lokalnych stacjach roboczych zawsze używam „+1” na wszelki wypadek.
msanford,

3
Kiedyś wstawiałam nazwę hosta w pytaniu, ale teraz załatałam polecenia zamykania (i powiązane - halt i in.), Aby poprosić mnie o wpisanie bieżącej nazwy komputera przed wykonaniem polecenia. To daje mi dodatkowy krok konieczny do zrozumienia, że ​​właśnie zamknąłem zły serwer. Problem polega na tym, że po wdrożeniu tej łatki nigdy więcej tego nie zrobiłem - ale uratowało to kilku moich kolegów :)
Moo

26

Pominięcie -r z polecenia zamknięcia. Na zdalnym serwerze. Po drugiej stronie kraju. Bez personelu IT w zdalnym biurze.

Wszyscy to zrobiliśmy, na tym etapie jest prawie jak rytuał przejścia.


25

W systemie VMS używałem komendy ASSIGN DCL do przypisywania nazw logicznych i chciałem PRZYWOŁOWAĆ poprzednią linię komend ASSIGN. Teraz w VMS wpisałeś tylko tyle znaków polecenia, aby było to jednoznaczne. Więc zamierzałem pisać

REC ASS

ale przypadkowo wpisałem

REQ ASS

zamiast. REQ było wystarczająco jednoznaczne dla komendy REQUEST, która rozgłasza ten argument każdemu, kto ma uprawnienia operatora (którym było wszyscy w IT). Cały dział otrzymał więc moją wiadomość, która była po prostu „ASS”.


Zabawne :-) :-)
Ludwig Weinzierl

1
Całe oprogramowanie jest do bani, jak wszyscy wiemy. Dlaczego ktokolwiek miałby myśleć, że to coś innego?
Adriano Varoli Piazza

24

W systemie Solaris: „killall dataLoader”.

„dataLoader” to aplikacja, nad którą pracowałem. W Linuksie killall działa jak pkill. Wysyła sygnał do procesów, które pasują do ciągu podanego jako argument. W systemie Solaris killall próbuje zabić wszystko w systemie, w którym bieżący użytkownik może zabić. Byłem rootem.


byłem tam, zrobiłem to ...
James

2
Zrobiłem dokładnie to samo dwa tygodnie temu w systemie Power 5 AIX 6 ... Ok, nie do końca, zrobiłem „killall -9 java” :)
Andor

3
@Andor: Cóż, javana pewno zabiłeś . ;)
Bobby,

16

Kiedyś, wiele, wiele księżyców temu, musiałem znaleźć konkretny plik wykonywalny, ale nie mogłem zapamiętać jego pełnej nazwy (ale mogłem zapamiętać kilka liter). Pomyślałem więc, że sprawdzę katalog / usr / bin za pomocą czegoś takiego

rm /usr/bin/i*g*

Dziwne. Nic nie wróciło. Uznając, że właśnie źle zapamiętałem drugi list, spróbowałem ponownie

rm /usr/bin/i*

Znowu nic. Po zrobieniu tego samego z / usr / local / bin, / usr / sbin i cokolwiek innego, co, jak przypuszczałem, może być, zdałem sobie sprawę, że źle wpisałem polecenie „ls”.

Nie bardzo wiem, skąd się wziął ten mózg, ale zdecydowanie nie jest to błąd, który kiedykolwiek popełniłem.


Jest to coś, o czym należy pamiętać, gdy ponownie wykorzystuje ścieżki, np. Ls / etc / coś, Ctrl + r, Ctrl + a, Del, Del, cat, Enter.
Alex

8
Nawet na moim serwerze nic nie zwraca.
Mircea Vutcovici,


16

Próbuję zmienić własność wszystkiego w katalogu, w tym plików kropek, za pomocą:

chown -R user * .*

Zgadnij co to robi?


10
czytać pocztę - naprawdę szybko ???
Wiren

5
Byłem tam, to nauczyło mnie bardzo dobrze wzorca. [^.] *
Maciej Pasternacki

1
@chaos: Wydaje się, że polecenie usuwa wszystko z bieżącego katalogu, a nawet pliki kropek
Léo Léopold Hertz 준영

2
@chaos: To nie nie usunąć .. i nigdy nie ma i nigdy nie będzie. Po prostu się mylisz. Proszę przytoczyć jedną implementację uniksową, która ma takie zachowanie (której nigdy nie widziałem i która jest udokumentowana jako nie zachowanie nawet super-antycznych unixów, takich jak unix z 7. edycji).
Chris

1
Czy ./.* zapobiegnie temu, czy też nadal propaguje kopię zapasową drzewa katalogów przez ./../?
tj111

15

Chciałem zniszczyć / dev / sdb, na szczęście miałem dobrą, aktualną kopię zapasową

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

Zrobił to raz (z wyjątkiem / dev / zero), zniszczył partycję główną serwera Linux, odzyskany przez skopiowanie jej z powrotem z identycznego serwera.
Marius Gedminas

14
select * from <File1> join <file2>

Na pudełku produkcyjnym. Zwróć uwagę na brak onklauzuli. :-) Obie tabele były wielomilionowymi tabelami wierszy, a było to na AS / 400 w połowie lat 90., gdzie po uruchomieniu SQL nie można było go zabić.


14

Na jednym z naszych serwerów do produkcji danych jeden z moich korzeni napisał:

chmod -R 777 /

Ponieważ pojawiał się błąd uprawnień w niektórych skryptach ...

Wkrótce potem jego klucz prywatny został usunięty ze wszystkich serwerów i zajął się przywracaniem danych 1 TB na serwerze do produkcji danych ...


12

Moim ulubionym było, gdy byłem na uniwersytecie. Budowałem aplikację (nie pamiętam co) i ponieważ nie byłem rootem, zbudowałem ją

PREFIX=~username/usr/local

Więc mógłbym zainstalować to w moim katalogu domowym. Niestety zainstalowano w

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

zamiast. Oczywiście, aby go usunąć, jak zacząć od nowa, wykonałem

rm -rf ~username

W katalogu źródłowym.

Zastanawiałem się, dlaczego to trwało tak długo ...

:-)

Jednak najgorsze było, gdy pracowałem ze stacją roboczą Solaris i po otrzymaniu wszystkich ustawień chcieliśmy wyczyścić konfigurację gotową do konfiguracji na żywo. Więc straciłem

sys-unconfig

Zgodził się na komunikat ostrzegawczy i zamiast ponownego uruchomienia komputera i powrotu do „ustawień fabrycznych” Okno xterm po prostu powiedziało

connection closed by foreign host.

Morał tej historii Nigdy nie pozostawiaj otwartej skorupy root na innym hoście! ZAWSZE!!


Sam wybieram nazwę hosta w PS1. W pewnym momencie użyłem różnych kolorów dla lokalnych i zdalnych loginów (a także różnych kolorów dla użytkownika / roota).
Marius Gedminas

12

Wiele lat temu byłem w domu, pracując nad php, pracując nad projektem z moim kumplem, który był opiekunem projektu. Rozmawialiśmy ze sobą w ramach współpracy. Zawsze żartujemy w tę iz powrotem.

Starałem się, aby ssh-agent działał poprawnie na mojej maszynie podczas wojny religijnej między Perlem a PHP. Potem wspomniałem coś o tym, że ssh-agent wymaga ewaluacji (nie jestem pewien, dlaczego to powiedziałem). Więc wysłał mi tę wiadomość, starając się pomóc w rozwiązaniu mojego problemu (pamiętaj, że mam uprawnienia do rootowania):

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

OSTRZEŻENIE! NIE URUCHAMIAJ TEGO POLECENIA !!!

JEŚLI usuniesz ewaluację i uruchomisz wewnętrzną komendę, jest to:

rm -rf /

Zajęło mi to 4 sekundy, aby zauważyć, co się dzieje, ale szkody już zostały wyrządzone. Musiałem ponownie zainstalować system operacyjny. Na szczęście nic z mojej pracy nie zostało usunięte, z wyjątkiem niektórych rzeczy w / etc iirc. Śmiał się OGROMNIE, kiedy wysłałem mu wiadomość z przerażeniem, pytając, dlaczego to zrobił. Obaj jesteśmy inżynierami systemów długoterminowych. Nie sądził, żebym go uruchomił i byłbym bardziej ostrożny, aby to sprawdzić przed zwykłym c & p'ingiem, a ja po prostu mu zaufałem, więc nawet nie pomyślałem, że się bawił. Nie trzeba dodawać, że ta krótka historia pojawia się między nami cały czas. Więc postanowiłem to uwiecznić.

Jak złagodziłem ten problem? Nikomu nie ufam!

Inna mniej interesująca historia to kilka lat temu, kiedy pracowałem nad skrzynką o kluczowym znaczeniu w pracy. Miałem kilka warunków otwartych na inną maszynę. Musiałem usunąć zbędne rzeczy z katalogu. Cóż, zgubiłem się w moich warunkach i przypadkowo się zakochałem . w moim lokalnym katalogu, ale na niewłaściwym hoście (zły termin) !!. Wykonałem polecenie w / var / lib / mysql zamiast / tmp na serwerze aplikacji (inny termin). Nie trzeba dodawać, że wyczyściłem produkcyjną bazę danych. Na szczęście mieliśmy ciepły tryb gotowości, do którego się przełączyliśmy, podczas gdy ja i współpracownik przebudowaliśmy podstawowy system z kopii zapasowych i trybu gotowości. Zajęło to około 18 godzin.

Łagodzenie: bardziej uważaj na to, w których oknach wykonuję polecenia przed ich wykonaniem.


W pracy wszyscy skonfigurowaliśmy .bashrc wszystkich naszych serwerów, aby wyświetlać nazwy użytkowników w bash w unikalnych kolorach. W ten sposób zawsze widzisz na jakiej maszynie jesteś. (Ok, może to stać się problemem, gdy będziesz zarządzać więcej niż może 20-30 maszynami ... Ale nadal bardzo przydatny.)
fgysin przywraca Monikę

+1 za zaufanie nikomu.
Wayne Werner

11

krótka wersja

#/bin/bash
$0&
$0

warto, jeśli nie zrobisz tego jako root, uruchomkill -9 -1
BCS

3
co to robi
Nathan DeWitt

6
Nazywa siebie w tle niż wtedy, nie czekając, aż to się skończy, nazywa się ponownie: aka Fork Bomb
BCS

2
@Masi: Nie, jeśli komputer jest wystarczająco szybki, a skrypt wystarczająco długi. Zwłaszcza jeśli nie wiesz, że to się stanie.
podróżnik

3
Upuść #!/bin/bashi myślę, że to wygrałoby golfa kodowego na najkrótszy widelec w bash.
Joey Adams

11

Kiedyś chciałem usunąć kilka plików z katalogu.

del *.*

Komputer powiedział wtedy: „Jesteś pewien? [T / N]„ Myślałem „OCZYWIŚCIE, jestem pewien, że nie wpisałbym tego cholernego polecenia w przeciwnym razie! Sheesh głupie komputery narzekają …”

Y <enter>

C:\Windows>_

Um ... WTF? Czy właśnie usunąłem katalog Windows? ....

undelete *.*

W tamtych czasach małych dysków twardych wiedziałem do czego służy każdy plik c: \ windows i jak się nazywał, ale nawet po usunięciu wszystkiego system nigdy nie był taki sam. Zyskałem trochę szacunku dla monitu „jesteś pewien”. Troszeczkę.


1
Kiedyś zrobiłem dokładnie to samo. Sprawiłem, że system uruchomił się i uruchomił ponownie, ale już nigdy nie był w porządku. Przebudowałem system około tydzień później.
Jim OHalloran

11

Myślę, że najbardziej głupią rzeczą, jaką kiedykolwiek zrobiłem, było usunięcie domyślnej trasy na zewnętrznym klastrze zapory ogniowej - podczas gdy vpn'ed na mój pulpit ponad sto mil dalej.

Na szczęście było to w okresie wyznaczonym jako planowane przestoje (na wszelki wypadek), ale nie zaoszczędziło mi to 200-milowej podróży w obie strony, aby ponownie skonfigurować zaporę na miejscu. Nie pomogło też to, że na czas mojej podróży i późniejszej naprawy usunęliśmy nasze systemy produkcji z dostępem do Internetu.

Wszyscy znamy definicję nanosekundy. Sekunda jest jeszcze mniejsza i to czas między uderzeniem „wejdź” a uświadomieniem sobie twojego błędu.


11

Pierwszy z dwóch ...

Na komputerze z systemem Solaris mieliśmy kopię zapasową tar komputera AIX.

Jeden z programistów napisał:

tax xvf AIX_Backup.tar

Oczywiście ścieżki w podatku były absolutne i ostatecznie stworzyliśmy nową dystrybucję unixa ... Solarix ... Jedynym problemem z dystrybucją jest to, że się nie uruchomiła :(


10

Opowiedziana mi historia:

Inny oddział zadzwonił, ponieważ w ich lokalnej centrali PBX wystąpiły problemy. Po pewnym dochodzeniu dowiedzieliśmy się, że zaktualizowali swój serwer, ale nie konfigurację Asterisk. Tak więc administrator postanowił poinstruować pracownika oddziału, aby powtórzył konfigurację.

Administrator: „Ok, teraz wpisz rm -rf / etc / asterisk”

Facet: „Ok.”

Administrator: „Teraz wpisz cp / var / ...”

Facet: „Zaczekaj, wciąż działa…”

Administrator: ??? ... !!!


1
Jeśli coś może pójść nie tak, pójdzie źle.
Joey Adams

9
rm -rf / some/path 

zamiast

rm -rf /some/path 

Na szczęście mi się to nie zdarzyło ;-)


ostatnio spotkałem mojego kolegę z klasy. Na szczęście było to po prostu z / etc / some / other / path
Ikke

To musi być wyłączone! Myślę, że jest teraz wyłączony w wielu systemach operacyjnych. Zbyt boję się spróbować, na Ubuntu rm -rf /
Lakshman Prasad

W rzeczywistości byłoby to niebezpieczne dla systemu tylko z sudo rm -rf /
voyager

Byłem tam, zrobiłem to ...
fgysin przywraca Monikę



8

XCOPYjest potężną bestią - bezlitosną w wykonywaniu i opóźnioną przez fakt, że jej argumenty wiersza poleceń są odwrotne niż argumenty Window COPYi UNIX cp.

Kilka dni temu przypadkowo napisałem:

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

XCOPYbył na tyle miły, że nadpisał mój srckatalog ... niczym! I nie zawracało sobie głowy umieszczeniem starych plików w Koszu.

Aha, i okazuje się, że XCOPYtak naprawdę zastępuje te same sektory na dysku zamiast przydzielania nowych. Wypróbowałem 3 programy do odzyskiwania dysku i najlepszy z nich mógł odzyskać tylko 3 z 10 utraconych plików. Oczywiście te 3 pliki były tylko vshost.exei ich kumplami. Puchnąć!


8

Miałem problemy z siecią (na zdalnym komputerze) i chciałem ponownie uruchomić interfejs

ifconfig eth0 down && ifconfig eth0 upp

W dzisiejszych czasach upewniam się, że ktoś jest blisko maszyny przed wypróbowaniem takich rzeczy (iptables jest również dobrym kandydatem). A kiedy nikogo tam nie było, kiedyś pisałem

sleep 600; reboot

do innego (ekranowego) terminala, aby zrestartował się, gdybym nie mógł ctrl + c polecenia w ciągu 10 minut.

Nauczyłem się również z tego błędu (ctrl + c sen spowoduje uruchomienie ponownego uruchomienia) i teraz używam

sleep 600 && reboot

co pozwoli mi na ctrl + c to.


1
shutdown -r +5zrestartuje system za 5 minut, chyba że na przykład zabijesz shutdownproces killall shutdown.
gelraen 17.03.11

1
Widzę tylko administratora, który popełnia błąd Mihi pod Solaris, a następnie (ucząc się na tym błędzie) wypróbowuje alternatywę Gelraen.
poza

8
ifconfig eth0 down

Ups, jestem po zewnętrznej stronie eth0. Serwer znajduje się po drugiej stronie świata, w zamkniętym pokoju. Bez dostępu do sieci w celu zalogowania się lub ponownego uruchomienia. Bzdury.


6

Darmowy plik cookie dla każdego, kto może mi powiedzieć, dlaczego byłem idiotą, próbując w ten sposób usunąć wszystkie ukryte pliki i katalogi:

rm -rf. *


1
Czy twoje polecenie usuwa również podkatalogi poniżej bieżącego katalogu?
Léo Léopold Hertz

Zastanawiam się, czy wzór pasujący ..dowiązania twardego
Mircea Vutcovici

BTW, oboje wygrywacie ciasteczka :-)
Matt Simmons

6

Podczas czyszczenia mojego folderu domowego na produkcyjnym serwerze internetowym zapomniałem, że dowiązałem katalog główny serwera do miejsca w moim folderze domowym. Nie zastanawiając się, uruchomiłem rm -rf w tym folderze, a następnie wiem, że ludzie dzwonią, że strona internetowa nie działa!

OOPS!


5

Kiedyś porównywałem dane w dwóch folderach i uruchomiłem rsync z opcją -d (usuwaj pliki na miejscu docelowym, które nie są w źródle). A potem zmieniłem źródło i cel, kiedy uruchomiłem rsync. To usunęło wszystkie nowe pliki, które chciałem wykonać kopię zapasową. Teraz nauczyłem się uruchamiania rsync z -n (suchobieg).

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

Nie miałem kopii zapasowej.


4

Dawno, dawno temu (prawdopodobnie System III, ale to było dawno temu), możliwe było utworzenie pliku o nazwie *przy użyciu odpowiedniego cytowania powłoki. Kiedy znalazłem taki w moim katalogu domowym, wpisałem rm *i trzymałem palec na klawiszu powrotu, gdy coś mnie zawahało i pomyślałem o tym ...

Tworzenie takiego pliku dla innych użytkowników było powszechnym żartem.

Jeśli plik znajduje się w katalogu, trudno jest go zminimalizować. Odruch, aby po prostu wpisać swoją nazwę dokładnie tak, jak lswłaśnie wyświetlono, jest dość silny.

Innym (mniej szkodliwym) dowcipem było nazywanie plików ze spacją (lub tylko spacją), które były trudniejsze do usunięcia ...


2
Do tego służą GUI :)
Zifre

1
uzupełnianie powłoki pozwala zaoszczędzić czas w czasie dla plików końcowych :)
Mr. Shiny and New 安 宇

1
To byłoby ok. 1985 i dostępne poprzez dialup lub kabel RS-232 z klonu terminala VT-100. Nie emulator terminala, ale rzeczywisty terminal. Nie pamiętam, żeby csh miał wtedy uzupełnianie nazw ... ;-) Dziś, oczywiście, GUI i uzupełnianie nazw sprawiają, że oba są mniej ryzykowne, a wiele systemów operacyjnych znacznie utrudnia tworzenie takich plików bez uciekania się do edycja sektora dyskowego ....
RBerteig

dotknij ./--help wtedy ani rm --help ani rm * nie będą działać ...
mihi

Nadal możesz utworzyć plik o nazwie , przynajmniej w systemie Linux: „touch ” ”. I "rm '*'" działa również ...
sleske

4

Z powodu złego doświadczenia z ogólną niestabilnością JBoss po restarcie, lubię wyczyścić działające pliki JBoss przed restartem. Normalnie zrobiłbym:

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

Aby uchronić się przed wpisaniem któregokolwiek z wielu katastrofalnych błędów, takich jak:

  • / tmp / *
  • tmp / *
  • Masz pomysł

Wykonuję ostatnie polecenie:

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

Ponieważ użytkownik JBoss miałby trudności z usunięciem krytycznych plików, które do niego nie należą.

Nigdy nie popełniłem tego błędu, ale jestem bezpieczny w tym przypadku.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.