数か月前、私は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]に送信してください。