Terminalを理解していない人は、コマンドを台無しにしてコンピュータをクラッシュさせるのではないかと恐れて、Terminalを使用することを恐れることがよくあります。Terminalをよく知っている人はそうではないことを知っています-通常Terminalはエラーを出力するだけです。しかし、実際にコンピューターをクラッシュさせるコマンドはありますか?
Terminalを理解していない人は、コマンドを台無しにしてコンピュータをクラッシュさせるのではないかと恐れて、Terminalを使用することを恐れることがよくあります。Terminalをよく知っている人はそうではないことを知っています-通常Terminalはエラーを出力するだけです。しかし、実際にコンピューターをクラッシュさせるコマンドはありますか?
sudo
and rm
コマンドを入力するか、コピーペーストすると、データが失われる可能性があります。回答:
コンピューターをクラッシュさせる1つの方法は、いわゆるfork-bombを実行することです。
次の方法で、Unixシステムで実行できます。
:(){ :|: & };:
これは、OSがビジー状態になってプロセスに応答しなくなるまで、再帰的にプロセスを生成するコマンドです。
;
と、&
すべてのファイルを削除し、同時に爆弾をフォークし、最初にシステムが壊れるのを確認できます!
「コンピューターをクラッシュさせる」ことの意味がわからない-「コンピューターを使用不可にする」と言い直せば、はい。確かに必要なのは単一の迷走コマンドだけです-考えずに話すときと同じように、自分が何をしているのかを明確に考えていない瞬間です。古典的な例:
$ sudo rm -rf /
このコマンドをたった1秒間実行しただけでは、システムが完全に消去されてブート不能になり、場合によっては不可逆的なデータ損失が発生する可能性があります。しないでください。
-r
は、ディレクトリ内のファイルを再帰的に削除することを意味します。-f
は、特定のファイルの許可に関係なく、確認を求めない「強制」を意味します。/
は、ファイルシステムのルートディレクトリです。つまり、通常のファイルとして動作しない特別なファイルを除いて、あらゆるものを破壊します。また、ルート/管理者権限なしでシステムをクラッシュさせる簡単なコマンドを見つけるのはかなり困難です。
rm -rf /
はしばらく前に試しましたが、rm
ルートを削除したい場合は、そのようなフラグを使用すると言いました。データは失われませんでした。盲目的に実行することから、現在セキュリティ保護があるようrm -rf /
です。
rm -rf
本当に法的1と同様にして、本当に間違っていた:/
ハードドライブのバックアップを実行して何をしようとしているかわからないとします
dd if=/dev/disk1 of=/dev/disk2
まあ、それらを混ぜると(ifとofを切り替える)、新しいデータが古いデータで上書きされ、質問はありません。
アーカイブユーティリティでも同様の混乱が発生する可能性があります。そして、ほとんどのコマンドラインユーティリティで率直に言って。
システムをクラッシュさせる1文字の例が必要な場合は、次のシナリオを参照してください。現在のディレクトリ内のすべてのファイルを別のファイルに移動する場合:
mv -f ./* /path/to/other/dir
./
現在のディレクトリを示すために使用することを学んだという事実を受け入れましょう。(そうです)ドットを省略すると、すべてのファイルの移動が開始されます。システムファイルを含めます。幸運なことに、これをsudoしなかった。しかし、「sudo -i」を使用してどこかを読んだ場合、sudoを再度入力する必要はもうないので、今はrootとしてログインしています。そして今、あなたのシステムはあなたの目の前でそれ自体を食べています。
しかし、1文字を台無しにしたり、パラメーターの順序を混同したりするため、貴重なコードファイルをゴミで上書きするようなことは、さらに面倒だと思います。
gccが生成しているアセンブラコードをチェックアウトするとします。
gcc -S program.c > program.s
すでにprogram.sがあり、TAB補完を使用するとします。急いでいるので、TABを2回押すのを忘れています。
gcc -S program.c > program.c
現在、program.cにはアセンブラコードがあり、cコードはありません。これは少なくとも一部の人にとっては本当の後退ですが、他の人にとってはゼロからのスタートです。
これらは本当の「害」を引き起こすものだと思います。私のシステムがクラッシュしても気にしません。私は自分のデータが失われるのを気にします。
残念ながら、これらは、適切な予防措置を講じて端末を使用することを学ぶまで、間違いを犯す必要があります。
gcc program.c -o program.c
タブ補完のおかげで、使用していたプログラムを破壊したことがあります。その後、バージョン管理を宗教的に使用することを学びました。
カーネルパニックを引き起こすことは、ここまで見てきた他の答えよりもクラッシュに似ています。
sudo dtrace -w -n "BEGIN{ panic();}"
(ここから取られたコードとApple自身のドキュメントにもあります)
あなたも試してみてください:
sudo killall kernel_task
私はそこにある2番目のものが実際に機能することを確認していません(実際、現在いくつかの作業を開いているので、意図していません)。
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
SIPによって事実上除去さ
kernel_task
通常のプロセスではありません。それは不滅です。独自のエラー(およびKPと呼ばれ、マシン全体がダウンする)を除いて、強制終了できません。kernel_task
のPIDは名目上0ですが、それをkill(pid, sig)
syscallに提供すると、manページにIf If pid
equal 0 sig
が表示され、呼び出しプロセスのプロセスグループ内のすべてのプロセスに送信されます。。そのためkernel_task
、単に信号を送信することはできません。
UNIXシステムは何千人ものユーザーをシステム全体を破壊することなく処理することを目的としているため、最新のmacOSでは、権限のないユーザーとして(つまり、使用せずに)マシンをクラッシュさせることは非常に困難sudo
です。ありがたいことに、マシンを破壊する何かをする前に、通常はプロンプトを表示する必要があります。
残念ながら、その保護はシステム自体にのみ適用されます。XKCDが示すように、というものがたくさんありますあなたは、システムの整合性の保護、root権限やパスワードのプロンプトで保護されていない気には:
したがって、入力しなければならないものが山ほどあり、注意しないとユーザーアカウントとすべてのファイルが破壊されてしまいます。いくつかの例:
rm -rf ${TEMPDIR}/*
。これは、環境変数のスペルがわかるまで完全に合理的ですTMPDIR
。TEMPDIR
通常は未定義rm -rf /
です。がなくてもsudo
、これにより、通常はホームフォルダー全体が含まれる削除権限があるものはすべて削除されます。これを十分に長く実行すると、通常はマシンへの書き込み権限があるため、マシンに接続されているドライブもすべて無効になります。find ~ -name "TEMP*" -o -print | xargs rm
。find
通常、特定の条件に一致するファイルを見つけて印刷します。なければ-o
これはあなたが期待するものとしで始まるすべてのファイルを削除しますTEMP*
(限り、あなたはパスにスペースを持っていないとして)。しかし、これ-o
は「または」(他の多くのコマンドのように「出力」ではない!)を意味し、このコマンドによって実際にすべてのファイルが削除されます。残念。ln -sf link_name /some/important/file
。たまにこのコマンドの構文を間違えますが、重要なファイルを役に立たないシンボリックリンクで上書きしてしまいます。kill -9 -1
すべてのプログラムを強制終了し、かなり迅速にログアウトし、データ損失を引き起こす可能性があります。find
は、配管するよりもはるかに安全な-delete
議論がありますxargs rm
find -print0 | xargs -0
は、ファイル名の奇妙な文字を安全に処理するために使用する必要があります。
<whatever> | xargs echo <something>
最初に使用して、xargsが実際に実行するコマンドをプレビューします。xargsは、CLIが非常に強力である理由の優れた例です。厄介な確認や手で保持することなく、一度に多くの多くの項目を操作できます。
あなたができるもう1つのこと(私が前に間違ってやったこと)は次のとおりです:
sudo chmod 0 /
これにより、ファイルシステム全体(すべてのコマンドとプログラムを意味する)にアクセスできなくなります(rootユーザーを除く)。これは、rootユーザーとして直接ログインし、ファイルシステムを復元する必要があることを意味しますが、sudo
コマンド(またはその他のコマンド)にアクセスすることはできません。コマンドやファイルへのアクセスを復元するには、シングルユーザーモードで起動し、でファイルシステムをマウントおよび復元しますchmod 755 /
。
これを再帰的に実行chmod -R 0 /
すると、システムが使用できなくなります。その時点での適切な修正は、リカバリパーティションのディスクユーティリティを使用して、ディスクのアクセス許可を修復することです。これを再帰的に実行した場合は、ファイルシステムのスナップショットまたはバックアップを復元するだけの方がよい場合があります。
chmod 755 /
システムが安全でなく、微妙な方法で破損したままになります。からの完全な回復chmod 0 /
は、スナップショットの復元、バックアップの復元、および/または再インストールのみです。
-R
フラグを使用しない限り、chmodは再帰的ではありません。したがって、サブディレクトリのアクセス許可は影響を受けないと思いますか?
/
影響を受けるだけです。
sudo chmod -R 700 /
新しいコンピューターでしたが、そうすればもっと安全になると考えていました。驚くべきことに、それは起動し、空のメニューバーと空白のデスクトップで終わりました。他には何も機能しませんでしたが、リカバリパーティションのディスクユーティリティの復元権限により、実際にはほぼすべてが正しく設定されました。
呼び出しの回答はsudo
無効と見なされる必要があります。これらはすでにシステムへの管理アクセスを前提としています。
試してくださいperl -e 'exit if fork;for(;;){fork;}'
。OSXは現在、これに対して何らかの保護策を講じている可能性があります。ターミナルアプリとサブプロセスを終了するかどうかを尋ねるアップルバブルが表示された場合は、(ほぼ)大丈夫です。
while true ; do cat /dev/zero > /dev/null & done
また、非常に便利です。持っていない場合perl
。
for i in 1 2 3 4 ; do cat /dev/zero > /dev/null & done
ちょっと面白いCPU負荷テストを行うだけです。ヒートシンクとファンが標準に達しているかどうかを確認するのに非常に適しています。
確かに、バックアップがあることを確認し、気になるファイルを保存してから、入力します halt
その後sudo
、rootになるために使用すると、Macがクラッシュします。
コマンドラインからの最大のリスクはデータの損失です。macOSインターフェースは、人々を驚かせたり、データや設定、アプリを細断したりしないように、数十年にわたって設計されています。macOSグラフィカルインターフェイスは、学習曲線(急な曲線)を削除して安全でシェルスクリプトをマスターするためにも存在します。
これらの保護が失われるため、ターミナルアプリまたはsshで開始するユーザーに警告します。動作することがわかっているバックアップがあり、復元を実行する時間と自信/スキルがある場合は、物事に飛び込んで学習し、さらには破壊する必要があります。
sudo kill -9 -1
私は誤っkill -9 -1
てperlスクリプトでrootとして実行しました。電源コードを引っ張るのと同じくらい速いです。再起動時に、サーバーはファイルシステムチェックを行い、適切に実行を続けました。
sudo kill -9 -1
コマンドラインでそのコマンドを試したことはありません。プロセスID「-1」は「呼び出し元のプロセスグループに属するすべてのプロセスを強制終了する」ことを意味するため、機能しない可能性があります。
確かではありませんが、sudoを使用している場合、これはinitとすべてのカーネルスタッフも意味しますkill -9 -1
。ちなみに、ログファイルには何も表示されません。これは、このコマンドが西側で最速のキラーだからです!
実際、回復するために、私はシステム管理者のところに行って、自分に何をしたかを伝えました。そのサーバー(RHEL6)にログインする方法がなかったため、彼らはハードリブートを行いました。
A kill -9 -1
ルートとしては、rootとして実行するすべてのプロセスを、殺します。つまり、sshdです。それはすぐに私をログアウトし、誰も再びログインすることを防ぎました。initによって開始されたプロセス(initを含む)は、UIDまたはGIDを変更しない限り強制終了されています。シリアルコンソールからログインすることもできなくなりました。ps -eaf | grep root
デフォルトの方法でSIGKILLに反応すると、基本的なHDへの書き込みさえもほとんど停止する、いくつかの派手なプロセスを示しています。
私はラップトップでこれを試してみません: kill -9 165
-)([ext4-rsv-conver])が本当にHDへの書き込みを停止するかどうかを知ることに興味がありません。
init
正常に強制終了することはできませんが、すべてのgettyおよびSSHセッションを強制終了し、マシンを使用不能にすることができます。A マジックSysRqをはクリーン再起動を許可している必要がありますが、それは多くの場合、単にパワーサイクルに簡単ですし、FSジャーナル:)に依存している
はい、システムを完全に破壊できます。誤ってsudo
特権を使って何かをすることは、端末に意図したものとはまったく異なることをするように指示するいくつかの文字を忘れているかどうかにかかわらず、投稿された1つの例です。代わりのrm
ing は5文字の違いです。間違った場所にスペースを置くと、まったく異なることもできます。他の場合、一見うまく意味するように見える命令に、悪意のあるコードが難読化される可能性があります。インターネット上の一部の人々は、コードを難読化するのが得意です。/
/tmp/\*
HTMLを使用してフォントサイズをゼロにできるコマンドもあります。そのため、クリップボードにコピーしたときに完全に無害なものが、実際には誰かのgitリポジトリを信頼できるソースとしてインストールし、マルウェアをダウンロードする可能性があります。
また、実行できるコマンドがあり、悪用される可能性があります。または、完全に意図されていても重要なファイルやプログラムを削除したり、ディスクを破損したりする可能性があります。実際、誤ってツールを使用すると、誤ってブートセクター、ディスクのヘッド、または他の多くの問題を上書きするような基本的なことができます。
投稿されていない破壊的でないものの例は、でバイナリファイルを開くことですvi
。あなたがそれを試したことがあるなら、あなたはそれが使用可能になるまで使用できないという点まであなたの端末を台無しにすることができることを知っているでしょうreset
。
別の方法として、次のようなマシンを停止させるコマンドがあります。
yes >> /dev/null & yes >> /dev/null & yes >> /dev/null & yes >> /dev/null &
あなたはそれを試すことができます、それはダメージを与えるつもりはありませんが、それはあなたのプロセッサを動かしません、そしてあなたはあなたが生み出した各プロセスを殺さなければなりません。
そうは言っても、コンピューティングでは、いくつかの卵を割らなければオムレツを作ることはできないと一般に考えられています。端末に注意する必要がありますが、OSの使用を向上させる唯一の方法は、学習して練習することです。
reset
、バイナリ出力が出力された端末をクリアする必要があります。または、新しいTTYを生成するだけです
reset
トリックを学ぶのに何年もかかりました!詳細:unix.stackexchange.com/questions/79684
私は単なるbash初心者ですが、しばらくTrueに設定できます。COMMAND; 完了; ほとんどの人は、外部プロセスではなく、コマンドを停止するCtrl + Cを試します(ctrl + Z。これは強制終了する必要があります)。もし、コマンドが大きな数を自分の力に掛けるような重い操作だとしたら、それはあなたのリソースを混乱させる可能性があると思います。しかし実際、現代のOSは通常このような混乱から保護されています。
while true do cat /dev/zero > /dev/null & done
^C
なりますまた、whileループを殺すが、それはあまりにも高速割り込みがキャッチされるようにするために繰り返されます。押し続けると^C
ループが抜ける場合があります。ターミナルを閉じることも:)
ターミナルで入力したコマンドを使用すると、システムクラッシュを引き起こす可能性があります。
おそらく、あらゆる種類の制限と保護対策が適用されたために、年々難しくなりつつありますが、マーフィーのような法則は次のように述べています。
「フォーク爆弾」とそのrm -rf
スクリプトキディのすべては、UNIXで古くから知られているものです。Mac OS Xを使用すると、GUIサブシステムパーツ(WindowServer
言及する)またはPF
Appleのエンジニアが持ち込んだが、2008年の状態以降は更新できなかったOpenBSDファイアウォールのようなものを使用して、さらに楽しむことができます。PF
カーネルで動作するので、気まぐれを見つけたら、Apple から「パニックが原因でコンピュータを再起動しました」などのメッセージが表示されます。
これの最悪の部分は、どこでパニックに陥ったのかまったくわからないことです。Appleが意味のあるスタックトレースを提供しないためです。スタックフレームの戻りアドレスの16進数のみを持つことができます。
あなたのコンピュータを「クラッシュ」させるというのは少し曖昧です...そして、それに対する決定的な正しい答えはありませんが、他の答えにはいくつかの有用な例があります。あなたの質問はより曖昧で一般的なので、質問の性質に焦点を当て、より一般的な答えをしたいと思います。
ターミナルを理解していない人は、コマンドを台無しにしてコンピュータをクラッシュさせる恐れがあるため、ターミナルを使用することを恐れています。
コマンドラインは両刃の剣で、しばしば非常に鋭い剣だと思います。その最大の強みは、新規ユーザーにとっての最大の弱点でもあります。CLIプログラムは、あなたが言ったことを、それが本当にあなたが意図したものかどうかを尋ねることなく行います。多くの場合、確認を求めず、手に持ったり、インタラクティブなヘルプを提供したりせず、オプションは短く、簡潔で、時には混乱を招くテキストベースの文字列です。それらは一般的に非常によく文書化されていることに注意してください、マニュアルを読んで(ほとんど常にman <command you are about to run>
)、実行しようとしているコマンドラインが何をするのかを理解するのに時間をかける必要があります。
この操作モードは強力です。つまり、熟練したCLIユーザーは、単一のコマンドで複雑なタスクを実行する長いコマンド「パイプライン」を作成できます。これは、タスクが「本当によろしいですか」と尋ねないからです。方法のすべてのステップで、それは言われたことをします。しかし、このモードになじみがなく、オンラインヘルプを1回クリックするだけでGUIを使用するユーザーにとっては、なじみがなく恐ろしいものです。
しかし、実際にコンピューターをクラッシュさせるコマンドはありますか?
CLIを使用してコンピューターを「クラッシュ」させることはできますか?多分。破壊的なコマンドを誤って使用すると、データが失われる可能性があります。例えば、ここでの回答の多くは、rm
ファイルを削除するコマンドに言及しています。明らかに、そのコマンドでデータ損失を引き起こす可能性があります。それは、コマンドが実行するように設計されたものです。
他の答えが指摘したように、コマンドラインを使用して、マシンを一定期間実質的に使用不能にすることができます:確認なしでシャットダウンし、プロセスが確認なしで使用可能なリソースの100%を使用するようにし、すべてのプログラムを殺すことができますまたはファイルシステムを破壊します。本当にしたい場合は、CLIを使用して、カーネルパニックを引き起こすカーネル拡張機能を作成できます(これは、私が考えることができる「クラッシュ」に最も近いものです)。
コマンドライン(ターミナルからアクセス)は強力なツールです。多くの場合、ターミナルを使用してGUIよりも問題を解決する方が高速です。一部のソリューションは、ターミナルコマンドを使用する場合にのみ使用できます。ただし、CLIの鍵は理解することです。オンラインで表示されるランダムなコマンドを実行しないでください。マニュアルページを読んで、コマンドの機能を理解してください。よくわからない場合は、実行する前に誰かに尋ねるか、コマンドの詳細を確認してください。