GNU/Linux >> Linux の 問題 >  >> Linux

17すべてのシステム管理者が知っておくべきLinuxコマンド

数か月前、私はEnable Sysadmin寄稿者コミュニティに、彼らの最も重要なコマンドのリストを作成するのを手伝ってくれるように頼みました。結果を処理した後、17個のコマンドがLinuxのsysadminジョブに不可欠であるか、少なくとも非常に有益であることが明らかになりました。それで、これ以上遅れることなく、これらに飛び込みましょう。

[ ネットワークコマンドについて詳しく知りたいですか?クラウドソーシングによるコマンドリストのパート1をお読みください ]

検索 -このコマンドはfindutilsの一部です カスタム検索コマンドを使用できます。たとえば、特定の名前に一致するディレクトリを検索する場合は、次のように使用できます。

find path/ -type d -iname '*dir_name*'

検索 コマンドの詳細については、こちらをご覧ください。

ls + xargs —このペアリングは私にとって新しいものでした。しかし、学ぶことは本当に興味深く、ゲームを変える可能性のあるアプリケーションがいくつかあります。 xargs 特定のコマンドの出力に対して追加のコマンドを実行できます。この非常に基本的な例は、 lsとペアリングするときに見ることができます。 指図。たとえば、 catが必要な場合 lsによってリストされたすべてのファイル 、次のようなものを使用できます:

$ ls
1.file  2.file  3.file

$ ls | xargs cat
you are reading file 1
you are reading file 2 
you are reading file 3

HowtoGeekのxargsの詳細を確認してください
awk / sed /(e)grep —このトリオは、私たちのコミュニティによって他のどのコマンドよりも何度も名前が付けられました。これらのコマンドがコミュニティおよびシステム管理者全体にとって実際にどれほど重要であるかを知ることは、目を見張るものでした。 grepに焦点を当てましょう 最初。
grep —grepは素晴らしいです、嘘はありません。 grepについてまだ知らない場合 (正直に言うと、Linuxコマンドラインを初めて使用する場合は、少なくとも可能です)、それに慣れてください。 grep は、コマンドライン上のほぼすべての標準出力をフィルタリングできるツールです。 grepできます あなたが見つけたい単語のために、またはあなたのキーワードと一致しないすべてをあなたに示すためにそれを逆にします。 grepを拡張する非常によく似たツールについても少し説明します。 少し。次にいくつかの例を示します。
たとえば、「エラー」という単語を含む特定のファイルのすべての行を表示するには、次のようにします。

$ cat file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.
Then we have a warning.
and a WARNING
and then of course Warning.

$ grep error file.txt
This line contains an error.
$

これを包括的grepと呼びます 。除外フラグを使用して、これを元に戻すこともできます。 sshd configのすべての構成オプションを表示したいとします。 コメントアウトされていない場合は、次のようにすることができます:

# grep -v \# /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

… snip ...

Subsystem sftp /usr/libexec/openssh/sftp-server
#

grepは注目に値します Bashの多くのものと同様に、大文字と小文字が区別されます。したがって、「エラー」をgrepしても、「エラー」または「エラー」は見つかりません。 grepに伝えることができます -iを使用して大文字と小文字を区別しない方法でフィルタリングする フラグ。

$ grep -i eRRor file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.

これは、文字が同じである限り、error、ERROR、erRoRなどで一致します。

さて、 grepを使用できると言いました コマンドの出力をフィルタリングするにはどうすればよいですか?これは、パイプを使用した出力リダイレクトで行います。これは、ログのフィルタリングなどに非常に役立ちます。テール -fを使用する場合でも同様です。 。

   # tail -f /var/log/messages | grep -i error

grepにはさらに多くのオプションがあります 、キーワードのファイル、正規表現に基づくフィルタリングを含め、出力に色を付けることもできます。詳細を知りたい場合は、manページをよく理解しておくことをお勧めします。

egrep —では、複数の単語でフィルタリングしたい場合はどうでしょうか。私はいつもegrepを使用していました このために。

grepを実行したいとします エラーまたは警告が発生した場合は、次のようにすることができます:

$ egrep 'error|warning' file.txt
This line contains an error.
Then we have a warning.

egrep 他のパターンもサポートすることは間違いありませんが、私がいつも使っていたパターンがその1つであり、非常に便利であることがわかりました。

awk - awk コマンドは、テキストを処理するためのAWKプログラミング言語を実装しており、列に編成されたデータの処理に特に優れています。このコマンドは、すべてではないにしてもほとんどのLinuxディストリビューションおよびその他のUNIXオペレーティングシステムで使用できます。

