見出し画像

シェルスクリプト①

全部ChatGPTくんに聞いた。


シェルスクリプト

シェルはOSのAPIを介して機能する。
Linux系の場合はシステムコール、ないしPOSIX APIを、
Windowsの場合はWinAPIを内部で利用する。

シェルスクリプトは、UNIXやLinuxのシェルで動作するスクリプト(プログラム)です。これは、一連のコマンドを含むテキストファイルであり、それらのコマンドはシェルによって実行されます。
シェルスクリプトを使用すると複数のコマンドを自動的に実行させることができ、繰り返しの作業を簡単に自動化できます。

基本的な特徴

  1. テキストファイル: シェルスクリプトはプレーンテキスト形式で書かれています。一般的には `.sh` 拡張子を使用します。

  2. コマンドの集合: スクリプトは、シェルが理解できるコマンドのリストです。これにはファイル操作、プログラムの実行、テキスト処理などが含まれます。

  3. 実行権限: スクリプトを実行するには、実行権限をファイルに設定する必要があります。これは `chmod +x scriptname.sh` コマンドで行えます。

  4. シバン(Shebang): スクリプトの最初の行は通常、`#!` で始まり、使用するシェルを指定します。例:`#!/bin/bash` はBashシェルを使用することを意味します。

基本的な構文

  • 変数: `VAR="value"` のように定義し、`$VAR` で使用します。

  • 条件分岐: `if`、`else`、`elif`、`case` などのキーワードを使用します。

  • ループ: `for`、`while`、`until` ループを使用して繰り返し処理を行います。

  • 関数: 再利用可能なコードブロックを定義します。

使用例

シェルスクリプトは、システム管理、バックアップ操作、情報収集など、さまざまなタスクに使用できます。また、より複雑なスクリプトでは、ユーザー入力の処理やエラーハンドリングも行います。

シェルスクリプトは、LinuxやUNIXベースのシステムにおいて非常に強力なツールであり、効率的なシステム管理や自動化に不可欠な要素です。

BashとPowerShell


Bash(Bourne Again SHell)

  • プラットフォーム: UnixおよびLinuxシステムで広く使用されています。macOSでもデフォルトのシェルです。Windows上での使用は、WSL(Windows Subsystem for Linux)やCygwinを通じて可能です。

  • 構文: 伝統的なシェルスクリプトの構文を採用しており、UNIXスクリプトとの互換性が高いです。

  • 機能: ファイル操作、プログラム実行、テキスト処理が得意です。スクリプトは主に条件分岐、ループ、テキスト処理のコマンドを用いて構成されます。

  • ユーザーベース: LinuxやUNIX系OSのユーザーに広く利用されています。

PowerShell

  • プラットフォーム: Windowsで開発されましたが、現在はmacOSやLinux上でも利用可能なクロスプラットフォームツールです(PowerShell Coreとして)。

  • 構文: .NET Frameworkに基づいており、オブジェクト指向のアプローチを採用しています。スクリプトは独自のコマンドレット(小さなコマンドベースのツール)で構成されます。

  • 機能: Windows管理タスク(ファイルシステム、レジストリ操作、WMI(Windows Management Instrumentation)など)に強く、オブジェクト指向のスクリプトが可能です。

  • ユーザーベース: Windowsのシステム管理者やパワーユーザーに特に人気があります。

主な違い

  1. ターゲットシステム: BashはLinux/Unix環境で、PowerShellはWindows環境での使用が主です。

  2. コマンド構文: Bashは伝統的なコマンドライン構文を使用し、PowerShellは.NETオブジェクトに基づいたコマンドレットを使用します。

  3. オブジェクト指向のアプローチ: PowerShellはオブジェクトを操作し、Bashは主にテキストを操作します。

  4. スクリプトの複雑さ: PowerShellはより複雑なスクリプトと自動化タスクをサポートし、Bashは伝統的なシェルスクリプトに適しています。

