カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

パイプラインとxargs

Linuxでコマンドによるオペレーションを行う中で便利な機能をご紹介します。

パイプライン

パイプラインは略してパイプとも呼ばれていて「|」のことです。
日本語キーボードでShiftキーを押しながら¥マークのキーを押すと入力される記号です。

パイプラインを使うと最初のコマンドの結果(標準出力)を次のコマンドの入力(標準入力)として渡すことができます。

例えば、CRONデーモンが現在動作しているかどうかを確認する

$ ps aux | grep cron

出力結果

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        2389  0.0  0.1 224384  2144 ?        Ss   Feb21   0:04 /usr/sbin/crond -n
user     3212367  0.0  0.1 222316  2072 pts/0    S+   06:19   0:00 grep --color=auto cron

以上のようにpsコマンドの出力結果をgrepコマンドに渡し、「cron」という文字列を検索した結果が表示されています。

先頭行は本来表示されませんが、分かりやすくするため表示しています。
先頭行も表示したい場合は次のように入力すると先頭行も表示してくれます。

$ ps aux | grep -E "^USER|cron"

同じようにcatコマンドの出力結果などを検索して表示するのにも役立ちます。

xargs

次にxargsコマンドについてです。
先ほどのパイプラインだけだと最初のコマンドの結果(標準出力)を次のコマンドの入力(標準入力)としてしか渡すことができません。
最初のコマンドの結果(標準出力)を次のコマンドの引数として渡すためにはxargsコマンドを使います。

よく使われるのはfindコマンドとの組み合わせではないでしょうか。

例えば、findコマンドで検索したログファイルを全て削除する

find ./ -name "*.log" | xargs rm -f

findコマンドで検索された結果のファイルリストがrmコマンドに引数として渡されて、該当ファイルが全て削除されるという結果になります。

他に、findで検索したファイルのパーミッションを一括で変更するなど

find ./ -name "*.sh" | xargs chmod 777

以上のようにパイプラインとxargsコマンドをうまく使えば、コマンド操作がはかどるのではないかと思います。

7 views

SSHコマンドの使い方

SSH(Secure Shell)でログインするにはsshコマンドを使用します。
オプションlでユーザー名を指定するか、@でユーザー名とホスト名を繋いで指定するかのどちらかの方法でログインします。

オプションlでユーザー名を指定する場合

ssh -l [username] [hostname]

ユーザー名@ホスト名で指定する場合

ssh [username]@[hostname]

その後、パスワードを聞かれますので、パスワードを打ち込めばSSHでログインできます。
ログイン後はサーバーのシェルでコマンドを実行する場合と同様の操作が可能です。

なお、SSHでの接続にはサーバーがSSHでのログインを許可している必要があります。

343 views

コマンド一発でテキストファイル結合

コマンドたった1行打つだけで、テキストファイルを結合することができます。

Linuxの場合

$ cat *.csv > all/all.csv

Windowsの場合

$ type *.csv > all/all.csv
2,782 views

findとgrepを使ってファイルの中身を一括検索と置換

ホームページを制作していて、基幹に関わるファイル名等を変更したとき、サーバーにあるファイルのどのファイルから読み込まれているかを全て把握した上で変更しないといけないですよね。

小規模なサイトであれば問題はありませんが、大規模なサイトになると難しいこともあるでしょう。

これはサーバーが直接操作できる、もしくはsshでログインできる場合に限られますが、便利な方法をご紹介します。

findとgrepのコマンドを組み合わせてファイル内に該当ファイル名が記述されているファイルを探します。
例として「example.js」というファイルが読み込まれているhtmlファイルを探します。

find / -name '*.html' -type f | xargs grep -l 'example.js'

findコマンドのほうは、第1引数に探すディレクトリ(この場合ルート)、-nameオプションでファイル名を絞り込んでいます。
-type fは通常のファイルを指定しています。※シンボリックリンク等含まれない
続きを読む…»

4,720 views

DNSSEC最上位の暗号鍵更新に対する対応

サーバーを自前で運用している方にはとても重要な内容でした。
私が管理しているサーバーは問題なかったのですが、念のため覚書として記しておきます。

参考にさせていただいたサイト
https://cloudadvisor.jp/blog/dnssec_update

DNSが「ルートゾーンKSKの更新」に対応されているか確認
以下のコマンドを打ちます。

dig +bufsize=4096 +short rs.dns-oarc.net txt

返ってくる答えの中で「at least」の後にある数値が1424以上であれば問題ないそうです。

1,038 views