【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【Linux コマンド】イカしたコマンド【ミニ使用例】

はじめに

こんにちは
システムソリューション部の武田です
今回は Linux まわりでのイカしたコマンドの使い方やオプションを紹介するぜ!

「イカした」とは何を指すのか。というところは個人の感覚に大きく左右されますが私 武田の目線から、見かけたら「おっ!やるぅ!ヒュー!」となるやつを簡単にいくつかあげられたらと考えています。

軽く例を挙げるならば

$ ps auxwwf | grep httpd | grep -v "grep”

これはイカしてないかなぁ。
長いよね、ちょっと。

$ ps auxwwf | grep http[d]

やっぱこうでしょ。
ヒュー!
別に短い = イカしてる というわけではないけども

※ ちなみに「イカした」は死語ではないです。
死んでいるのは「イケイケ」とか「バッチグー」とかです

個人的に好きなコマンドの紹介記事ですが息抜き程度にお楽しみください。

systemctl enable --now

これはイカしてます。
systemctl で start と enable を同時にぶち込むことができます。
つまり

$ systemctl start httpd
$ systemctl enable httpd

これをまとめて

$ systemctl enable --now httpd

これで OK です。
ヒュー!サクッと感あって good

ブレース展開でファイルバックアップ

ブレース展開はコマンドではなく bash の機能の一つですがこちらもうまく使えばイカした使い方ができます。
というかイカした使い方の宝庫みたいな機能ですが、1パターンだけ紹介します。

#日付ついたコピー
$ cp test.txt{,_$(date +%Y%m%d)}

# .org のついたコピー
$ cp test.txt{,.org}

このように 文字列A{,文字列B} とするとまず文字列Aが単体で出力され、その後ろに展開された文字列B が出力されます。

ややこしいですが
cp test.txt{,_$(date +%Y%m%d)} は展開されて cp test.txt test.txt_20230114 となります
(執筆日時:2023年1月14日)

コマンドと結果を見比べて、どういう動きか研究して自分だけのイカしたブレース展開してみてください。

lsof を利用したファイル復元

あ、やべえファイル rm しちゃった......
あきらめないで。ワンチャンあるかも。

rm コマンドは inode へのリンクを消すコマンドです。
inode へのリンクが全消失していなければ、つまりそのファイルを開いているプロセスが残っていればワンチャンあります。

下記はデモです。

$ echo "hogehoge" > hoge.txt
$ less hoge.txt

# less プロセス一時停止
Ctrl + z

# 削除
$ rm hoge.txt

# プロセス ID を取得
$ lsof | grep "hoge.txt"
less     92             takeda    4r      REG   8,16        9  1994 /home/takeda/hoge.txt (deleted)

# cp コマンドで復元
$ cp /proc/92/fd/4 ./fuga.txt

# 確認
$ cat fuga.txt
hogehoge

「/proc/{プロセスID}/fd/」から引っ張り出すのがポイントですね。
この場合、「イカしたコマンド」ってどれなんでしょう。

わかりません。
でもピンチを切り抜けるのはイカしていると言えるでしょう?

awk 1

これは中間証明書を結合するときによく使っています。
cat で証明書結合するとき最終行に改行コードが無くて

—–BEGIN CERTIFICATE—–
サーバ証明書ファイルの記述内容
—–END CERTIFICATE—–—–BEGIN CERTIFICATE—–
中間証明書ファイルの記述内容
—–END CERTIFICATE—–

みたいになることはないですか?

awk を使えば簡単です。
下記はデモです

$ cat test.pem
—–BEGIN CERTIFICATE—–
発行されたサーバー証明書ファイルの記述内容
—–END CERTIFICATE—–

$ cat test.ca
—–BEGIN CERTIFICATE—–
中間証明書ファイルの記述内容
—–END CERTIFICATE—–

$ awk 1 test.pem test.ca > test.chain
$ cat test.chain
—–BEGIN CERTIFICATE—–
発行されたサーバー証明書ファイルの記述内容
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
中間証明書ファイルの記述内容
—–END CERTIFICATE—–

イカすぜ!

awk は 「awk ‘パターン {アクション}’」 で表記されます。
そしてアクションが省略された場合、パターンにマッチしたレコードを表示してくれます。
これを利用し、「1 = true」のパターンを渡すことですべての行にマッチさせて、レコード単位(1行単位)で表示させることで、きれいに1行ずつ出力されるというわけです。

SQL インジェクションの例として有名な「WHERE id=‘hoge’ or ‘A’=‘A’」とおんなじ手口です。true を渡すのです。(例えが悪い?)

まとめ

ほんのちょっとでええ
ほんのちょっとイカしたコマンド使えたら、明日からもまた頑張れるやんか

ということで個人的にちょっと流行ったらいいなと思ってるコマンドの使い方をいくつか書いてみました。
そういうのお持ちの方はこっそり教えてください。(もしくは記事を書いてください。読みます。)

ありがとうございました。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
6
読み込み中...
6 票, 平均: 1.00 / 16
141
facebook twitter はてなブックマーク
【大阪 / 横浜】インフラエンジニア / サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア / サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

武田亘

システムソリューション部所属。
好きで毎日勉強していたところ、運よくビヨンドに拾っていただいた。
眼鏡からコンタクトに変えるか悩み始めてから9年経過している。