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

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

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

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

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

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

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

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

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

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

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【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 を渡すのです。(例えが悪い?)

まとめ

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

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

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

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
10
読み込み中...
10 票, 平均: 1.00 / 110
958
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

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

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

この記事をかいた人

About the author

インフラわっしょいマン

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