すべてのルートプロセスを強制終了すると、サーバーにどのような影響がありますか?


9

rootとしてログインしている他の開発者が私を追い出したかったのです。

だから私は発行しました

pkill -KILL -u root

それから、私はおそらくすべての種類のルートプロセスを殺したことに気づきました。

システムを損傷しましたか?現在、SSH経由でアクセスできません。

更新:Webサーバーはまだ実行中です。でも今はSSHで接続できません。私は何をしたのか分かりません。


1
ほとんどの場合、再起動する必要があります。可能であれば、プラグを抜くのではなく、ACPIシャットダウン信号を送信します。
スカイホーク2013年

1
Iain、IMEは完全に真実ではありません。特権ポートにバインドするには、ルートとして開始する必要がありますが、特権を分離するために、構成されている非プライベートユーザーが所有する一連のプロセス全体を起動します。ただし、Apacheの場合、通常はルートの所有する単一のプロセスがすべての先頭にあります。ただし、実際のWebサービスを実行するすべてのプロセスがroot所有ではないことに同意します。
MadHatter

5
間違いをすることは学ぶための最良の方法です。誰かが悪い間違いをしたからといって、反対票を投じないでください。この質問は議論の余地がありますが、閉じないでください。代わりに、質問の背後にある考えをより深く読んで説明するようにあなたに挑戦します:すべてのルートプロセスを強制終了するとどうなりますか?ホストがまだ生きているのはなぜですか?SSHDがリクエストを処理できないのに、ウェブサーバーはできるのはなぜですか?どのようにしてWebサーバーがまったく動作していないのでしょうか。私たちは、この種の質問に対する良い標準的な答えを持っているとは思いません。答えは、Unixがどのように機能するかについての貴重な説明を提供することができます。
Stefan Lasiewski、2013年

2
頭と心を使い、他の多くの人のように強制的に反対投票ボタンをクリックしないでくれたステファンに感謝します。過失投票を恐れて、stackexchangeサイトに間違いについて質問を投稿する人がいない場合、誰も彼らから学ばないでしょう。私は私の質問で人々を助けています、そしてそれのために罰せられるべきではありません。
Buttle Butkus 2013年

1
質問は笑いに適していたので、問題はありませんでした。これは、テキストメッセージを送信しているときに誰かが穴に落ちるビデオを見るようなものです。
UncaAlby

回答:


15

簡単な答えは、あなたがsshdを殺した(そしてlordは他に何を知っている)か、SSHを使ってシステムに再度ログインすることができないということです。システムにアクセスする他の方法(リモートコンソール、IPMIなど)がない限り、SSHサービスと他のサービスを復元するシステムを再起動する必要があります。

うまくいけば、ボックスに物理的にアクセスできます。その場合は、おそらく電源ボタンを押すだけです。多くのプロセスを強制終了し、いくつかの破損の準備ができていることを認識してください。Linuxはシステムクラッシュから回復するように設計されており、基本的に「手動」クラッシュをトリガーしました。ほとんどの場合、再起動後に正常に回復します。ログファイルには、あらゆる種類の興味深いエラーメッセージが含まれている場合があります。


長い答え:

これは素晴らしい思考実験であり、良い面接の質問です。「Xを実行するとどうなりますか...」これは、自分のプライベート仮想マシンで試すのは楽しいことですが、実際のボックスで実行することはできません。誰でも間違いはある。覚えて、間違いから学んでください。間違いをすることは学ぶための最良の方法です。制作でミスをすることは、あなたのキャリアの中でたまに起こる痛みを伴うレッスンです。

pkill -KILL -u root

このコマンドはkill -9、ルートが所有するすべてのプロセスに'SIGKILL'(たとえば、.KILLはSIGKILLのエイリアス)を送信します。システムで行うのは非常に悪いことです。kill -9最後の手段として以外は避けるべきです。