システム管理者は通常、 awkを使用します ファイルからデータを抽出するか、コマンドラインまたはシェルスクリプトの他のコマンドの出力からパイプで送信します。 awkを呼び出す '{}'の間にアクションを提供するコマンドを実行する 。 $ 1のように列を変数として参照できます 最初の列は、 $ 2 、2番目の場合など。デフォルトでは、 awk 列の区切り文字としてスペースを使用しますが、フラグ -Fで指定することで任意の文字を使用できます 。

たとえば、所有者とグループを印刷するには、 ls -lの出力の列3と4を使用します。 、出力を awkにパイプします このように:

$ ls -l | awk '{ print $3,$4 }'
ricardo users
ricardo users
root root
...

アクションの前にオプションの正規表現を指定することにより、入力から行をフィルタリングすることもできます。たとえば、 / etc / hosts の数字で始まる行のすべてのホスト名(列2)を出力するには ファイルの場合は、 awkを使用します このように:

$ awk '/^[0-9]/ { print $2 }' /etc/hosts
localhost
sat6server
tower01.olab.home.ca
...

awk は、プログラミング言語全体をサポートする多用途のコマンドであり、計算、条件、データ変換などの実行など、さまざまなことを実行できます。これは、システムの自動化に役立つ優れたオプションであり、多くの場合、シェルスクリプトの一部です。

詳細については、gawkの初心者向けガイドとコマンドの manの記事を参照してください。 ページ。

sed -コマンドsed —ストリームエディタの略—テキストのストリームをスクリプト化された方法でフィルタリングおよび編集できます。システム管理者は、多くの場合、 sedを使用します Bashスクリプトで、他のコマンドから、またはファイルから直接パイプされたテキストを変換します。最も基本的な形式では、 sed テキストを検索して置き換えます。たとえば、次のように、文字列「stream」をパイプからの「text」に置き換えるために使用します。

$ echo "This is a test stream" | sed 's/stream/text/'
This is a test text

次のように、最後のパラメータとしてファイル名を指定して、ファイル内のテキストを置き換えることもできます。

$ sed 's/pattern/replacement/' filename

安全のため、 sed ファイルを変更せずに結果をSTDOUTに出力します。出力を新しいファイルにリダイレクトして、結果を保存できます。 -i を指定して、元のファイルを変更することもできます フラグ。

デフォルトでは、 sed 各行のパターンの最初の出現のみを変更します。この動作を変更して、パターンのすべてのインスタンスを置き換えることができるようにするには、 gを指定します sedの最後にあるオプション 次のようなコマンド式:

$ sed 's/pattern/replacement/g' filename

基本的なテキスト検索に加えて、 sed 正規表現のマッチングをサポートします。たとえば、正規表現「[Ww] ord」を使用して、各行の「Word」と「word」の両方を置き換えます。

$ echo "Word word WORD" | sed 's/[Ww]ord/text/g'
text text WORD

このコマンドは他の多くの可能性を提供しますが、この基本的な使用法でも、多くの時間を節約できます。その他のオプションの詳細については、 manをご覧ください。 sedのページ 。

見る -このコマンドを使用すると、指定された間隔を使用してコマンド/プログラムを繰り返し実行できます。デフォルトでは、間隔は2秒ごとです。多くのシステム管理者は、このコマンドを使用して、完了するまでさまざまなシステム状態やタスクを監視します。
たとえば、メモリ使用量を監視する場合は、次を使用できます。 watch -d free -m -d オプションは、前回の実行とは異なる値を強調表示します。

カール -このコマンドを使用すると、HTTP / HTTPSだけでなく、サーバーとの間でデータを転送できます。これはユーザーの操作なしで機能し、REST API呼び出し(GET、POST、PUT)を行う必要がある状況で非常に頻繁に見られます。

curl SSL、Cookieの使用、ファイル転送の再開など、サーバーに接続するための多くのオプションをサポートしています。コマンドラインから実行できるWebブラウザがあるかのようです。

以下の例は、 curlを示しています。 単純なファイルのダウンロードの場合、ただし帯域幅を制限します:

curl -o myfile.tar.gz --limit-rate 20K https://myserver.example.com/bigfile.tar.gz

マニュアルに記載されているように、 curlで使用できるオプションの数 たくさんあります。私が頻繁に使用するもののいくつかは次のとおりです。

  • -s: サイレントモードで実行する(プログレスバーなし)
  • -k: 安全でない接続を許可する(自己署名証明書が使用されている内部の既知のサーバーに接続する場合のみ)
curl -X POST --header "Content-Type: application/json" \
             --data '{"my_id": 5, "my_application": "moneymaker", "body": "showmethemoney"}' \
               https://myserver.example.com/posts

上記の例では、POSTを実行し、ヘッダーを渡します。 およびbody

メール -メール commandは、ユーザーがブラウザーや専用のクライアントを開かなくても、コマンドラインから直接電子メールを送信できる非常に優れたツールです。マシン上でローカルにSMTPサーバーを実行する必要があるため、注意が必要です。