各ツールはそれぞれの環境とニーズに応じた強力な機能を提供します。適切なツールの選択は、対象とするプラットフォームと具体的なタスクに大きく依存します。

コマンドプロンプトとPowerShell

コマンドプロンプトはインターフェースであって、独自のシェルを実装している。
PowerShellはシェルであって、それが独自のインターフェースをもつ。シェルなので他のインターフェースから利用できる。

コマンドプロンプトとPowerShellは、Windowsオペレーティングシステムで利用される二つの異なるコマンドラインインターフェースであり、それぞれ独自の特徴と機能を持っています。以下で、それぞれの違いを強調しながら説明します。

コマンドプロンプト

  1. 基本的なコマンドラインインターフェース: コマンドプロンプトはWindowsの初期バージョンから存在する、基本的なコマンドライン環境です。

  2. MS-DOSベースのコマンド: コマンドプロンプトのコマンドはMS-DOSスタイルで、`COPY`, `DEL`, `DIR` などのシンプルなコマンドを使用します。

  3. 限定的なスクリプト機能: コマンドプロンプトは基本的なバッチスクリプトをサポートしていますが、スクリプト機能は限定的です。

  4. シンプルな操作: ファイル操作やシステム設定の変更など、基本的なタスクに適しています。

  5. 拡張性の欠如: コマンドプロンプトは拡張性が限られており、複雑なシステム管理タスクや高度なプログラミング機能には向いていません。

PowerShell

  1. 高度なコマンドラインシェルとスクリプト環境: PowerShellはWindowsシステム管理に特化した強力なコマンドラインシェルおよびスクリプト環境です。

  2. オブジェクト指向出力: PowerShellはコマンドの出力をオブジェクトとして扱います。これにより、データの操作と処理がより柔軟かつ強力になります。

  3. 高度なスクリプト機能: PowerShellは.NET Frameworkに基づいており、条件分岐、ループ、エラーハンドリングなどの高度なプログラミング機能をサポートしています。

  4. Windowsシステムとの深い統合: PowerShellはActive Directory、WMI、COMオブジェクトなど、Windowsのコアコンポーネントと深く統合されています。

  5. リモート管理: PowerShellはリモートのWindowsマシンを管理する強力な機能を提供します。

結論

コマンドプロンプトはWindowsの伝統的なコマンドラインインターフェースで、シンプルなタスクに適しています。一方で、PowerShellはより高度な機能を提供し、Windowsの深いレベルでの管理や自動化タスクに適しています。PowerShellはオブジェクト指向のアプローチを取り、より複雑なスクリプトとデータ処理が可能です。そのため、システム管理者やパワーユーザーにとってはPowerShellがより適した選択となるでしょう。

コマンド

コマンドはツールそのものを指す場合がある。
例えばgrep, awk, sedなど。

man

`man` コマンドは、UNIXおよびLinuxシステムにおける「マニュアル」コマンドです。ネイティブなWindows環境などでは使えません。
このコマンドは、システムのコマンド、プログラム、設定ファイル、システムコールなどに関する詳細なドキュメントを表示するために使われます。`man` コマンドの基本的な使い方と仕様を以下に説明します。

基本的な使い方

man [オプション] [セクション] コマンド名

セクション

マニュアルページは、内容に応じて以下のようなセクションに分類されています。

  1. 実行可能プログラムまたはシェルコマンド

  2. システムコール (カーネルが提供する関数)

  3. ライブラリコール (プログラムのライブラリ関数)

  4. 特殊ファイル (通常は `/dev` に位置する)

  5. ファイルフォーマットとプロトコル、例えば `/etc/passwd`

  6. ゲーム

  7. 雑多 (マクロパッケージや規約など)

  8. システム管理コマンド (通常は root によってのみ実行される)

  9. カーネルルーチン [非標準]

オプション

