Linux / Unixでの日常業務では、duのような多くのコマンドラインツールを使用して、ディスクの使用状況とシステムリソースを監視しています。これらのツールのいくつかは、長い間使用されてきました。たとえば、topは1984年に登場し、duの最初のリリースは1971年に遡ります。
長年にわたって、これらのツールは近代化され、さまざまなシステムに移植されてきましたが、一般に、それらは最初のバージョンからそれほど離れておらず、その外観と使いやすさもあまり変わっていません。
これらは、多くのシステム管理者が必要とする優れたツールです。ただし、コミュニティは追加の利点を提供する代替ツールを開発しました。それらのいくつかは、モダンで美しいインターフェースを備えているだけですが、使いやすさを大幅に向上させるものもあります。この翻訳では、標準のLinuxコマンドラインツールに代わる5つの方法について説明します。
1.ncdu vs du
NCursesのディスク使用量(ncdu)はduに似ていますが、対話式のcursesベースのインターフェースを備えています。ncduは、ディスク容量の大部分を占めるディレクトリ構造を表示します。
ncduはディスクを分析し、次に最も一般的に使用されるディレクトリまたはファイルでソートされた結果を表示します。次に例を示します。
ncdu 1.14.2 ~ Use the arrow keys to navigate, press ? for help
--- /home/rgerardi ------------------------------------------------------------
96.7 GiB [##########] /libvirt
33.9 GiB [### ] /.crc
7.0 GiB [ ] /Projects
. 4.7 GiB [ ] /Downloads
. 3.9 GiB [ ] /.local
2.5 GiB [ ] /.minishift
2.4 GiB [ ] /.vagrant.d
. 1.9 GiB [ ] /.config
. 1.8 GiB [ ] /.cache
1.7 GiB [ ] /Videos
1.1 GiB [ ] /go
692.6 MiB [ ] /Documents
. 591.5 MiB [ ] /tmp
139.2 MiB [ ] /.var
104.4 MiB [ ] /.oh-my-zsh
82.0 MiB [ ] /scripts
55.8 MiB [ ] /.mozilla
54.6 MiB [ ] /.kube
41.8 MiB [ ] /.vim
31.5 MiB [ ] /.ansible
31.3 MiB [ ] /.gem
26.5 MiB [ ] /.VIM_UNDO_FILES
15.3 MiB [ ] /Personal
2.6 MiB [ ] .ansible_module_generated
1.4 MiB [ ] /backgrounds
944.0 KiB [ ] /Pictures
644.0 KiB [ ] .zsh_history
536.0 KiB [ ] /.ansible_async
Total disk usage: 159.4 GiB Apparent size: 280.8 GiB Items: 561540
エントリは、矢印キーを使用してナビゲートできます。Enterキーを押すと、ncduは選択したディレクトリの内容を表示します。
--- /home/rgerardi/libvirt ----------------------------------------------------
/..
91.3 GiB [##########] /images
5.3 GiB [ ] /media
このツールを使用して、たとえば、どのファイルが最もディスク容量を消費しているかを確認できます。左矢印キーを押すと、前のディレクトリに移動できます。ncduでは、dを押してファイルを削除できます。削除する前に確認を求めます。重要なファイルが誤って失われるのを防ぐために削除機能を無効にする場合は、-rオプションを使用して読み取り専用アクセスを有効にします。ncdu-r。
ncduは、多くのLinuxプラットフォームおよびディストリビューションで使用できます。たとえば、dnfを使用して、公式リポジトリから直接Fedoraにインストールできます。
$ sudo dnf install ncdu
2.htop vs top
Htopは、topに似たインタラクティブなプロセスビューアーですが、すぐに使える快適なユーザーエクスペリエンスを提供します。デフォルトでは、htopはtopと同じ情報を、より視覚的でカラフルな方法で表示します。
デフォルトでは、htopは次のようになります。
上とは異なり:
さらに、htopは上部にシステムに関する概要情報を表示し、下部にファンクションキーを使用してコマンドを起動するためのパネルを表示します。F2を押してカスタマイズ画面を開き、カスタマイズできます。設定では、色を変更したり、指標を追加または削除したり、概要パネルの表示オプションを変更したりできます。
topの最新バージョンの設定を調整することでも同様の使いやすさを実現できますが、htopは、より実用的で使いやすい便利なデフォルト構成を提供します。
3.tldr vs man
tldrコマンドラインツールは、簡略化されたコマンドヘルプ情報、主に例を表示します。tldrページプロジェクトコミュニティによって開発されました。
tldrが人に代わるものではないことは注目に値します。それはまだマニュアルページを表示するための標準的で最も完全なツールです。ただし、場合によっては、人間は冗長です。チームに関する包括的な情報が必要ない場合は、その使用のための主なオプションを覚えているだけです。たとえば、curlのマニュアルページはほぼ3000行です。 curlのtldrページは40行です。そのフラグメントは次のようになります。
$ tldr curl
# curl
Transfers data from or to a server.
Supports most protocols, including HTTP, FTP, and POP3.
More information: <https://curl.haxx.se>.
- Download the contents of an URL to a file:
curl http://example.com -o filename
- Download a file, saving the output under the filename indicated by the URL:
curl -O http://example.com/filename
- Download a file, following [L]ocation redirects, and automatically [C]ontinuing (resuming) a previous file transfer:
curl -O -L -C - http://example.com/filename
- Send form-encoded data (POST request of type `application/x-www-form-urlencoded`):
curl -d 'name=bob' http://example.com/form
- Send a request with an extra header, using a custom HTTP method:
curl -H 'X-My-Header: 123' -X PUT http://example.com
- Send data in JSON format, specifying the appropriate content-type header:
curl -d '{"name":"bob"}' -H 'Content-Type: application/json' http://example.com/users/1234
... TRUNCATED OUTPUT
TLDRは「長すぎる; は読みませんでした」、つまり、一部のテキストは、その過度の冗長性のために無視されました。名前はこのツールに適しています。manページは便利ですが、長すぎる場合があるためです。
Fedoraの場合、tldrはPythonで作成されました。dnfマネージャを使用してインストールできます。通常、このツールを使用するにはインターネットアクセスが必要です。ただし、Fedora Pythonクライアントを使用すると、これらのページをダウンロードしてキャッシュし、オフラインでアクセスできます。
4. jq vs sed / grep
jqはコマンドライン用のJSONプロセッサです。これはsedまたはgrepに似ていますが、JSONデータを処理するように特別に設計されています。あなたが日常のタスクでJSONを使用する開発者またはシステム管理者であれば、このツールはあなたのためです。
grepやsedなどの標準的なテキスト処理ツールに対するjqの主な利点は、JSONデータの構造を理解できるため、単一のステートメントで複雑なクエリを作成できることです。
たとえば、次のJSONファイルでコンテナの名前を見つけようとしています。
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"labels": {
"app": "myapp"
},
"name": "myapp",
"namespace": "project1"
},
"spec": {
"containers": [
{
"command": [
"sleep",
"3000"
],
"image": "busybox",
"imagePullPolicy": "IfNotPresent",
"name": "busybox"
},
{
"name": "nginx",
"image": "nginx",
"resources": {},
"imagePullPolicy": "IfNotPresent"
}
],
"restartPolicy": "Never"
}
}
grepを実行して文字列名を見つけます。
$ grep name k8s-pod.json
"name": "myapp",
"namespace": "project1"
"name": "busybox"
"name": "nginx",
grepは、単語nameを含むすべての行を返しました。grepにいくつかのパラメーターを追加して制限することができ、いくつかの正規表現操作でコンテナーの名前を検索できます。
jqで同じ結果を得るには、次のように記述します。
$ jq '.spec.containers[].name' k8s-pod.json
"busybox"
"nginx"
このコマンドは、両方のコンテナの名前を提供します。2番目のコンテナーの名前のみを検索する場合は、配列要素のインデックスを式に追加します。
$ jq '.spec.containers[1].name' k8s-pod.json
"nginx"
jqはデータ構造を認識しているため、ファイル形式が多少変更されても同じ結果が得られます。この場合、grepとsedは正しく機能しない可能性があります。
Jqには多くの機能がありますが、それらを説明するには別の記事が必要です。詳細については、jq プロジェクトページまたはtldr を参照してください。
5. fd対find
fdは、軽量の代替検索です。Fdはそれを完全に置き換えることを意図していません。デフォルトでは、ファイルを操作するための全体的なアプローチを定義する最も一般的な設定になっています。
たとえば、Gitリポジトリディレクトリでファイルを検索すると、fdは自動的に隠しファイルと.gitディレクトリを含むサブディレクトリを除外し、.gitignoreファイルからテンプレートを無視します。全体として、最初の試行でより関連性の高い結果を提供することにより、検索を高速化します。
デフォルトでは、fdは現在のディレクトリで大文字と小文字を区別しない検索をカラー出力で実行します。findコマンドを使用した同じ検索では、コマンドラインに追加のパラメーターが必要です。たとえば、現在のディレクトリにあるすべての.md(または.MD)ファイルを見つけるには、findコマンドを記述します。
$ find . -iname "*.md"
fdの場合、次のようになります。
$ fd .md
ただし、場合によっては、fdに追加のパラメーターも必要になります。たとえば、隠しファイルやディレクトリを含める場合は、-Hオプションを使用する必要がありますが、通常、検索時には必要ありません。
fdは、多くのLinuxディストリビューションで使用できます。Fedoraでは、次のようにインストールできます:
$ sudo dnf install fd-find
何かをあきらめる必要はありません
新しいLinuxコマンドラインツールを使用していますか?または独占的に老人に座る?しかし、おそらくあなたはコンボを持っているでしょう?コメントであなたの経験を共有してください。
広告
私たちの顧客の多くは、叙事詩サーバーのメリットをすでに高く評価しています。
これらは、AMD EPYCプロセッサ、最大3.4 GHzのCPUコア周波数を備えた仮想サーバーです。最大構成では、128個のCPUコア、512 GBのRAM、4000 GBのNVMeをフルに利用できます。ご注文はお早めに!