このプロジェクトについて

witrは、Linux、macOS、Windows、FreeBSD向けの単一の静的バイナリで、「なぜこれが実行されているのか」という1つの質問に答えます。プロセス名、PID、ポート、コンテナ、または開いているファイルが指定されると、その存在の原因となるスーパーバイザー、サービス、シェル、コンテナの因果チェーンを構築します。 核となるアイデアは、すべてをプロセス問題として扱うことです。ポート、サービス、コンテナ、コマンドはすべてPIDにマッピングされ、PIDが特定されると、witrは何が実行されているか、どのように起動されたか、何がそれを維持しているか、どのコンテキストに属しているかを説明します。これは、状態とメタデータを公開するものの、ユーザーが手動で出力を関連付ける必要があるps、top、lsof、ss、systemctl、docker psなどのツールとは異なります。 使用モード: - 標準出力には、ターゲット、プロセス、ユーザー、コマンド、開始時間、祖先チェーン(例: systemdからpm2、nodeへ)、ソース、作業ディレクトリ、gitリポジトリ、ソケットが表示されます。 - --shortは祖先チェーンのみを印刷します。--treeは祖先をツリーとしてレンダリングし、最大10個の子プロセスを含みます。 - --jsonは機械可読な結果を出力します。--envは環境変数を表示します。--verboseは拡張プロセス情報を追加します。--warningsは警告のみを表示します。 - 位置引数はプロセス名またはサービス名として扱われ、デフォルトで部分文字列一致、--exactで完全一致となります。複数の一致はPIDとともにリストされ、--pidで再実行することを提案します。 - --pid、--port、--file、--containerは繰り返し可能で、互いにまた名前引数と混合できます。結果は指定された順序で表示され、ラベル付きの区切りで分離されます。 - --containerは、Docker、Podman、nerdctl、K8s/crictl、Incus、LXC、LXD、FreeBSD jailsを横断して検索し、コンテナ名、イメージ、コマンド、composeプロジェクト/サービスラベルに一致します。 インタラクティブTUI: 引数なしまたは-iでwitrを実行すると、4つのタブを持つターミナルダッシュボードが開きます。プロセスは、祖先サイドパネル付きのライブでソート可能、フィルタ可能なリストを表示します。ポートは、所有プロセスを持つリッスン中または全ポートをリストし、aで切り替えます。コンテナは、サポートされているランタイム全体で実行中のコンテナを集約し、マウント、ネットワーク、composeメタデータの詳細ビューを提供します。ロックは、システム全体のファイルロック(LinuxではPOSIX/FLOCK、macOS/FreeBSDではlsof由来)を表示し、関連するすべての開いているファイル記述子をマージできます。TUIはさらに、Unixでのkill、terminate、pause、resume、reniceなどのプロセスアクション、マウスナビゲーション、適応型ライト/ダークテーマ、3秒から始まる適応型リズムでの自動更新をサポートします。 インストールは広範囲です: UnixおよびWindows用のインストールスクリプトに加え、APT、Homebrew、MacPorts、Conda、AUR、Winget、npm、FreeBSD Ports、Chocolatey、Scoop、AOSC OS、GNU Guix、Uniget、Aqua、Brioche、mise経由のパッケージ、deb/rpm/apkアーティファクト、ソースからのgo installがあります。Bash、Zsh、Fish、PowerShell用のシェル補完が提供され、manページが含まれています。ブラウザベースのシミュレーションチュートリアルとサンドボックスがあり、インストールせずにワークフローを試すことができます。