フォークなしで Bash で書かれた `ps aux`
(github.com/izabera)Bash で ps aux を実装する
-
面接の質問: bash/linux 関連の知識が必要なポジションの面接質問として、次のような状況を想定できる
- SSH で接続したマシンで bash シェルを使っているが、新しいプロセスを生成できない状況
- すべての PID が使い切られている場合、どうするかを問う質問
-
解決策: このツールを使えば、
ps auxコマンドを使えるかのように振る舞える- あらゆる状況で 100% 動作するわけではないが、似たように動作する
GN⁺のまとめ
- この記事は、bash シェルで新しいプロセスを生成できない状況で
ps auxコマンドを代替できる方法を提示している - bash スクリプトを通じてシステムプロセスを確認する方法を説明している
- この方法はあらゆる状況で完全に動作するとは限らないが、制限のある環境では有用な場合がある
- 似た機能を提供する別のツールとしては、
htopやtopコマンドがある
1件のコメント
Hacker Newsのコメント
コンピュータサイエンスで最も難しい問題は整列処理である
bash/Linuxに関する知識を問う面接質問の例
/proc/[pid]/ファイルシステムでPID空間を消費しているプロセスを確認するkillはbashの組み込みコマンドなので、新しいプロセスを生成せずに使える2011年にアメリカの大手テック企業でSRE職の面接を受けた経験
netstat代替プログラムを書く課題を与えられた/proc/でソケット情報を見つける方法を知らなかったため、psとfuser代替プログラムを書いたbash@liberaのIzaberaはbashの専門家の一人である
クリーンなbashコードの例
すべてのPIDが使用中で、新しいプロセスを作成できない状況での対処法を尋ねる質問
bash 3.2では動作しないが、bash 4.2では動作する
printfの書式指定子エラーが発生するprocpsがインストールされていないシステムで、プロセスを列挙するより良いユースケースの提案
bashでリスナーやクライアントを書くこともできるが、実際には推奨されない