`-k`: キーワードで検索。指定されたキーワードに関連するすべてのマニュアルページを検索します。
`-f`: `whatis` データベースを検索します。短い説明を提供します。

ナビゲーション

`man` コマンドは、通常 `less` または類似のページャを使ってマニュアルページを表示します。
矢印キーでスクロール、`q` キーで終了など、`less` のナビゲーションコマンドを使用できます。

`man man`: `man` コマンド自体のマニュアルページを表示します。
`man -k password`: `password` に関連するマニュアルページを検索します。

これは基本的な概要ですが、`man` コマンドは非常に強力で、システムのドキュメントを参照するための主要な手段の一つです。

cd

`cd` コマンドは、UnixやLinuxシステムのコマンドラインインターフェースで使用される基本的なコマンドの一つです。コマンドプロンプトやPowerShellでも使えます。
`cd` は "Change Directory" の略で、このコマンドはユーザーが現在の作業ディレクトリを変更するために使用されます。

基本的な使い方

cd [ディレクトリ]
  • `[ディレクトリ]` は、移動先のディレクトリパスです。このパスは絶対パスまたは相対パスで指定できます。

  • パスを指定しない場合(単に `cd` と入力する場合)、デフォルトのホームディレクトリ(通常はユーザーのホームディレクトリ)に移動します。

ホームディレクトリに移動:

cd

これはユーザーのホームディレクトリに移動します。

特定のディレクトリに移動:

cd /usr/local

これは /usr/local というディレクトリに移動します。

親ディレクトリに移動:

cd ..

これは一つ上の親ディレクトリに移動します。

直前のディレクトリに戻る:

cd -

これは直前にいたディレクトリに戻ります。

特別なケース

  • `~`(チルダ)は、ユーザーのホームディレクトリを指します。ホームディレクトリを指すパスです。例えば、`cd ~/Documents` は、ユーザーの `Documents` ディレクトリに移動します。

  • `.`(ドット)は現在のディレクトリを指し、`..`(ドット2つ)は親ディレクトリを指します。`cd ./Documents`、`cd ../Documents`

echo

`echo` コマンドは、シェルスクリプトやコマンドラインでよく使われる基本的なコマンドです。その主な目的は、指定された文字列を標準出力(通常は画面)に表示することです。このコマンドはシェルスクリプトでメッセージを表示したり、変数の内容を確認したりする際に非常に便利です。

基本的な使い方

echo [オプション] [文字列]
  • `[文字列]` は出力したいテキストです。

  • `[オプション]` にはさまざまなフラグを指定できますが、よく使われるのは `-n`(新しい行を出力しない)と `-e`(エスケープシーケンスを有効にする)です。

テキストの表示:

echo "Hello, world!"

このコマンドは "Hello, world!" というテキストを表示します。

変数の内容を表示:

greeting="Hello, world!"
echo $greeting

この場合、変数 greeting の内容が表示されます。

エスケープシーケンスの使用:

echo -e "Line 1\nLine 2"

-e オプションを使用すると、\n は新しい行として解釈され、2行のテキストが表示されます。

改行なしで表示:

echo -n "Hello, world!"

-n オプションを使用すると、テキストの後に改行が追加されません。

echo コマンドは、その単純さと汎用性のため、シェルスクリプトやコマンドライン操作において非常に役立つツールです。

`echo` コマンドは様々なシナリオで使われますが、主に以下のような用途があります:

  1. メッセージの表示:
    スクリプトの実行状態をユーザーに知らせるために使われます。例えば、スクリプトの進行状況やエラーメッセージを表示する際に便利です。

  2. 変数の内容の確認:
    スクリプト内で設定された変数の値を確認するために使われます。デバッグ時に特に役立ちます。

  3. ファイルへのテキストの書き込み:
    `echo` で生成した出力をリダイレクト(`>` や `>>` を使って)して、ファイルにテキストを書き込むことができます。

  4. コマンドの出力のフォーマット:
    他のコマンドからの出力をフォーマットするために使われることがあります。例えば、複数のコマンド出力を整形して一つのファイルにまとめる際などです。

  5. 環境変数やシステム情報の表示:
    環境変数やシステム情報を表示するためにも使用されます。例えば、`echo $PATH` はシステムのパス環境変数の内容を表示します。

  6. シェルスクリプトのデバッグ:
    スクリプトのどの部分が実行されているか、または特定のコマンドがどのように実行されているかを示すために、デバッグ情報を表示するために使用されます。

