現在お買い物カゴには何も入っていません。
投稿者: akuroiwa
grepの活用
grepコマンドの種類と使用法
grepは “global regular expression print” の略で、ファイル内のテキストパターンを検索するための強力なコマンドラインツールです。主に以下の種類があります:
- 標準grep
- egrep (extended grep)
- fgrep (fast grep)
1. 標準grep
基本的な正規表現を使用して検索を行います。
基本構文:
grep [オプション] パターン [ファイル...]
主なオプション:
-i
: 大文字小文字を区別しない-v
: マッチしない行を表示-n
: 行番号を表示-r
: ディレクトリを再帰的に検索
使用例:
grep "error" log.txt grep -i "warning" *.log
2. egrep (extended grep)
拡張正規表現を使用できます。
grep -E
と同等です。使用例:
egrep "pattern1|pattern2" file.txt grep -E "pattern1|pattern2" file.txt
3. fgrep (fast grep)
固定文字列のパターンを高速に検索します。正規表現は使用できません。
grep -F
と同等です。使用例:
fgrep "exact string" file.txt grep -F "exact string" file.txt
高度な使用法
- 複数のパターンを検索:
grep -e "pattern1" -e "pattern2" file.txt
- 検索結果の前後の行を表示:
grep -A 2 -B 2 "pattern" file.txt
- ファイル名のみを表示:
grep -l "pattern" *.txt
- マッチした回数を表示:
grep -c "pattern" file.txt
- 正規表現を使用:
grep "^start" file.txt # "start"で始まる行 grep "end$" file.txt # "end"で終わる行
- ディレクトリ内を再帰的に検索:
grep -r "pattern" /path/to/directory
grepは非常に柔軟で強力なツールであり、テキスト処理やログ分析などの様々なタスクで活用できます。正規表現の知識を深めることで、より効果的に使用することができます。
UFW
UFWの基本設定と重要サブコマンド
UFW (Uncomplicated Firewall) は、Debian系ディストリビューションで使用される簡易ファイアウォールです。以下は最低限覚えておくべき内容です。
UFWの有効化/無効化:
sudo ufw enable # 有効化 sudo ufw disable # 無効化
UFWの状態確認:
sudo ufw status
デフォルトポリシーの設定:
sudo ufw default deny incoming # 受信をデフォルトで拒否 sudo ufw default allow outgoing # 送信をデフォルトで許可
特定のポートを開く:
sudo ufw allow 22 # SSH (22番ポート) を許可 sudo ufw allow 80 # HTTP (80番ポート) を許可 sudo ufw allow 443 # HTTPS (443番ポート) を許可
特定のサービスを許可:
sudo ufw allow ssh # SSHを許可 sudo ufw allow http # HTTPを許可
特定のIPアドレスからの接続を許可:
sudo ufw allow from 192.168.1.100 # 特定のIPからの全ての接続を許可
ポートの範囲を開く:
sudo ufw allow 6000:6007/tcp # TCPの6000から6007ポートを許可
ルールの削除:
sudo ufw delete allow 80 # 80番ポートの許可を削除
ルールの確認(番号付き):
sudo ufw status numbered
特定の番号のルールを削除。上記ルールを確認しながら出来る:
sudo ufw delete 2 # 2番目のルールを削除
ログの有効化。rsyslog サポート用に構成されたシステムでは、/var/log/ufw.log にログを記録。レベルも設定可能1:
sudo ufw logging on
これらのコマンドを使いこなすことで、基本的なファイアウォール設定を行うことができます。UFWを使用する際は、必要なポートのみを開き、不要なポートは閉じておくことが重要です。また、SSHポート(通常は22番)を閉じてしまうと、リモートアクセスができなくなる可能性があるので注意が必要です。2345
パッケージ管理
Debian/Ubuntuのパッケージ管理
Debian系ディストリビューション(DebianとUbuntu)では、主に以下のパッケージ管理ツールが使用されています。
パッケージのインストールにはroot権限が必要です。以前の記事でも触れましたが、Debianの初期設定では
su -l
でrootユーザーとして実行します。以下はUbuntuでの例です。APT (Advanced Package Tool)
パッケージのインストール:
sudo apt install パッケージ名
パッケージの削除。後者はホームディレクトリ下を除く設定ファイル等も削除する:
sudo apt remove パッケージ名 sudo apt purge パッケージ名
パッケージリストの更新。インストール前やアップグレード前に行う:
sudo apt update
システム全体のアップグレード:
sudo apt upgrade
パッケージの削除を伴うシステム全体のアップグレード:
sudo apt full-upgrade
パッケージの検索:
apt search 正規表現
パッケージの情報取得:
apt show パッケージ名
dpkg
低レベルのパッケージ管理ツールです。
.debファイルのインストール:
sudo dpkg -i パッケージ名.deb
インストールされたパッケージの一覧表示:
dpkg -l
パッケージ名に含まれるファイル一覧:
dpkg -L パッケージ名 dpkg --listfiles パッケージ名
ファイルがどのパッケージに含まれるか検索:
dpkg -S filename-search-pattern dpkg --search filename-search-pattern
Snap
Ubuntuで導入されたパッケージ管理システムです。coreで始まるものはbase snapで、各パッケージを動かすのに必要です。その番号はUbuntuリリースのバージョンを表します。
Snapパッケージのインストール:
sudo snap install パッケージ名
インストールされたSnapの一覧表示:
snap list
Snapパッケージの更新:
sudo snap refresh パッケージ名
GUIツール
- App Center(Ubuntu):
Show Appsから「アプリセンター」を開き、検索、インストール、削除が可能です。 - Synaptic Package Manager:
より詳細な操作が可能なGUIツールです。
sudo apt install synaptic
でインストールできます。
Fedoraのパッケージ管理
Fedoraでは、主にDNF (Dandified Yum) を使用します。
パッケージのインストール:
sudo dnf install パッケージ名
パッケージの削除。eraseというエイリアスは廃止された1:
sudo dnf remove パッケージ名
パッケージリストの更新:
sudo dnf check-update
システム全体のアップグレード:
sudo dnf upgrade
RPM (Red Hat Package Manager)
低レベルのパッケージ管理ツールです。
.rpmファイルのインストール:
sudo rpm -i パッケージ名.rpm
インストールされたパッケージの一覧表示:
rpm -qa
GUIツール
Debian、FedoraなどのGNOMEを採用しているLinuxディストリビューションでは、GNOME Softwareがデフォルトのグラフィカルパッケージマネージャーとして使用されています。GNOME Softwareは、ソフトウェアのインストール、更新、削除を簡単に行えるGUIツールです。
Ubuntuに関しては、以前はUbuntu Softwareが使用されていましたが、最新のバージョンではApp Center(アプリセンター)に変更されています。英語版では「App Center」、日本語版では「アプリセンター」と表示されます。
Ubuntuでアプリセンターを開くには、以下の手順を行います:
- 画面左下のShow Apps(アプリケーションを表示)ボタンをクリックします。
- 検索バーに「アプリセンター」または「App Center」と入力します。
- 表示されたアイコンをクリックしてアプリセンターを起動します。
アプリセンターでは、ソフトウェアの検索、インストール、更新、削除などの操作を簡単に行うことができます。
まとめ
これらのツールを使用することで、Debian、Ubuntu、およびFedoraでのパッケージ管理を効率的に行うことができます。GUIツールは初心者にとって使いやすい一方、コマンドラインツールはより詳細な制御と自動化が可能です。
- App Center(Ubuntu):
プロセス管理
pgrepとは
プロセス名やその他の属性に基づいてプロセスを検索するコマンドラインツールです。
pgrep -u root sshd # rootユーザーが実行しているsshdプロセスを検索
pkillとは
pkill -u username # 特定ユーザーの全プロセスを終了 pkill firefox # プロセス名がパターンに一致する場合にSIGTERM
psとは
現在実行中のプロセスに関する情報を表示するコマンドラインツールです。
ps aux # 全ユーザーの全プロセスを詳細表示
killとは
プロセスIDを指定してプロセスにシグナルを送信するコマンドラインツールです。
kill -9 1234 # プロセスID 1234のプロセスを強制終了
主要なオプションには以下があります:
-9
(SIGKILL): プロセスを強制終了します。プロセスは即座に終了し、クリーンアップ処理を行う機会がありません。-15
(SIGTERM): デフォルトのシグナルで、プロセスに正常終了を要求します。-1
(SIGHUP): プロセスに設定の再読み込みを要求します。
例:
kill -9 1234
はプロセスID 1234のプロセスを強制終了します。fg, bg, jobsの使い方
これらのコマンドはジョブ制御に使用されます。
これらのコマンドを使用することで、複数のジョブを効率的に管理し、シェル上での作業を柔軟に行うことができます。
jobs
jobs
コマンドは、現在のシェルセッションでバックグラウンドで実行されているジョブのリストを表示します。$ jobs [1] + running sleep 100 & [2] - running nano file.txt
fg
fg
コマンドは、バックグラウンドジョブをフォアグラウンドに移動します。$ fg %1 # ジョブ番号1をフォアグラウンドに移動
bg
bg
コマンドは、一時停止されたジョブをバックグラウンドで再開します。$ sleep 100 ^Z [1] + 18653 suspended sleep 100 $ bg [1] + 18653 continued sleep 100
キー操作
ジョブをバックグラウンドで実行する方法には、主に2つあります:
- コマンド実行時にバックグラウンドで起動する
- 実行中のジョブをバックグラウンドに移動する
コマンド実行時にバックグラウンドで起動する
コマンドの末尾に `&` を付けることで、そのコマンドをバックグラウンドで実行できます。
$ sleep 100 & [1] 12345
この場合、
sleep 100
コマンドがバックグラウンドで実行され、ジョブ番号と プロセスID が表示されます。実行中のジョブをバックグラウンドに移動する
実行中のジョブをバックグラウンドに移動するには、以下の手順を踏みます:
- 実行中のジョブを一時停止する:
Ctrl + Z
キーを押します。 - 一時停止したジョブをバックグラウンドで再開する:
bg
コマンドを使用します。
$ sleep 100 ^Z [1] + 12345 suspended sleep 100 $ bg [1] + 12345 continued sleep 100
この操作により、フォアグラウンドで実行していたジョブをバックグラウンドに移動できます。
^Z
とあるのはCtrl + Z
キーのことです。その他のキー操作
Ctrl + C
: フォアグラウンドで実行中のジョブを終了します。Ctrl + D
: 標準入力の終了(EOF)を送信します。多くのプログラムはこれにより終了します。
これらのキー操作と
jobs
、fg
、bg
コマンドを組み合わせることで、効率的にジョブを管理できます。バックグラウンドジョブの使用により、複数のタスクを同時に実行しながら、シェルの対話的な使用を継続できます。texinfoとman pageの概要
Texinfoとは
Texinfoは、単一のソースファイルから複数の形式(オンラインドキュメントや印刷用出力)を生成できるドキュメンテーションシステムです。主にソフトウェアのドキュメント作成に使用されます。
man pageとは
man page(マニュアルページ)は、Unixライクなオペレーティングシステムで使用される、コマンドラインツールやシステム関数のリファレンスマニュアルです。
Texinfoの使い方
- Texinfoソースファイルの作成
makeinfo
コマンドでHTML、Info、またはPDF形式に変換- 生成されたドキュメントの配布や公開
texinfoはGNUプロジェクトの公式ドキュメンテーションシステムであり、Emacsと深い関わりがあります。Emacsは texinfoファイルを編集・閲覧するための機能を内蔵しており、Info modeを使用してtexinfo形式のドキュメントを直接閲覧できます。また、Emacsのドキュメントもtexinfoで書かれています。
使い方は以下のコマンドで表示できます:
man texinfo
man pageの使い方
man
コマンドの基本構文:man [セクション] コマンド名
- よく使用されるセクション(1: ユーザーコマンド、5: ファイルフォーマット)
- man pageの構造(NAME、SYNOPSIS、DESCRIPTION等)
日本語のパッケージは以下のコマンドでインストールします1:
sudo apt install manpages-ja manpages-ja-dev
man pageは通常、8つのセクションに分かれています2が、そうでない場合もあります。
man man
で表示できます。次のコマンドでも概要を読めます。man 1 intro man 2 intro man 3 intro man 4 intro man 5 intro man 6 intro man 7 intro man 8 intro
特定のセクションのman pageを参照するには、
man [セクション番号] [コマンド名]
の形式で指定します。入門書
Perplexity AIや他のLLMの知恵を借りて、サーバ管理やプログラミングに役立つ知識を紹介していきます。その他の記事もたまに書きます。
DebianとUbuntuのサーバ管理コマンド
Debian リファレンスにサーバ管理の基本情報が記されています。
以下に説明するシェルコマンドはGNOME 端末(GNOME Terminal)等の端末エミュレータ、或いはコンソールで実行します。
Tabキーで入力補完出来ます。複数のコマンドを区切るのはセミコロンです。
DebianとUbuntuは同じDebian系ディストリビューションであるため、多くのコマンドが共通しています。以下に主要なコマンドを説明します。
root権限
Debianではrootユーザとパスワードが設定されますので、管理者権限の必要なコマンドはrootアカウントに切り替えて実行します:
su -l
Ubuntuではroot権限にはsudoを使用します。sudoに続けてコマンドを入力し、enterを押します。続けてアカウントのパスワードを入力します。sudo実行権限を付与されているアカウントでログインしていることが前提です。カレントディレクトリを移動せずに何度もコマンドを実行したい場合は以下のようにします:
sudo -H -s
OSの停止と再起動
システムの停止
以下の何れかのコマンドを実行します1:
sudo shutdown -h now sudo poweroff
システムの再起動
以下の何れかのコマンドを実行します:
sudo shutdown -r now sudo reboot
サービスの管理
DebianとUbuntuの新しいバージョンでは、systemdを使用してサービスを管理します。「メモリー中の全 サービス unit のリスト」を得るには次のようにします:
systemctl list-units --type=service
サービスの起動:
sudo systemctl start <service-name>
サービスの停止:
sudo systemctl stop <service-name>
サービスの再起動:
sudo systemctl restart <service-name>
サービスの状態確認:
sudo systemctl status <service-name>
古いバージョンのDebian/Ubuntuでは、
service
コマンドも使用できます:sudo service <service-name> start/stop
その他の有用なコマンド
システム情報の表示:
uname -a
ディスク使用量の確認:
df -h
メモリ使用量の確認:
free -h
プロセス一覧の表示:
top
または(要インストール):
htop
これらのコマンドを使用することで、DebianやUbuntuのサーバを効率的に管理することができます。サーバーの運用には適切な権限と注意が必要です。重要な操作を行う前には、必ずバックアップを取ることをお勧めします。
Debian GNU/Linux のインストール情報
Debian のリリースのページから安定版 (stable)のリンクを辿ると、AMD64 移植版等のDebian GNU/Linux インストールガイドを読めます。最近のコンピュータは UEFI を採用していることが多いのですが、その点についても詳しく書かれています。
古いコンピュータで動作するi386用については、将来サポートが終了するとの情報があります。
新装開店
サーバー移設中につき、暫く御不便をかけます。
旧サイトのアカウントは削除しますので、御注文前に新たに登録し直して下さい。