コマンドがrootが所有するすべてのプロセスを積極的に強制終了しました。プロセスはすぐに強制終了され、クリーンアップする機会が与えられませんでした。何を殺したかを把握するには、健全なLinuxボックスにログインし、次のようなコマンドを使用して、rootが所有するプロセスを一覧表示します。通常、これらのコマンドを実行するためにrootである必要はありません。

$ pgrep -u root -l
$ ps aux | grep root

新しいプロセスを生成するInit(PID#1)を強制終了した可能性があります。システムが新しいプロセスを作成できない可能性があります。したがって、それは今のところ機能し続ける可能性がありますが、病気であり、できるだけ早く修理する必要があります。時間が経つにつれて、システムはますます病気になります。あなたが長く待つほど、それは悪化します。

更新:Webサーバーはまだ実行中です。でも今はSSHで接続できません。私は何をしたのか分かりません。

あなたはApacheを使用していると思います。と思われる子供の彼らは、ユーザー「ルート」が所有していないので、Webサーバのプロセスがまだ実行されています。ただし、親のウェブサーバープロセスは通常rootが所有していて、ユーザーがそれを強制終了しました。その結果、新しい子プロセスは生成されません。おそらく、リクエストを処理するのに十分な子プロセスがあり、通常、それらの子プロセスは強制終了またはクラッシュするまで存続するため、これはしばらくの間問題ありません。繰り返しますが、最も迅速な修正はマシンを再起動することです。


私は物理的にアクセスできませんが、何かを理解します。Apacheがまだ機能しているのを見て、私はうれしく驚きました。したがって、マシンはrootなしで問題なく動作しています。PSあなたが質問に反対票を投じた場合、私はタイトルを改善しました。
Buttle Butkus、2013年

1
@ButtleButkus私は質問に反対票を投じませんでした。私は質問に答え始め、それからなぜ物事が彼らのように機能するのかについてかなり興味を持ちました。
Stefan Lasiewski、2013年

1
ステファン、回答ありがとうございます。それは理にかなっているので、私が最初から賛成した唯一の答えです。私は約10分以内にシステムを再起動しましたが、それ以来すべてがうまく機能しているようです。
Buttle Butkus 2013年

4

ほとんどすべての重要なサービスを停止しているため、システムを再起動する必要があります。その方法は、使用しているツールやデータセンターに到達するために必要なトランスポートによって異なります。


実際、私がすべての重要なプロセスを殺したようには思えません。そうでなければ、なぜウェブサーバーはまだ完璧なウェブページを提供し続けているのでしょうか?
Buttle Butkus 2013年

@ButtleButkus:Webサーバーはrootとして実行されません。
user9517 2013年

@lain単一の「クリティカル」サービスが停止された場合でも、サーバー全体がダウンすることになります。コマンドは実際には1つの重要なサービスを強制終了しなかったようです。しかし、それは便利なサービスを殺しました:sshd。
Buttle Butkus 2013年

2
重要なサービスが停止したからといって、マシンがすぐに停止するわけではありません。たとえば、ファン制御デーモンをクリティカルと見なします。CPU使用率が上昇したときに、ファンをさらに回転させたいと思います。私はサービスを殺すことができ、何日もCPU使用率が低い場合、突然1000人が私のサイトにアクセスし、私のCPUが火事になりました。そして、ダメージを与えることの多くは、より少ない顕著な方法があります...
unhammer

3

カーネルが実行されているため、システムが実行されています。デーモンを終了したため、sshdにアクセスできません。おそらくinitも終了しているため、新しいプロセスを作成できません。そのため、新しいApache接続が確立されない可能性があります(適用された構成パラメーター;))。

カーネルスレッドに信号を送信することはできません。そのため、システムは実行されていますが、ルートが所有するサービスは終了しており、通常の復活のために、再起動する必要があります。


興味深い詳細をありがとう。私はあなたに賛成票を与えましたが、私はステファンにチェックマークを付けています。
Buttle Butkus、2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.