これらの例は `echo` コマンドの多様な使い方を示していますが、シェルスクリプトやコマンドライン操作の中でこのコマンドがどれほど広く使われているかを理解するのに役立ちます。

環境変数 PATHの表示例

UNIX/Linux シェル(例:Bash):

echo $PATH

コマンドプロンプト

echo %PATH%

PowerShell:

echo $Env:PATH


cat

`cat` コマンドは Unix や Linux のシェルスクリプト、コマンドラインで使用される非常に一般的なツールです。このコマンドの主な用途は、テキストファイルの内容を連結(concatenate)して標準出力(通常は画面)に表示することです。ただし、`cat` コマンドの使用法はこれだけに限られません。以下に、`cat` コマンドの基本的な使い方と応用例をいくつか紹介します。

基本的な使い方

cat [オプション] [ファイル...]
  • `[ファイル...]` は、一つ以上のファイル名を指定します。

  • `[オプション]` は、コマンドの動作を変更するために使われます(後述)。

単一ファイルの内容表示:

cat file.txt

このコマンドは file.txt の内容を画面に表示します。

複数ファイルの内容を連結して表示:

cat file1.txt file2.txt

このコマンドは file1.txtfile2.txt の内容を連結して表示します。

ファイルの終わりに新しいテキストを追加:

cat >> file.txt

このコマンドは新しいテキストを入力し、Ctrl+D(EOF)を押すと、そのテキストが file.txt の終わりに追加されます。

よく使われるオプション

  • `-n` : すべての出力行に行番号を追加します。

  • `-b` : 空でない行に行番号を追加します。

  • `-s` : 連続する空行を一つの空行に圧縮します。

  • `-E` : 行の終わりに `$` 記号を表示します。

応用

`cat` コマンドは、他のコマンドと組み合わせて使うことで、さらに強力なツールになります。例えば、`grep` コマンドで特定のパターンを含む行を検索したり、`sort` コマンドで内容を並べ替えたりする場合に使用します。

`cat` コマンドはそのシンプルさと柔軟性から、テキストファイルを扱う際の基本的なツールとして広く使われています。

PowerShell では Get-Content コマンドが cat と同様の機能を提供します。コマンドプロンプトでは type コマンドがファイルの内容を表示する機能を提供します。

grep

これ自体ツール。

`grep` コマンドは、UnixやLinuxシステムで使用される強力なテキスト検索ツールです。このコマンドは、ファイル内のテキスト行を検索し、特定のパターンや文字列に一致する行を表示します。`grep` は "Global Regular Expression Print" の略で、正規表現を使った検索が可能です。

基本的な使い方

grep [オプション] '検索パターン' [ファイル...]
  • `'検索パターン'` は、検索したいテキストや正規表現です。

  • `[ファイル...]` は、検索を行う一つ以上のファイルを指定します。

  • `[オプション]` にはさまざまなフラグを指定でき、検索の振る舞いを変更できます。

単一ファイル内でのテキスト検索:

grep 'pattern' file.txt

このコマンドは file.txt 内で 'pattern' という文字列を検索し、一致するすべての行を表示します。

複数ファイルでの検索:

grep 'pattern' file1.txt file2.txt

このコマンドは file1.txtfile2.txt の両方で 'pattern' を検索します。

正規表現を使用した検索:

grep '^pattern' file.txt

この例では、行の始まりに 'pattern' がある行だけを file.txt から検索します。