パッケージをインストールします:

 $ apt-get install mailutils

基本的なメールを送信するには、次を使用できます。

$ mail -s "Subject Line" [email protected]

Enterを押したとき 、 Ccが表示されます 分野。受信者を追加するか、 Enterを押すだけです。 スキップする。次に、メッセージを入力します。終了したら、 Ctrl + Dを使用します 配信のためにメッセージを送信します。終了すると次のようになります:

$ mail -s "Subject Line" [email protected]
Cc: [email protected]
"Hello world" 
<Ctrl + D>

このコマンドの詳細については、このすばらしい記事をご覧ください。

tmux - tmux コマンド、つまりターミナルマルチプレクサは、単一のターミナルウィンドウ内に複数のウィンドウを許可します。ウィンドウ間をジャンプしたり、ウィンドウを個別のペインに分割したりすることもできます。各ペインには独自のCLIがあります。 tmuxの周りにいくつかの素晴らしいコンテンツが公開されています とその使用方法なので、そのコンテンツへのリンクを残しておきます。詳細については、tmuxを使用するためのヒントを確認してください。

sudo -sudoコマンドは、昇格された特権へのパスです。すべてのシステム管理者は、このコマンドの使用方法、 suとの違いを知っている必要があります。 (多くの場合、 sudoの代わりに使用されます …悪い考え)、および必要なアカウントによるアクセスを確保する方法。 sudoの紹介記事を書きました いつか役立つと思うかもしれません。

ssh - ssh (セキュアシェル)コマンドを使用すると、リモート作業プロトコルを使用して、ネットワーク接続を介してサーバーにアクセスして操作できます。サポートに携わったことがある場合、またはその問題のサポートに助けられたことがある場合は、サポート技術者が sshを何度も使用します。 マシンまたはサーバーにアクセスします。
コマンドの使用法は非常に簡単です:

$ ssh username@hostname

パスワードの入力を求められます。適切な資格情報を提供できる場合は、目的のシステムに移動します。

scp -セキュアコピーコマンド( scp )ユーザーがリモートシステムとの間でファイルをコピーできるようにします。 sshが必要です トランザクションの両端で有効になり、適切なコマンド構文が使用されます。そのすべてとあなたは行ってもいいはずです。コマンド構文は次のようになります。

リモートシステムから現在の作業ディレクトリにファイルをコピーするには:

scp user@ip_of_remote :/file/path/of/file.txt . 

スキル -このコマンドユーティリティを使用すると、実行中のプログラムのプロセスに信号を送ることができます。名前(完全または部分的)、ユーザーなどでプロセスを検索できます。このユーティリティを使用するためのオプションはたくさんありますが、デフォルトでは、コマンドは基準に一致するすべてのPIDSに15信号(TERM)を送信します。例:

$ pkill chrome

これにより、マシンで実行されているChromeのすべてのインスタンスがシャットダウンされます。

lsns -このコマンド、名前空間を一覧表示します( lsns )、それが言うことを正確に行います—名前空間をリストします。クレイジーだよね?とにかく、ここに追加できるオプションはたくさんあります: -J (json形式)、 -l <​​/ code> (リスト形式)、 -n (ヘッダーなし)など。このコマンドは util-linuxの一部です。 パッケージと広く利用可能です。 lsnsの詳細については または、名前空間全般については、寄稿者のSteveOvensによるこの記事をご覧ください。最もよく使用されている7つのLinux名前空間です。

共有解除 -これも名前空間を中心にしています。 unshareコマンドは、新しく作成された名前空間でプログラムを実行します。デフォルトでは、新しい名前空間は、プログラムが実行されている間だけ存続します。このコマンドの詳細については、 manを確認してください。 お気に入りのLinuxマシンのページ。

[システム管理者のスキルをテストしたいですか?今日、スキル評価を受けてください。 ]

これらのツールをワークフローに適切に組み込むことができれば、それを行うためのより優れたシステム管理者になります。お気に入りのコマンドの一部がリストに含まれていなかった場合は、ぜひお知らせください。リストにないお気に入りのコマンドに関する記事を[email protected]に送信してください。


Linux
  1. Linuxのサウンドテーマ:すべてのユーザーが知っておくべきこと

  2. 6すべてのシステム管理者が知っておくべきOpenSSLコマンドオプション

  3. Linux – Dmesgで何をgrepするかを知る方法は?

  1. すべてのユーザーに必要な20のLinuxコマンド

  2. すべてのLinuxユーザーが知っておくべき10個のコマンド

  3. システム統計:知っておくべきLinux統計コマンド

  1. すべてのLinuxシステム管理者がテーブルにもたらすべき3つのスキル

  2. すべてのシステム管理者が知っておくべき7つのLinuxネットワークコマンド

  3. すべての開発者が知っておくべきLinuxコマンドのリスト