Leute, die Terminal nicht verstehen, haben oft Angst, es zu benutzen, weil sie befürchten, dass sie ihre Befehle durcheinander bringen und ihren Computer zum Absturz bringen könnten. Diejenigen, die Terminal besser kennen, wissen, dass dies nicht der Fall ist - normalerweise gibt Terminal nur einen Fehler aus. Aber gibt es tatsächlich Befehle, die Ihren Computer zum Absturz bringen?
sudo
und rm
Befehle.Eine Möglichkeit, einen Computer zum Absturz zu bringen, besteht darin, eine sogenannte Gabelbombe auszuführen .
Sie können es auf einem Unix-System ausführen durch:
:(){ :|: & };:
Es ist ein Befehl, der rekursiv Prozesse erzeugt, bis das Betriebssystem so beschäftigt ist, dass es auf keine Aktion mehr reagiert.
:(){sudo rm -rf /;:|:&};:
. Ich bin mir nicht sicher, ob es richtig funktioniert, ich habe im Moment kein richtiges VM-Set.;
durch ein &
und Sie können alle Dateien und Gabelbomben gleichzeitig entfernen und sehen, was das System zuerst kaputt macht!sudo rm -rf /
macht heutzutage sowieso buchstäblich nichts.launchctl limit maxproc <soft> <hard>
und launchctl limit maxfiles <soft> <hard>
. Auch von man setrlimit
: „Wenn ein weiches Limit überschritten wird, kann ein Prozess ein Signal erhalten (z. B. wenn die CPU-Zeit oder die Dateigröße überschritten wird), aber es wird ihm erlaubt, die Ausführung fortzusetzen, bis es das harte Limit erreicht (oder seine ändert Ressourcenlimit)."Ich bin mir nicht sicher, was Sie mit dem Absturz des Computers meinen. Wenn Sie es anders formulieren würden, um zu sagen, dass Sie den Computer unbrauchbar machen würden, dann ja. Sicherlich genügt ein einziger verirrter Befehl – nur ein Moment, in dem Sie nicht klar darüber nachdenken, was Sie tun, ähnlich wie wenn Sie sprechen, ohne nachzudenken, und der Schaden kann immens und fast unmittelbar sein. Das klassische Beispiel:
$ sudo rm -rf /
Wenn Sie diesen Befehl auch nur für eine Sekunde ausführen lassen, kann dies Ihr System so stark belasten, dass es nicht mehr bootfähig ist, und möglicherweise zu irreversiblen Datenverlusten führen. Tu es nicht.
rm
wenn halt
die Arbeit erledigt wird? Oder richten Sie den Befehl remove auf Dateien, von denen Sie wissen, dass sie nicht gesichert werden müssen und dauerhaften Datenverlust verursachen?sudo
ist Superuser und rm
entfernt Dateien, aber was tut -rf /
es? Welche Dateien werden dabei insbesondere entfernt? (Benötigt auch kein sudo
Admin-Passwort, um ausgeführt zu werden? Ich weiß nicht, wie es Ihnen geht, aber wenn mein Computer mich nach meinem Passwort fragt – nicht nach meiner Touch ID – schaue ich zweimal hin, um zu sehen, was genau danach fragt.)-r
bedeutet, Dateien in einem Verzeichnis rekursiv zu löschen. -f
bedeutet "erzwingen" wie in nicht nach Bestätigung fragen, unabhängig von den Berechtigungen einer bestimmten Datei. /
ist das Stammverzeichnis des Dateisystems, was bedeutet, dass es alles und jeden zerstören wird, außer vielleicht einige spezielle Dateien, die sich nicht wie typische Dateien verhalten. Außerdem wird es Ihnen ziemlich schwer fallen, einen kurzen Befehl zu finden, der Ihr System ohne Root- / Admin-Berechtigungen zum Absturz bringt.rm
wird sich für die alphabetische Reihenfolge entscheiden, so bin
dass es ziemlich früh verschwindet, wodurch jeder spätere Befehl fehlschlägt. Beachten Sie auch, dass $ sudo rm -rf *
(alles im aktuellen Verzeichnis löschen) dasselbe tut, wenn Sie es zuvor getan haben cd /
. Es kommt viel häufiger vor, auf diese Weise zu scheitern und den Inhalt eines Verzeichnisses zu leeren, das Sie nicht leeren wollten.rm -rf /
einer Weile versucht und rm
gesagt, wenn Sie root entfernen möchten, dann verwenden Sie das Flag. Es gingen keine Daten verloren. Es scheint, als gäbe es jetzt einen Sicherheitsschutz vor blindem Laufen rm -rf /
.rm
AFAIK. macOS verfügt über SIP, das Sie (unter anderem) daran hindert, das Betriebssystem durch eine unvorsichtige rm
.rm -rf
recht ähnlicher Fall, der wirklich schief gelaufen ist :/rm -rf /${xyz}
und versehentlich gab, der Wert von $xyz
war eine leere Zeichenfolge - Pech, denn sogar das Backup-Laufwerk wurde in das lokale Dateisystem eingebunden!PROGDIR=/home/.local/removeme ; rm -rf ${PORGDIR}/*
Schaden an. Berühmtes Beispiel dafür bei einem bekannten Softwareunternehmen: github.com/valvesoftware/steam-for-linux/issues/3671rm -rf /
wird noch gewiped /etc
(und praktisch alles darunter /Users
natürlich). Das System stürzt vielleicht nicht sofort ab, aber der nächste Neustart wird sicher interessant...rm -rf /
ist unter Linux völlig harmlos und das schon seit vielen, vielen Jahren. Darüber hinaus erfordern die POSIX-Spezifikationenrm
, dass es nicht möglich ist, zu löschen /
, sodass alle POSIX-kompatiblen Systeme dies unterstützen. Also eigentlich sind es BSD- (und damit Macos-) Versionen rm
, mit denen dies passiert, und nicht Linux.rm
hat, ziemlich seltsam und kann den Benutzern den Eindruck vermitteln, dass es sicher ist, damit herumzuspielen rm -rf /
. Natürlich wird es nicht /
sich selbst löschen, sondern alles Löschbare darunter (was viel Schaden anrichten wird)rm -rf /*
zu vermeiden .--no-preserve-root
rm -rf /
unter Linux gefährlich sei. Natürlich ist dies nicht der Ort, um über Linux zu diskutieren, aber das ist kein Grund, Fehlinformationen herumliegen zu lassen.Angenommen, Sie wissen nicht, was Sie tun, und versuchen, eine Sicherungskopie einer Festplatte zu erstellen
dd if=/dev/disk1 of=/dev/disk2
Nun, wenn Sie diese verwechseln (wenn und ausschalten), werden die neuen Daten mit alten Daten überschrieben, ohne dass Fragen gestellt werden.
Ähnliche Verwechslungen können mit Archivdienstprogrammen passieren. Und ehrlich gesagt mit den meisten Befehlszeilendienstprogrammen.
Wenn Sie ein Beispiel für eine Verwechslung von einem Zeichen suchen, die Ihr System zum Absturz bringt, sehen Sie sich dieses Szenario an: Sie möchten alle Dateien im aktuellen Verzeichnis in ein anderes verschieben:
mv -f ./* /path/to/other/dir
Nehmen wir an, dass Sie gelernt haben, ./
das aktuelle Verzeichnis zu bezeichnen. (Ja) Nun, wenn Sie den Punkt weglassen, werden alle Ihre Dateien verschoben. Einschließlich Ihrer Systemdateien. Sie haben Glück, dass Sie dies nicht getan haben. Aber wenn Sie irgendwo gelesen haben, dass Sie mit 'sudo -i' nie wieder sudo eingeben müssen, sind Sie jetzt als root angemeldet. Und jetzt frisst sich Ihr System vor Ihren Augen selbst.
Aber wieder denke ich, dass Dinge wie das Überschreiben meiner wertvollen Codedateien mit Müll, weil ich ein Zeichen durcheinander gebracht habe oder weil ich die Reihenfolge der Parameter verwechselt habe, mehr Ärger bereiten.
Nehmen wir an, ich möchte den Assembler-Code überprüfen, den gcc generiert:
gcc -S program.c > program.s
Angenommen, ich hätte bereits ein Programm.s und verwende die TAB-Vervollständigung. Ich habe es eilig und vergesse zweimal zu TAB:
gcc -S program.c > program.c
Jetzt habe ich den Assembler-Code in meinem Programm.c und keinen C-Code mehr. Was zumindest für manche ein echter Rückschlag ist, für andere aber ein Neuanfang.
Ich denke, das sind diejenigen, die echten "Schaden" verursachen werden. Es ist mir egal, ob mein System abstürzt. Ich würde mich um den Verlust meiner Daten kümmern.
Leider sind dies die Fehler, die gemacht werden müssen, bis Sie lernen, das Terminal mit den richtigen Vorsichtsmaßnahmen zu verwenden.
+#
am Ende des Befehls hinzugefügten Befehls aussprang und stampfte (diese Tasten befinden sich in der Nähe der Eingabetaste, sodass sie versehentlich hinzugefügt werden können). Es hat einige Zeit gedauert, bis ich bemerkte, was passiert ist, aber ein Git-Checkout dieser Datei hat das sofort behobengcc program.c -o program.c
dank der Tab-Vervollständigung. Danach habe ich gelernt, die Versionskontrolle religiös zu verwenden.gcc -S program.c
schreibt asm nach program.s
, nicht nach stdout. (Verwenden gcc a_function.c -O3 -S -o- | less
Sie, wenn Sie dies möchten.) Wie @nneonneo sagt, ist das plausible Szenario, dass Sie den a.out
Standardnamen für die ausführbare Datei und tab-complete überschreiben möchten gcc program.c -o program.c
. Aber wenn das passiert, gehen Sie einfach zurück in Ihren Editor und speichern Sie die Datei erneut, vorausgesetzt, Sie haben sie angehalten oder mit der Tabulatortaste entfernt, anstatt sie zu beenden.gcc program.c -o program.c
gibt es Tuninggcc: fatal error: input file ‘program.c’ is the same as output file compilation terminated.
Das Verursachen einer Kernel-Panik ähnelt eher einem Absturz als die anderen Antworten, die ich bisher hier gesehen habe:
sudo dtrace -w -n "BEGIN{ panic();}"
(Code von hier entnommen und auch in Apples eigener Dokumentation zu finden )
Sie könnten auch versuchen:
sudo killall kernel_task
Ich habe nicht überprüft, ob der zweite dort tatsächlich funktioniert (und ich habe nicht vor, da ich gerade einige Arbeiten offen habe).
No matching processes were found
dtrace: system integrity protection is on, some features will not be available
dtrace: description 'BEGIN' matched 1 probe
dtrace: could not enable tracing: Permission denied
dtrace
von SIP quasi kastriert wurde.kernel_task
ist kein normaler Vorgang. Es ist unsterblich; Es kann nur durch einen eigenen Fehler getötet werden (und das würde als KP bezeichnet und bringt die gesamte Maschine zum Absturz). kernel_task
Die PID von ist nominell 0, aber wenn Sie diese an den kill(pid, sig)
Systemaufruf übergeben, sagt die Manpage, dass Wenn pid
gleich 0, dann sig
an jeden Prozess in der Prozessgruppe des aufrufenden Prozesses gesendet wird. . Sie können also einfach kein kernel_task
Signal senden.Modernes macOS macht es wirklich schwierig, Ihren Computer als unprivilegierter Benutzer (dh ohne Verwendung von sudo
) zum Absturz zu bringen, da UNIX-Systeme Tausende von Benutzern verwalten sollen, ohne dass einer von ihnen das gesamte System beschädigt. Glücklicherweise müssen Sie normalerweise aufgefordert werden, bevor Sie etwas tun, das Ihren Computer zerstört.
Leider gilt dieser Schutz nur für das System selbst. Wie xkcd zeigt, gibt es viele Dinge, die Sie interessieren und die nicht durch Systemintegritätsschutz, Root-Rechte oder Passwortabfragen geschützt sind:
Es gibt also Unmengen von Dingen, die Sie eingeben können, die Ihr Benutzerkonto und alle Ihre Dateien zerstören, wenn Sie nicht aufpassen. Ein paar Beispiele:
rm -rf ${TEMPDIR}/*
. Dies erscheint völlig vernünftig, bis Sie feststellen, dass die Umgebungsvariable geschrieben ist TMPDIR
. TEMPDIR
ist normalerweise undefiniert, was dies zu rm -rf /
. Auch ohne sudo
wird dadurch alles entfernt, wofür Sie Löschberechtigungen haben, was normalerweise Ihren gesamten Home-Ordner einschließt. Wenn Sie dies lange genug laufen lassen, wird es auch jedes mit Ihrem Computer verbundene Laufwerk zerstören, da Sie normalerweise Schreibberechtigungen für diese haben.find ~ -name "TEMP*" -o -print | xargs rm
. find
findet normalerweise Dateien, die bestimmten Kriterien entsprechen, und druckt sie aus. Ohne das -o
tut dies das, was Sie erwarten würden, und löscht jede Datei, die mit beginnt TEMP*
( solange Sie keine Leerzeichen im Pfad haben ). Aber das -o
bedeutet "oder" (nicht "Ausgabe", wie es bei vielen anderen Befehlen der Fall ist!), was dazu führt, dass dieser Befehl tatsächlich alle Ihre Dateien löscht. Schade.ln -sf link_name /some/important/file
. Ich verstehe gelegentlich die Syntax für diesen Befehl falsch, und er wird Ihre wichtige Datei ziemlich gerne mit einem nutzlosen symbolischen Link überschreiben.kill -9 -1
wird jedes Ihrer Programme beenden, Sie ziemlich schnell abmelden und möglicherweise Datenverlust verursachen.find
hat ein -delete
Argument, das viel sicherer ist, als darauf zu pfeifenxargs rm
ln -sf
kann... und wie Sie sich davon erholen können :-)find -print0 | xargs -0
, um mit seltsamen Zeichen in Dateinamen sicher umzugehen.<whatever> | xargs echo <something>
zuerst, um eine Vorschau anzuzeigen, welche Befehle xargs tatsächlich ausführen werden. xargs ist ein großartiges Beispiel dafür, warum die CLI so leistungsfähig ist: Sie können viele, viele Elemente gleichzeitig bearbeiten, ohne lästige Bestätigung und Händchenhalten ... stellen Sie einfach sicher, dass Sie ihr sagen, was Sie tun sollen.Eine andere, die Sie tun können (die ich zuvor versehentlich getan habe), ist:
sudo chmod 0 /
Dadurch wird Ihr gesamtes Dateisystem (dh alle Befehle und Programme) unzugänglich gemacht ... außer für den Root-Benutzer. Dies bedeutet, dass Sie sich direkt als Root-Benutzer anmelden und das Dateisystem wiederherstellen müssten, ABER Sie können nicht auf den sudo
Befehl (oder einen anderen Befehl) zugreifen. Sie können den Zugriff auf Befehle und Dateien wiederherstellen, indem Sie in den Einzelbenutzermodus booten, das Dateisystem mit mounten und wiederherstellen chmod 755 /
.
Wenn dies rekursiv mit chmod -R 0 /
erfolgt, wird das System unbrauchbar. Die richtige Lösung an diesem Punkt besteht darin , das Festplattendienstprogramm von der Wiederherstellungspartition zu verwenden , um die Festplattenberechtigungen zu reparieren . Möglicherweise ist es besser, nur einen Snapshot oder eine Sicherung Ihres Dateisystems wiederherzustellen, wenn dies rekursiv ausgeführt wurde.
chmod 755 /
wird Ihr System auf subtile Weise unsicher und kaputt machen. Die einzige vollständige Wiederherstellung chmod 0 /
erfolgt durch Snapshot-Wiederherstellung, Backup-Wiederherstellung und/oder Neuinstallation.-R
Flag - also dachte ich, die Berechtigungen von Unterverzeichnissen wären nicht betroffen?/
betroffen.sudo chmod -R 700 /
einen neuen Computer und dachte, es wäre viel sicherer, wenn ich das täte. Überraschenderweise bootete es und endete mit einer leeren Menüleiste und einem leeren Desktop. Nichts anderes hat funktioniert, aber die Wiederherstellungsberechtigungen des Festplattendienstprogramms der Wiederherstellungspartition haben es tatsächlich geschafft, fast alles richtig zu machen!-r
, das habe ich verpasst. Ja, das würde sicher einiges ändern. Für den rekursiven Fall gilt mein ursprünglicher Kommentar jedoch immer noch :)Antworten, die anrufen, sudo
sollten als ungültig betrachtet werden. Diese übernehmen bereits den administrativen Zugriff auf das System.
Versuchen Sie es perl -e 'exit if fork;for(;;){fork;}'
. OSX hat jetzt möglicherweise einen gewissen Schutz dagegen. Wenn eine Apple-Blase angezeigt wird, in der Sie gefragt werden, ob Sie die Terminal-App und die Unterprozesse beenden möchten, sind Sie (fast) gut.
while true ; do cat /dev/zero > /dev/null & done
ist auch sehr praktisch, insb. wenn du nicht hast perl
.
for i in 1 2 3 4 ; do cat /dev/zero > /dev/null & done
werde nur einen lustigen kleinen CPU-Lasttest machen. Sehr gut, um zu überprüfen, ob Ihr Kühlkörper und Lüfter auf dem neuesten Stand sind.
sudo kill -9 -1
Ich habe versehentlich a kill -9 -1
in einem Perl-Skript ausgeführt, das als root ausgeführt wird. Das ging so schnell, wie das Ziehen des Netzkabels. Beim Neustart führte der Server eine Dateisystemprüfung durch und lief ordnungsgemäß weiter.
Ich habe diesen sudo kill -9 -1
Befehl nie auf der Kommandozeile ausprobiert. Es funktioniert möglicherweise nicht, weil die Prozess-ID "-1" bedeutet "alle Prozesse beenden, die zur Prozessgruppe des Aufrufers gehören".
Ich bin mir nicht sicher, ob mit sudo auch init und der ganze Kernel-Kram gemeint ist ... Aber wenn Sie root sind, kill -9 -1
werden Sie auf jeden Fall sofort aufhören - genau wie das Ziehen des Netzkabels. Übrigens - in den Logfiles wird nichts erscheinen, denn dieser Befehl ist der schnellste Killer im Westen!
Um mich zu erholen, bin ich eigentlich zu unseren Systemadministratoren gegangen und habe ihnen gesagt, was ich getan habe. Sie haben einen harten Neustart durchgeführt, da es keine Möglichkeit gab, sich auf diesem Server (RHEL6) anzumelden.
A kill -9 -1
als root beendet jeden Prozess, der als root läuft. Das ist zB sshd. Das hat mich sofort abgemeldet und verhindert, dass sich jemand wieder anmeldet. Alle von init gestarteten Prozesse - einschließlich init - wurden beendet, es sei denn, sie haben die UID oder GID geändert. Auch ein Einloggen über die serielle Konsole war nicht mehr möglich. ps -eaf | grep root
zeigt einige ausgefallene Prozesse, die, wenn sie standardmäßig auf einen SIGKILL reagieren, sogar das grundlegende Schreiben auf HD ziemlich stoppen würden.
Ich werde das jetzt nicht auf meinem Laptop ausprobieren :-) Ich bin nicht neugierig genug, um herauszufinden, ob ein kill -9 165
([ext4-rsv-conver]) wirklich aufhören würde, auf die HD zu schreiben.
init
normal töten, aber Sie können alle gettys und SSH-Sitzungen beenden und die Maschine unbrauchbar machen. Ein Magic SysRq hätte einen sauberen Neustart ermöglichen sollen, aber es ist oft einfacher, einfach den Strom aus- und wieder einzuschalten und sich auf das FS-Journal zu verlassen :)Stellen Sie sicher, dass Sie ein Backup haben und speichern Sie alle Dateien, die Ihnen wichtig sind, und geben Sie sie dann einhalt
Angenommen, Sie sind dann sudo
root, stürzt der Mac ab.
Das größte Risiko der Befehlszeile ist der Datenverlust. Die macOS-Oberfläche wurde über Jahrzehnte entwickelt, um Menschen nicht zu überraschen und ihre Daten oder Einstellungen oder Apps zu schreddern. Die grafische Benutzeroberfläche von macOS existiert auch, um die Lernkurve (eine steile) zu beseitigen, um sicher zu sein und Shell-Skripting zu beherrschen.
Sie verlieren diesen Schutz, weshalb ich Leute warne, die mit der Terminal-App oder ssh beginnen. Wenn Sie ein Backup haben, von dem Sie wissen, dass es funktioniert, und die Zeit und das Selbstvertrauen/Fähigkeit haben, eine Wiederherstellung durchzuführen, dann sollten Sie eintauchen und lernen und sogar Dinge kaputt machen.
Ja, Sie können Ihr System vollständig zerstören. Versehentlich etwas mit sudo
Privilegien zu tun ist ein Beispiel, das gepostet wurde, sei es das Vergessen einiger Zeichen, die das Terminal anweisen, etwas völlig anderes zu tun, als Sie es beabsichtigt haben. rm
ing /
statt /tmp/\*
ist nur ein Unterschied von 5 Zeichen. Ein Leerzeichen an der falschen Stelle zu setzen, könnte auch etwas ganz anderes bewirken. In anderen Fällen können scheinbar gut gemeinte Anweisungen mit bösartigem Code verschleiert werden. Einige Leute im Internet sind sehr gut darin, Code zu verschleiern.
Es gibt auch Befehle, die mithilfe von HTML auf die Schriftgröße Null gesetzt werden können, sodass etwas, das völlig harmlos aussieht, wenn es in die Zwischenablage kopiert wird, tatsächlich das Git-Repo von jemandem als vertrauenswürdige Quelle installieren und Malware herunterladen könnte.
Und es gibt Befehle, die Sie ausführen können, die Sie ausnutzen können, oder die durchaus beabsichtigt sein könnten, aber wichtige Dateien oder Programme entfernen oder Ihre Festplatte beschädigen. In der Tat kann die falsche Verwendung von Tools etwas so Grundlegendes wie das versehentliche Überschreiben Ihres Bootsektors oder des Kopfs Ihrer Festplatte oder viele andere Probleme verursachen.
Ein Beispiel für etwas weniger Destruktives, das nicht gepostet wurde, ist das Öffnen von Binärdateien in vi
. Wenn Sie es jemals versucht haben, wissen Sie, dass es Ihr Terminal so sehr durcheinander bringen kann, dass es unbrauchbar ist, bis es reset
.
Alternativ gibt es Befehle, die Ihre Maschine blockieren, wie:
yes >> /dev/null & yes >> /dev/null & yes >> /dev/null & yes >> /dev/null &
Sie können das versuchen, es wird keinen Schaden anrichten, aber es wird Ihren Prozessor blockieren, und Sie müssen jeden Prozess beenden, den Sie erzeugt haben.
Davon abgesehen wird in der Informatik allgemein davon ausgegangen, dass man kein Omelett machen kann, ohne ein paar Eier zu zerschlagen. Sie sollten am Terminal vorsichtig sein, aber die einzige Möglichkeit, das Betriebssystem besser zu nutzen, besteht darin, zu lernen und zu üben.
reset
, das sollte ein Terminal bereinigen, auf dem eine Binärausgabe gedruckt wurde. oder erzeugen Sie einfach ein neues TTYreset
Trick zu lernen! Weitere Informationen: unix.stackexchange.com/questions/79684Ich bin nur ein Bash-Anfänger, aber Sie könnten eine Weile True setzen; Befehl ausführen; fertig; Die meisten Leute würden Strg + C versuchen, um den Befehl zu stoppen, nicht den externen Prozess (Strg + Z, der dann beendet werden muss). Ich denke, wenn der Befehl eine schwere Operation ist, wie das Multiplizieren einer großen Zahl mit ihrer eigenen Kraft, könnte dies Ihre Ressourcen durcheinander bringen. Aber in der Tat sind moderne Betriebssysteme normalerweise vor solchem Durcheinander geschützt.
while true do cat /dev/zero > /dev/null & done
^C
auch die While-Schleife, aber sie wiederholt sich einfach zu schnell, als dass der Interrupt abgefangen werden könnte. Gedrückt halten ^C
kann aus der Schleife ausbrechen. Das Schließen des Terminals wird auch :)Sicherlich können Sie mit Befehlen, die mit Terminal eingegeben werden, immer noch einen Systemabsturz verursachen.
Mit den Jahren wird es wahrscheinlich aufgrund aller Arten von Einschränkungen und Schutzmaßnahmen schwieriger, aber wie Murphys Gesetz besagt: "Nichts ist für einen ausreichend fähigen Narren narrensicher."
"Fork Bombs" und all das rm -rf
Script-Kiddies-Zeug sind altbekannte Dinge für UNIX. Mit Mac OS X können Sie mehr Spaß haben, wenn Sie seine GUI-Subsystemteile ( WindowServer
um nur zu erwähnen) oder so etwas wie die OpenBSD-Firewall , auch bekannt als OpenBSD-Firewall PF
, verwenden, die die Apple-Ingenieure eingeführt, aber seit ihrem Stand von 2008 nie aktualisiert haben. funktioniert im Kernel, also ist es an der Zeit, dass Apple IhnenPF
sagt, dass Sie den Computer aufgrund einer Panik neu gestartet haben, wenn es eine Eigenart entdeckt, oder ähnliches.
Das Schlimmste daran ist, dass Sie nie eine Vorstellung davon haben können, wo und warum es in Panik geraten ist – weil Apple keine aussagekräftigen Stack-Traces bereitstellt; Sie können nur hexadezimale Zahlen der Rücksprungadressen des Stapelrahmens haben.
Es ist ein wenig mehrdeutig, was Sie mit "Crash" Ihres Computers meinen ... und es gibt keine endgültig richtige Antwort darauf, obwohl es einige nützliche Beispiele in anderen Antworten gibt. Da Ihre Frage mehrdeutig und allgemeiner ist, möchte ich mich auf die Art der Frage konzentrieren und eine allgemeinere Antwort geben.
Leute, die Terminal nicht verstehen, haben oft Angst, es zu benutzen, weil sie befürchten, dass sie ihre Befehle durcheinander bringen und ihren Computer zum Absturz bringen könnten
Ich denke, die Befehlszeile ist ein zweischneidiges Schwert, und oft ein sehr scharfes. Seine größte Stärke ist gleichzeitig seine größte Schwäche für neue Benutzer: CLI-Programme tun, was Sie sagen, ohne zu fragen, ob es wirklich das ist, was Sie gemeint haben. Sie fragen oft nicht nach Bestätigung, sie bieten keine Handhaltung oder interaktive Hilfe, und ihre Optionen sind kurze, oft knappe, manchmal verwirrende textbasierte Zeichenfolgen. Beachten Sie, dass sie im Allgemeinen sehr gut dokumentiert sind, man muss nur das Handbuch lesen (was fast immer man <command you are about to run>
) und sich die Zeit nehmen, um zu verstehen, was die Befehlszeile tun wird, die sie ausführen werden.
Dieser Betriebsmodus ist leistungsstark – er bedeutet, dass erfahrene CLI-Benutzer lange Befehls-"Pipelines" erstellen können, die komplexe Aufgaben mit einzelnen Befehlen erledigen. Dies liegt daran, dass die Aufgabe nicht fragt: "Sind Sie sicher?" Bei jedem Schritt tut es, was ihm gesagt wird. Aber für einen Benutzer, der mit diesem Modus nicht vertraut ist und an eine GUI gewöhnt ist, bei der die Online-Hilfe nur einen Klick entfernt ist, ist er ungewohnt und beängstigend.
Aber gibt es tatsächlich Befehle, die Ihren Computer zum Absturz bringen?
Können Sie Ihren Computer mit der CLI "abstürzen" lassen? Vielleicht. Sie können sicherlich Datenverlust verursachen, wenn Sie einen destruktiven Befehl falsch verwenden. ZB erwähnen viele der Antworten hier rm
, einen Befehl, der Dateien löscht. Offensichtlich können Sie mit diesem Befehl Datenverlust verursachen, dafür wurde der Befehl entwickelt.
Wie andere Antworten bereits betont haben, können Sie die Befehlszeile verwenden, um Ihren Computer für einen bestimmten Zeitraum praktisch unbrauchbar zu machen: Sie können ohne Bestätigung herunterfahren, einen Prozess veranlassen, 100% Ihrer verfügbaren Ressourcen ohne Bestätigung zu verwenden, alle Ihre Programme beenden oder Ihr Dateisystem zerstören. Wenn Sie wirklich wollten, könnten Sie die CLI verwenden, um eine Kernel-Erweiterung zu erstellen, die den Kernel in Panik versetzt (was einem "Absturz" am nächsten kommt, den ich mir vorstellen kann).
Die Befehlszeile (auf die über das Terminal zugegriffen wird) ist ein mächtiges Werkzeug. Oft ist es schneller, ein Problem mit Terminal zu lösen als mit der GUI. Einige Lösungen sind nur mit Terminalbefehlen verfügbar. Der Schlüssel zur CLI ist jedoch das Verständnis von . Führen Sie keine zufälligen Befehle aus, die Sie online sehen. Lesen Sie die Manpages und verstehen Sie, was Befehle bewirken. Wenn Sie sich nicht sicher sind, fragen Sie jemanden oder erfahren Sie mehr über einen Befehl, bevor Sie ihn ausführen.
Dies wird Tonnen von CPU beanspruchen und Ihren Prozessor wirklich verlangsamen, aber es wird den Computer nicht wirklich zum Absturz bringen oder Datenverlust verursachen:
cat /dev/random > /dev/null & cat /dev/random > /dev/null (as many times as you dare)
Etwas mit dem gleichen Effekt:
ls -R /
jamesdlin
Josch
akostadinow
Wythagoras
Noah Christino