よく使われるオプション

  • `-i` : 大文字と小文字を区別しない検索(case-insensitive)。

  • `-v` : 指定したパターンに一致しない行を表示。

  • `-c` : 一致する行の数を表示。

  • `-n` : 一致する行の行番号を表示。

  • `-r` or `-R` : ディレクトリ内のすべてのファイルを再帰的に検索。

  • `-l` : 一致する行を含むファイル名のみを表示。

`grep` コマンドは、ログファイルの分析、コード内の特定のテキストの検索、ファイル内のパターンマッチングなど、多様なシナリオで非常に有用です。また、他のコマンドと組み合わせて使用することで、より複雑なテキスト処理が可能になります。

PowerShell では Select-String コマンドが grep の機能を提供します。
コマンドプロンプトには grep に完全に対応するコマンドはありませんが、find または findstr コマンドが似たような機能を提供します。

ls

`ls` コマンドは、UnixやLinuxベースのシステムで使用される非常に一般的なコマンドです。このコマンドの目的は、指定されたディレクトリの内容(ファイルやサブディレクトリ)を一覧表示することです。

基本的な使い方

ls [オプション] [ディレクトリ]
  • `[ディレクトリ]` は、一覧表示したいディレクトリを指定します。何も指定しない場合は、現在のディレクトリが使用されます。

  • `[オプション]` は、表示形式や表示される情報を変更するために使われます。

現在のディレクトリの内容を表示:

ls

これは現在のディレクトリにあるファイルとサブディレクトリの一覧を表示します。

特定のディレクトリの内容を表示:

ls /usr/local

これは /usr/local ディレクトリ内の内容を表示します。

よく使われるオプション

  • `-l` : 詳細形式で表示します(ファイルの権限、所有者、サイズなど)。

  • `-a` : 隠しファイルを含むすべてのファイルを表示します。

  • `-h` : ファイルサイズを人間が読みやすい形式(KB、MBなど)で表示します(`-l` と一緒に使うことが多い)。

  • `-t` : ファイルを変更時間順に表示します。

  • `-r` : 逆順で表示します(アルファベット順や時間順など)。

  • `-R` : ディレクトリとそのサブディレクトリの内容を再帰的に表示します。

`ls` コマンドはファイルシステムのナビゲーションにおいて基本的であり、さまざまなオプションを通じて多様な情報を提供します。ディレクトリの内容を素早く確認するために頻繁に使用されます。

ls系

LinuxやUnix系のオペレーティングシステムには、"ls"を冠するいくつかのコマンドがあります。これらは様々な目的でファイルシステムやデバイス情報を確認するために使用されます。以下にいくつかの主要なコマンドを列挙します。

  1. `ls`: ディレクトリ内のファイルとサブディレクトリを表示します。

  2. `lsb_release`: インストールされているLinuxディストリビューションの情報を表示します。

  3. `lsblk`: ブロックデバイス(ハードディスク、フラッシュドライブなど)の情報を表示します。

  4. `lscpu`: CPUのアーキテクチャに関する情報を表示します。

  5. `lsmod`: カーネルにロードされているモジュール(ドライバなど)の一覧を表示します。

  6. `lsof`: オープンされているファイルの一覧を表示します。これはプロセスが使用しているファイルリソースを確認するのに役立ちます。

  7. `lsusb`: システムに接続されているUSBデバイスを表示します。

  8. `lspci`: PCIバスを通じて接続されているデバイスを表示します。

  9. `lslogins`: システム上のユーザーログインの情報を表示します。

PowerShell では Get-ChildItem コマンドが ls に似た機能を提供します。実際には、lsGet-ChildItem のエイリアスとして機能します。
コマンドプロンプトでは dir コマンドがディレクトリの内容をリストアップする機能を提供します。

cp, mv, rm

