
誰かがサーバーのbashからwhile trueループを作成しました(rootとしてログイン)。プロセスは引き続き作成され、幸いにも終了しますが、親プロセスを終了する必要があります。スクリプトではなくコマンドラインから直接作成されたことがわかったので、「-bash」を見つけて、ルートが所有するプロセスを終了しました。良い結果。
これにより、ps aux
bashのさまざまなバリエーションがコマンドラインに表示されます。
/bin/bash
-bash
-bash
-bash
/bin/bash
bash
/bin/bash
/bin/bash
bash
など..
違いは何ですか?
答え1
先行ダッシュは次のログインシェルを表しますman bash
。
ログインシェルの引数の最初の文字は0または
-
オプションで始まります--login
。bashがこのオプションを使用して対話型ログインシェルまたは非対話型シェルとして呼び出されると、まず
--login
ファイル/etc/profile
(ファイルが存在する場合)からコマンドを読み取り、実行します。ファイルを読み込んだ後~/.bash_profile
、~/.bash_login
、 を順に探して存在~/.profile
し、読み取れる最初のファイルからコマンドを読み込み実行します。--noprofile
このオプションを使用すると、シェルの起動時にこの動作を無効にできます。ログインシェルが終了すると、bash はファイルが
~/.bash_logout
存在する場合はそのコマンドを読み込み実行します。
bash
/bin/bash
同じですが、異なる方法で呼び出されます(電子はフルパスを使用して呼び出されません)。