`cp`、`mv`、`rm` は Unix や Linux ベースのシステムで使われる基本的なコマンドです。これらはファイルやディレクトリの操作に関連しており、それぞれコピー、移動(または名前の変更)、削除の機能を提供します。

cp(Copy)

`cp` コマンドは、ファイルやディレクトリをコピーするために使われます。

基本的な使い方

cp [オプション] ソース デスティネーション
  • `ソース` はコピー元のファイルやディレクトリです。

  • `デスティネーション` はコピー先のパスです。

  • 単一のファイルをコピーする: `cp source.txt destination.txt`

  • ディレクトリを再帰的にコピーする: `cp -r source_directory destination_directory`

mv(Move)

`mv` コマンドは、ファイルやディレクトリを移動するか、名前を変更するために使われます。

基本的な使い方

mv [オプション] ソース デスティネーション
  • `ソース` は移動または名前を変更するファイルやディレクトリです。

  • `デスティネーション` は移動先のパスまたは新しい名前です。

  • ファイルを移動する: `mv source.txt destination_folder/`

  • ファイルの名前を変更する: `mv oldname.txt newname.txt`

rm(Remove)

`rm` コマンドは、ファイルやディレクトリを削除するために使われます。

基本的な使い方

rm [オプション] ファイル...
  • `ファイル...` は削除する一つ以上のファイルやディレクトリです。

  • 単一のファイルを削除する: `rm file.txt`

  • ディレクトリとその中身を削除する: `rm -r directory`

注意点

これらのコマンドは非常に強力です。特に `rm` コマンドは、一度削除したファイルを復元するのが非常に困難(または不可能)なため、使用する際には細心の注意が必要です。データを失うリスクを避けるために、特に `rm` コマンドを使用する際には、実行するコマンドを慎重に確認してください。

awk, sed

コレ自体ツール。
特にawk(オーク)はそれ自体コマンドであり、ツールであり、プログラミング言語である。

`awk` と `sed` は Unix や Linux で使用される強力なテキスト処理コマンドです。ツールです。これらはファイルやストリームのテキストを操作し、データの抽出、変換、レポート作成などに使用されます。

awk

オーク。

awk は特定の略語ではなく、このプログラムを作成した3人の開発者の姓の頭文字をとったものです。それは、Alfred Aho、Peter Weinberger、Brian Kernighan の各氏です。彼らはこのプログラミング言語とコマンドラインユーティリティを開発し、Unix システム上でテキストファイルの処理を行うための強力なツールを提供しました。

`awk` はテキストファイル内のパターンを探索し、そのパターンに基づいてデータを処理するための言語とプログラムです。これは特に、カラムベースのテキストデータ(例:CSVファイル)に対して有効です。

基本的な使い方

awk '条件 { 動作 }' ファイル
  • `条件` は処理対象のレコードを選択するために使用されます。

  • `{ 動作 }` は選択されたレコードに対して実行するコマンドです。

  • `ファイル` は処理するテキストファイルです。

  • ファイルの第一カラムを表示する: `awk '{print $1}' file.txt`

  • 条件に一致する行を表示する: `awk '$1 == "条件" {print}' file.txt`

sed

`sed`(stream editorの略)はテキストストリームを編集するためのコマンドです。主にファイル内のテキストを検索、置換、削除するために使われます。

基本的な使い方

sed 'スクリプト' ファイル
  • `スクリプト` は実行する編集コマンドです。

  • `ファイル` は処理するテキストファイルです。

  • テキストを置換する: `sed 's/検索文字列/置換文字列/g' file.txt`

  • 行を削除する: `sed '行番号d' file.txt`

用途と注意点

  • `awk` はテキストデータの分析や処理、特定のフィールドや条件に基づいたテキストの抽出に適しています。

  • `sed` は簡単なテキスト置換や行の削除など、特定のパターンに基づくテキストの編集に使用されます。

これらのコマンドは非常に強力で柔軟性がありますが、複雑な操作を行うことも可能なため、使用する際はコマンドの動作を正しく理解し、慎重に操作することが重要です。特に `sed` での置換操作は、ファイルの内容を永続的に変更することがあるため、注意が必要です。

ログ系

LinuxやUnix系のオペレーティングシステムでは、トラブルシューティングやシステム監視に役立つ多くのメッセージやログを取得するコマンドが存在します。これらのコマンドはシステムの動作や問題を診断するのに重要です。以下に主要なものを列挙します。

  1. `tail`: ファイルの最後の部分を表示します。通常、ログファイルの最新のエントリをリアルタイムで監視するのに使われます(例: `tail -f /var/log/syslog`)。

  2. `grep`: テキストファイルや出力から特定のパターンや文字列を検索します。ログファイル内の特定のエラーメッセージを探すのに便利です。

  3. `journalctl`: systemdを使用するシステムでは、システムログとアプリケーションのログを管理・表示するために使われます。

  4. `top`: リアルタイムでシステムのプロセスとリソース使用状況を表示します。高リソース使用を引き起こしているプロセスを特定するのに役立ちます。

  5. `htop`: `top` コマンドの強化版で、より使いやすいインターフェースでプロセス管理を行います。

  6. `netstat`: ネットワーク接続、ルーティングテーブル、インターフェース統計などのネットワーク情報を表示します。

  7. `ss`: `netstat` の代替として使われるコマンドで、ソケット統計を表示します。

  8. `ps`: 現在実行中のプロセスを表示します。特定のプロセスがシステムリソースを消費しているかを調べるのに使われます。

  9. `iostat`: CPU統計と入出力統計を表示し、システムのパフォーマンス問題を診断するのに役立ちます。

  10. `vmstat`: システムの仮想メモリ統計、プロセス、CPUアクティビティなどを表示します。

  11. dmesg: カーネルのリングバッファからメッセージを表示します。これはシステム起動時のメッセージやハードウェア関連の問題のトラブルシューティングに使用されます。

  12. logger: コマンドラインからシステムログにメッセージを記録します。


ps

"Process Status"実行中のプロセスを表示します。

`ps` コマンドは、UnixやLinuxシステムで実行中のプロセスを表示するためのツールです。このコマンドは、プロセスID(PID)、ユーザー名、CPU使用量、メモリ使用量、プロセスの実行状態、プロセスが開始された時刻、プロセスが実行しているコマンドなど、実行中のプロセスに関する多くの情報を提供します。

基本的な使い方

`ps` コマンドの基本的な使い方は以下の通りです:

ps [オプション]

オプション

`ps` コマンドには多くのオプションがあり、それぞれ異なる種類の情報を表示します。

  • `ps aux`: システム上のすべてのユーザーのすべてのプロセスを表示します。各プロセスについて、ユーザー名、CPU使用率、メモリ使用率、仮想メモリサイズ、実際のメモリサイズ、TTY(端末)、プロセスの状態、開始時刻、実行コマンドなどが表示されます。

  • `ps -ef`: より詳細な形式で、すべてのプロセスを表示します。これには、プロセスID、親プロセスID、開始時刻、TTY、実行コマンドなどが含まれます。

  • `ps -u ユーザー名`: 特定のユーザーに関連するプロセスの詳細を表示します。

プロセスの状態

`ps` コマンドの出力には、プロセスの「状態」も含まれています。いくつかの一般的な状態は以下の通りです:

  • R (Running): プロセスが実行中、または実行可能な状態です。

  • S (Sleeping): プロセスがスリープ状態にあり、割り込みを待っています。

  • T (Stopped): プロセスが一時停止されています。

  • Z (Zombie): プロセスが終了したが、親プロセスによってまだ回収されていない状態です。

使用例

例えば、特定のプロセス名を含むプロセスを探す場合、`ps aux` と `grep` コマンドを組み合わせることができます:

ps aux | grep 'process-name'

このコマンドは、'process-name' を含むすべてのプロセスの情報を表示します。

`ps` コマンドは、システム上で何が起きているかを理解するための重要なツールです。プロセスの監視、問題のトラブルシューティング、システムのパフォーマンスの評価などに使用されます。

top

`top` コマンドは Unix や Linux システムにおいて、リアルタイムで実行中のプロセスとシステムのリソース使用状況を表示するために使用されるツールです。このコマンドは、システムのパフォーマンス監視、プロセス管理、トラブルシューティングに非常に有用です。

基本的な特徴と機能

  • リアルタイム更新: `top` は数秒ごとに画面を更新し、最新のプロセス情報とシステム状態を表示します。

  • 多様な情報: CPU使用率、メモリ使用量、スワップ使用量、システムアップタイム、実行中のプロセスの数などを表示します。

  • プロセス情報: 各プロセスについて、プロセスID、ユーザー、優先度、メモリ使用量、CPU使用量、実行中のコマンドなどの詳細を表示します。

  • インタラクティブ操作: ユーザーは `top` コマンドを実行中にキーボード入力を行うことで、表示をカスタマイズしたり、特定のプロセスを操作したりできます。

基本的な使い方

top

このコマンドを実行すると、システムの現在の状態が表示されます。出力は上部にシステムの統計情報、下部に実行中のプロセスのリストを示します。

よく使われるキー操作

`top` 実行中に以下のキーを使ってインタラクティブに操作できます:

  • h: ヘルプ画面を表示します。

  • k: 特定のプロセスを終了させるためにプロセスIDを入力します(killの意味)。

  • u: 特定のユーザーのプロセスのみを表示するためにユーザー名を入力します。

  • P: CPU使用率でプロセスをソートします。

  • M: メモリ使用量でプロセスをソートします。

  • q: `top` コマンドを終了します。

`top` コマンドは、システムの現在の負荷とパフォーマンスをすばやく把握するのに非常に有用で、システム管理者や開発者にとって欠かせないツールの一つです。

UnixやLinuxシステムには、多くの代表的なコマンドがあります。これらのコマンドはシステム管理、ファイル操作、ネットワーク管理、プログラミング、データ処理など、様々な用途に使用されます。以下に、よく使われるいくつかのコマンドを紹介します。

システム情報と管理

  1. df - ファイルシステムのディスク使用状況を表示します。

  2. du - ディレクトリとファイルのディスク使用量を表示します。

  3. free - メモリ使用量を表示します。

  4. kill - プロセスにシグナルを送信して制御します。

  5. uptime - システムがどのくらいの時間稼働しているかを表示します。

ファイル操作

  1. touch - ファイルのタイムスタンプを更新するか、新しい空のファイルを作成します。

  2. find - ファイルやディレクトリを検索します。

  3. tar - ファイルをアーカイブ化し、オプションで圧縮もできます。

  4. chmod - ファイルのアクセス権を変更します。

  5. chown - ファイルの所有者やグループを変更します。

ネットワークと通信

  1. ping - ネットワークホストへの接続をテストします。

  2. ifconfig - ネットワークインターフェースの設定を表示・変更します。

  3. ssh - セキュアなリモートログインやファイル転送を行います。

  4. scp - リモートホスト間でファイルを安全にコピーします。

  5. wget - ネットワーク経由でファイルをダウンロードします。

プログラミングとスクリプト

  1. git - バージョン管理システム。

  2. make - ファイルのビルド管理ツール。

  3. gcc - C言語のコンパイラ。

  4. python - Pythonプログラムを実行します。

  5. perl - Perlスクリプトを実行します。

これらのコマンドは、基本的なシステム管理、データ処理、ネットワーク操作など、日常的な作業やシステム管理のタスクに広く使われています。それぞれのコマンドは特定の機能を持ち、組み合わせることで強力なワークフローを構築できます。

この記事が気に入ったらサポートをしてみませんか?