初学者の私が今回勉強したLinuxの基本コマンドを初学者なりに説明してみました。
量が多いのでさっそく行きます!
今回説明するコマンド
コマンド説明のために必要で解説した用語
- パスについて(絶対パス / 相対パス)
- オプション
- テキストファイル / バイナリファイル
- ハードリンク / シンボリックリンク
- 標準入力 / 標準出力 / 標準エラー出力 / リダイレクト
- パイプライン
- パーミッション
- スーパーユーザー
- プロセス / ジョブ
- バックグラウンド / フォアグラウンド
まずはコマンド前に事前情報を少々。
コマンドの前にパスについて
パス(Path)はwebでいうURLみたいなものでディレクトリやファイルの住所のようなもの
/を階層の区切りに使い表現
例
Practice.rbファイルを表現したかったら、
/home/jun/ruby/practice.rb
↑ ルートディレクトリのhomeディレクトリのjunディレクトリのrubyディレクトリのPractice.rb
という風に書く、これがパス
パスには2種類の表記方法がある
カレントディレクトリがrubyの場合
先ほどの/home/jun/ruby/practice.rbにおいて、junがカレントディレクトリの時、
絶対パス
/home/jun/ruby/practice.rb
絶対パスはカレントディレクトリがどこであろうが絶対パスで書けば指定できる→絶対に間違えたくない時に使用
相対パスは今いるカレントディレクトリからの表記なので少ない入力で済む、ただし今いるカレントディレクトリ以外からは表記が変わるので、気軽に使いたい時に使用
ちなみに相対パスにおいて、特別なディレクトリ表記がある
「.」はカレントディレクトリを表し、
「..」は親ディレクトリを表す
では、ここから各コマンドの説明に入ります(合間で新用語の解説もはさみます)
cdコマンド
cd = change directoryの意味
ディレクトリを移動するコマンド
書式
cd [オプション] ディレクトリ
[ ]内は任意
※オプションに関してはcdにはあまり使われないので、よくオプションが使われるlsコマンド編にて後述しています。
カレントディレクトリ、親ディレクトリ(今いるディレクトリの一個上)、ホームディレクトリの特別な指定方法
ディレクトリ | 意味 | 指定方法 |
---|---|---|
カレントディレクトリ | 現在(Currentの意)自分がいるディレクトリ | 「.」 |
親ディレクトリ | カレントディレクトリの1段上階層のディレクトリ | 「..」 |
ホームディレクトリ | 「/home/ユーザー名」ディレクトリ | 「~」 |
ルートディレクトリ | 「/」ディレクトリ | 「/」 |
※ちなみに、「~」はチルダと読む
「~」 = 「/home/ユーザー名」と同じ意味
pwdコマンド
pwd = print name of working directory
カレントディレクトリを表示するコマンド
書式
pwd [オプション]
※ただし、pwdでオプションはほとんど使用しない
例
$ pwd
/home/jun/programming
↑ カレントディレクトリはprogramming、親ディレクトリがjun、その親がhome
lsコマンド
ls = list
ファイルやディレクトリの一覧を表示するコマンド
書式
ls [オプション] [ディレクトリまたはファイル名]
便利なパス名展開
パス名展開を使うと複数のファイルを一度に指定できる
| 記号 | 意味 |
| -- | -- |
| * | 任意の文字列 |
| ? | 任意の一文字 |
オプションとは
ハイフンになにかの記号をつける形の引数をオプションと呼ぶ。
コマンドにオプションを与えることで、コマンドの動作を変えることが出来る。
書き方
- コマンドの後ろにスペース区切りで指定する
- $ ls -a
- 2つ以上指定できる
- $ ls -a -l ←これを短縮表記が下の
- $ ls -al
- オプションとコマンドの引数を同時に指定できる
- $ ls -al /
- オプションが引数を取ることもある
- $ ls -w 10
- 「--」で始まるロングオプションもある
- $ ls --version
lsコマンドでよく使うオプション3選
-l ファイルの詳細情報を表示する
-a 隠しファイルも含めた全てのファイルを表示する
※.から始まるファイルは隠しファイルとみなして通常は表示されないようになってる
-F ファイル種別を表示する
※ファイル名の末尾についてる記号の意味
記号 | 意味 |
---|---|
/ | ディレクトリ |
@ | シンボリックリンク |
* | 実行可能ファイル |
記号なし | 通常ファイル |
書き方
$ ls
$ ls -a
$ ls -l
オプションの組み合わせ
$ ls -al
引数に/があるので/ = ルートディレクトリのファイル種別を表示する
$ ls -F /
mkdirコマンド
mkdir = make directory
ディレクトリを作成するコマンド
書式
mkdir [オプション] ディレクトリまたはファイル名
[]内は任意
rubyという名前のディレクトリを作成する
$ mkdir ruby
※ディレクトリ名は日本語だと文字化けしたりする恐れがあるので英語で作成するのが吉。基本英語で作ろう。
オプション
-p 深いディレクトリを一度に作成する
$ mkdir -p test/2023/09
↑-pがないと、mkdirでtestを作成し、2023も作成し、09も作成しなければならない
-pがあるので一度で作れる
rmdirコマンド
rmdir = remove directory
空のディレクトリを削除するコマンド
※隠しファイル・フォルダ含め、何かが入ってたらエラーを返して消せない、つまり中にファイルがあるのに誤って削除してしまうというミスを事前に防げる。中身があるフォルダの削除は別のコマンドで実行できる(後ほど登場)
書式
rmdir ディレクトリ名
具体例 $ rmdir code
catコマンド
cat = concatenate
ファイルの中身を表示するコマンド
書式
cat [オプション] ファイル名
※ファイルの中身を確認出来るコマンドは数種類あるが、その中でも代表的でよく使われるのがcatコマンド
複数のファイルをまとめて表示する事もできる
$ cat [パス1] [パス2]
パスとパスの間にスペース区切りで表記すると、パス1のファイル内容、パス2のファイル内容の順に上から結合しまとめて1つに表示してくれる
concatenateの意味は結合する、という意味なので結合表示してくれるからcatコマンドの由来がconcatenate
オプション
-n 行番号を表示するオプション
lessコマンド
less = そのままless, moreコマンドの逆バージョン
ファイルの中身をスクロール表示コマンド
書式
less [オプション] ファイル名
※オプションはほとんど使わない
長いファイルの中身を見たい時に使うコマンド
専用ビューモードになってスクロール表示出来るのでcatコマンドより長いファイルは見やすい(catもスクロール出来るがターミナル上に全部表示されてしまう)
専用ビューモード時の操作方法(最近勉強したvimとほぼ一緒で良かったー)
コマンド | 内容 |
---|---|
スペースキー, f | 1画面分下にスクロール |
b | 1画面分上にスクロール |
j | 1行下にスクロール |
k | 1行上にスクロール |
q | lessコマンドを終了 |
/{文字列} | 下方向に向かって文字列を検索 |
?{文字列} | 上方向に向かって文字列を検索 |
n | 次の検索結果に移動 |
N | 前の検索結果に移動 |
テキストファイルとバイナリファイル
catやlessでファイルを覗いたが、そのファイルは大きく2つに分けられる。
テキストファイル
テキストファイルとは、文字列が書かれたファイルのこと
言い換えると、文字コードで定められた文字だけが並んで格納されているファイル、の事。
文字コードの例;A = 1000001, B = 1000010, など
※Linuxでは、OSに関わるほとんどの設定情報はテキストファイルとして管理しているため、とても大事。
バイナリファイル
バイナリファイルとは、画像ファイルや音声ファイル、実行ファイルなどのこと
言い換えると、文字コード以外の数値も含むようなファイル
catコマンドなどで文字化けするのは無理やりテキストファイルとして解釈しようとしてしまい、意味不明な文字列になってしまっている。
tailコマンド
tail = tail
ファイル内の最後の10行(デフォルトで10行)を表示する
書式
$ tail sample.txt
オプション
-n {数字} 最後の数字行を表示
$ tail -n 5 sample.txt
sample.txtの最後の5行を表示
-n +{数字} 先頭から数字行目以降(数字行目から最後まで)表示
$ tail -n +8 sample.txt
sample.txtの、先頭から 8 行目以降 (8行目から最後まで) 表示
touchコマンド
touch = 由来なし
空のファイルを作成するコマンド
書式
touch {新規ファイル名1} {新規ファイル名2} ...
一つでも複数でも可能。
本来touchコマンドは存在するファイルのタイムスタンプを更新するコマンド、ただしファイルが存在しない場合は新しくファイルを作成するという挙動をする。
存在するファイルの場合は上書きするわけではなく単純にそのファイルのタイムスタンプを更新するだけなので間違って空のファイルを上書きしてしまうようなミスが起きないのが使いやすいポイント
rmコマンド
rm = remove
ファイル・ディレクトリを削除するコマンド
書式
rm {ファイル名1} {ファイル名2} ...
一つでも複数でも可能。
注意:rmコマンドはWindowsなどのようにゴミ箱機能がないため削除したら二度と戻せない、削除する際は慎重に、本当に消してもいいのか判断した上で行うように。
オプション
-r ディレクトリも合わせて削除する
$ rm -r dir
-f ファイルを削除する際に警告文を表示しない
$ rm -f file
例えば大量のファイルを一度に削除する際、一個一個警告文が出てきては進まないのでそういう際に使用する。
-rと重ねて「-rf」という風に使う事もある(複数のフォルダを一斉削除する際)
-i ファイルの削除前に確認する
$ rm -i file
mvコマンド
mv = move
ファイルの移動、ファイル名を変更するコマンド
書式
mv [オプション] 移動元 移動先
・移動先がファイル名の場合
移動元のファイルを移動先のファイル名に移動(移動先の名前になる)=ファイル名変更という流れ
つまり見た目上はファイル名が変更されているがロジックとしてはファイルを移動させてるのと同義。
・移動先がディレクトリの場合
移動元のファイルを移動先のディレクトリに移動、これだけ
オプション
-i 上書きする前に確認する
$ mv -i file file1
移動先のfile1の中身がある場合、内容がfileの中身の内容に上書きされてしまう為、それを気をつけたい時に使うオプション
cpコマンド
cp = copy
ファイル・ディレクトリをコピーするコマンド
書式
cp [オプション] コピー元 コピー先
$ cp file new_file
new_fileファイルにfileファイルをコピー
$ cp file dir/
dirディレクトリ内部にfileファイルをコピー
注意;コピー先に同名前がすでにある場合上書きになるので危険
オプション
-i 上書きする前に確認する
$ cp -i file new_file
-r ディレクトリをコピーする
$ cp -r dir new_dir
lnコマンド
次はlnコマンドだが、事前情報としてLinuxにおいてリンクを貼るとは何かを説明しておく。
ハードリンクとシンボリックリンク
lnコマンドの前に事前情報としてLinuxにおいてリンクを貼るとは何かを説明
Linuxではファイルに別名をつけることができる、これをリンクを貼るという。これはWindowsで言えばショートカットのようなもの。
リンクには2種類ある
ハードリンク
- 1つのファイルの実態に複数の名前を付ける機能
- 元のファイルを削除しても消えない
- すべてのハードリンクが無くなった時に削除される
シンボリックリンク
- リンク先のパス名が書かれた特殊ファイル。リンク先がファイルの実体
- シンボリックリンクを残したままファイルの実体を削除したり、ファイルを移動するとファイルを参照できなくなる
このリンクを貼る、という事をするのがlnコマンドである
改めて、
lnコマンド
ln = link
書式
ln [オプション] リンク元ファイル名 リンク名
具体例 $ ln file1 file2
この場合、オプションを何も付けないとハードリンクになる
オプション
-s シンボリックリンクを貼る
$ ln -s file1 file3
この2つのリンク、実際どう使うのか
- 長いパス名を省略したい時
- 複数バージョンを共存させ最新を区別したい時
※ハードリンクとシンボリックリンクでは、シンボリックリンクのが使う機会が多いようだ。
なぜならハードリンクには制約があるから
- 異なるディスクを跨いで作成できない
- ディレクトリに対して使えない
シンボリックリンクは上記のような制約は受けない。
そのため、シンボリックリンクのが使う機会が多い
findコマンド
find = find
ファイルやディレクトリを探す為のコマンド
書式
find {検索開始ディレクトリ} {検索条件} {アクション}
具体例 $ find . -name READNE.md -print
書式に合うようにわかりやすく書くと、
$ find {.} {-name README.md} {-print}
となる
検索条件について
-name ファイル名を指定してファイルを検索。ファイル名の大文字小文字は区別する
また、*や?が使え、それらを使って指定する際は検索する名前を'もしくは"で囲う事が必要
-iname ファイル名を指定してファイルを検索。ファイル名の大文字小文字は区別しない
-type ファイルの種類で検索
例
- $ find . -type f -print
- -type fは通常ファイル
- $ find . -type l -print
- -type lはシンボリックリンク
- $ find . -type d -print
- -type dはディレクトリ
-a 複数の検索条件を指定。なお、-aは省略可能
例
$ find . -type d -a -name images -print
タイプはディレクトリ、& 名前はイメージ
つまり-a = & のような連想
標準入出力
Linuxにおける入出力を理解すると、複数のコマンドを組み合わせ連携できるようなる
入力と標準入力(stdin)
キーボードやファイルからコマンドなどのデータを受け渡す事が出来る(=入力が出来る)
また、入力元と出力先は標準で決まっており、入力元の標準はキーボードですので、キーボードを標準入力(stdin)という。特に指定しなければ標準入力を使い、それ以外を使いたい場合はこちらで指定することで変更することが出来る(方法は後述)
出力と標準出力(stdout)
入力されたコマンドなどは実行され、その結果をディスプレイやファイルに出力する。出力の方の標準はディスプレイでこれが標準出力(stdout)になる。入力と同様に出力先を指定することが可能(同じく方法は後述)
標準エラー出力(stderr)
出力と同様にエラー出力というものを別で指定できる。
なにかエラーが出た際にディスプレイに表示してしまうとサービスを利用している人に不安を与える為見せたくないなど、そういう状況が多々あるのでよくエラーに限ってはlogファイルに出力するように出力先を変更している場合がほとんど。ちなみに標準エラー出力(stderr)は標準出力と同じくディスプレイなので指定しないとエラーメッセージも同様にディスプレイに出力される。
入出力はキーボードやファイルだけじゃなく柔軟に対応できる。
なので、コマンドの結果の出力を別のコマンドへの入力にしたり出来る
例
lsコマンドの結果をlessコマンドに出力(lessコマンドに入力)出来るため、スクロール表示でlsコマンドの結果を見ることが出来る。
リダイレクト
リダイレクトとは、入出力先を変更する機能
入力のリダイレクト
・キーボードの代わりにファイルから入力する機能
例
/etc/hostsファイルを入力元にしてcatコマンドを実行
$ cat < /etc/hosts
出力のリダイレクト
・コマンドの実行結果を画面に表示するのではなくファイルに保存する機能
例
lsコマンドの出力先をls.txtにして保存
$ ls > output.txt
※両方とも大なりと小なりが矢印のようで、結果が矢印の方向に出力されるようなイメージ
エラー出力のリダイレクト
出力とエラー出力は別、エラー出力は「2>」を使う
標準入出力の数値
・標準入出力などをOSが識別するために用いる識別子
入出力 | 数値 |
---|---|
標準入力 | 0 |
標準出力 | 1 |
標準エラー出力 | 2 |
そのため、エラー出力では「2>」を使う
エラー出力のリダイレクト
・エラー結果を画面に表示するのではなくファイルに保存する機能
例
$ ls /hoge 2> error.txt
ls /hogeのエラーだけをerror.txtに出力する
出力とエラー出力をまとめる
・まとめる場合は出力をリダイレクトした後に「2>&1」と書く。2>(エラー出力)を出力(1)とまとめる(&)、といったイメージ
例
ls /hoge > output.txt 2>&1
これで出力をしたあとにエラー出力出来る
リダイレクトで追記する
- 「>」でリダイレクト指定するとファイルを上書きする
- 「>>」でリダイレクト指定するとファイルに追記する
例
$ echo Hello! >> output.txt
パイプライン
複数のコマンドを連携させる機能。コマンドの標準出力を別のコマンドの標準入力につなげる
書式
コマンド | コマンド
具体例
$ ls /bin | less
$ ls /bin | grep systemd |less
このようにパイプラインを複数使えるので2個以上のコマンドも組み合わせ可能。
パーミッション
ファイルのオーナーとグループ
ファイルには全てオーナー(所有者)とグループ(所有グループ)が設定されていて、権限管理されている
- 前提:Linuxではユーザーごとにアカウントを発行する
- オーナー:ファイルの所有者
- グループ:ファイルの所有グループ。ユーザーをグループに所属させ、グループに権限を与えることで複数ユーザーの権限を一括管理できるようにする
確認方法
ls -l コマンドでファイルのオーナーとグループが確認できる
例
$ ls -l /bin/less
-rwxr-xr-x. 1 root root 158240 9月 20 2023 /bin/less
↑ 1つ目のrootが所有者、2つ目のrootが所有グループ
パーミッション
ファイルやディレクトリを「誰がどのように操作できるか」を定めたのがパーミッション
確認方法
ls -l コマンドでファイルやディレクトリのパーミッションが確認できる
例
$ ls -l /bin/less
-rwxr-xr-x. 1 root root 158240 9月 20 2023 /bin/less
一番左の文字列「-rwxr-xr-x」で確認できる。それぞれに意味があるので分けると、
「-」 → ファイルタイプ
「rwx」 → オーナーのパーミッション
「r-x」 → グループのパーミッション
「r-x」 → その他のユーザーのパーミッション
それぞれのパーミッションに書いてある記号の意味
パーミッションの記号
記号 | 内容 |
---|---|
r | read(読み取り) |
w | write(書き込み) |
x | execute(実行) |
上の例の「rwxr-xr-x」だと、
オーナーはrwx、3つ全て記載されているので読み取り・書き込み・実行のすべてが可能
グループに属するユーザーはr-x、w(書き込み)だけ「-」になっている=w(書き込み)の権限がない、という意味
その他のユーザーも同じくr-xなので、グループユーザー同様w(書き込み)の権限がない
まとめ
対象 | 読み取り | 書き込み | 実行 |
---|---|---|---|
オーナー | ◯ | ◯ | ◯ |
グループに属するユーザー | ◯ | ✕ | ◯ |
その他のユーザー | ◯ | ✕ | ◯ |
書き換えると、
対象 | 読み取り | 書き込み | 実行 |
---|---|---|---|
オーナー | r | w | x |
グループに属するユーザー | r | - | x |
その他のユーザー | r | - | x |
↓
「rwx」
「r-x」
「r-x」
↓
「rwxr-xr-x」
ファイルモードを変更しよう
chmodコマンド
chmod = change mode
書式
chmod [ugoa] [+-=] [rwx] ファイル名
※ugoa, +-=, rwxはそれぞれどれか一文字
記号の意味①
記号 | 内容 |
---|---|
u | 所有者の権限 |
g | グループの権限 |
o | その他のユーザーの権限 |
a | 全ユーザーの権限 |
記号の意味②
記号 | 内容 |
---|---|
+ | 権限を追加 |
- | 権限を削除 |
= | 記述した権限にする |
例
$ chmod u+r file
chmodコマンドは数値でも指定できる
書式
chmod [8進数の数値] ファイル名
パーミッション | 数値 |
---|---|
r (読み取り) | 4 |
w (書き込み) | 2 |
x (実行) | 1 |
つまり、「rwxr-xr-x」にしたい場合だと、
rwx = 421, 4+2+1 = 7
r-x = 4 1, 4+1 = 5
r-x = 4 1, 4+1 = 5
上記を上から並べて755を書くと「755」=「rwxr-xr-x」になる
例
$ chmod 755 file
記号による権限指定は相対指定、
数値による権限指定は絶対指定、という。
現在の権限の状態から特定のユーザーのパーミッションだけを変えたいときはミスも少ない相対指定のが適しているし、
ファイルに対してそれぞれのユーザーのパーミッションを一括に指定する場合は絶対指定のが記述も早くて楽
chownコマンド
chown = change owner
ファイル・ディレクトリの所有者(オーナー)、所有グループを変更する。所有者を変更できるのはrootユーザーのみ(後述のスーパーユーザーでroot権限を取得すれば使える)
書式
$ chown user file
ファイル(もしくはディレクトリ)のユーザーを記述のuserに変更
$ chown user:group file
ファイル(もしくはディレクトリ)のユーザーとグループを記述のuserとgroupに変更
$ chown :group file
ファイル(もしくはディレクトリ)のグループを記述のgroupに変更
オプション
-R ディレクトリを対象に、そのディレクトリ内のディレクトリやファイル、更にその先にディレクトリと最下層まで変更
スーパーユーザー
管理者権限を持つ特別なユーザーがスーパーユーザー
- システムの根幹に関わる作業が誰にでも出来ると危険
- そのため、システムの根幹に関わる作業はスーパーユーザー(root)だけが出来るようにしている
使い方はコマンドの前にsudoをつけるとスーパーユーザーとしてコマンドを実行
sudo = superuser doもしくはswitch user and do
書式
sudo {コマンド}
例
$ sudo mkdir /storage
Linuxの思想としては人はミスするものだから厳し目にパーミッションを与え、必要な時に権限を与えるという風にしてシステムの安全を確保している。
プロセスとジョブ
プロセスとは
実行中のプログラムのことをプロセスという
コマンドを実行すると、その実行ファイルをメモリに格納してメモリ上でCPUがプログラムを実行する。一つの実行に新しく一つプロセスが作られる。
たとえ同じコマンドでも複数回行ったらそれぞれ別のプロセスとして一つずつ作られる。
一つずつにプロセスIDが付与される
ジョブについて
まとめて実行されるプロセスの集まりがジョブ。これはシェルごとに管理される。
例
$ ps aux | frep bash | less
上記はps aux, frep bash, lessがそれぞれのプロセスとして3つ生成される。
ジョブはこのシェルで実行されるときの1行がジョブ、つまりプロセスが3つでも1行なのでジョブは1つ生成される。
- プロセスはOS全体で統一して管理される。システムが自動で実行しているプログラムや他のユーザーが実行しているコマンドを一括して管理している。
- ジョブはそのジョブを実行するシェル毎に管理される。プロセスと同じようにジョブにもジョブIDがある。
psコマンド
ps = process status
書式
ps [オプション]
具体例
$ ps
これをするとPID(プロセスID)やCMD(実行中のコマンド)が見れる
表示の1行ずつが一つずつのプロセス
psにはオプションがいっぱいあるが有名なものをひとつ
auxオプション
- 全ユーザーのプロセスを詳細情報を合わせて表示
なのでかなり膨大な量になる。
ちなみに、表示されるプロセスの一番下はpsコマンド。psコマンドを行った直後までをまとめて表示してくれる。
バックグラウンドとフォアグラウンド
シェルの画面外でコマンドを実行する事をバックグラウンド、
シェルの画面内で実行することをフォアグラウンドと呼ぶ
ここまでで紹介してきたようなコマンドではほんの一瞬で処理が終わってしまうが、処理が多いプログラムだったり結構時間を使うものがあり、その時にフォアグラウンドで実行するとその間何もできなくなってしまうためそういう物は途中で停止することが出来るのでフォアグラウンドのものを停止してバックグラウンドに回すことが出来る。
フォアグラウンドから直接バックグラウンドには回せない、一度停止をしてからバックグラウンドに持っていくか、フォアグラウンドに持っていくかを決める。
ちなみにスタートからバックグラウンドで実行させることも出来る
- フォアグラウンド実行中に停止:Ctrl + z
- 停止からフォアグラウンド:fgコマンド
- 停止からバックグラウンド:bgコマンド
- バックグラウンドからフォアグラウンド:fgコマンド
- 始めからバックグラウンドで実行:$ {コマンド} &
このように分けられる。
jobsコマンド
jobs = jobs
現在のジョブの一覧を表示するコマンド
例
$ jobs
[1]+ 実行中 sleep 20
一番左から、
[1]+ = ジョブID
実行中 = 実行状況
sleep 20 = 実行コマンド
※「sleep 20」は20秒間シェルを停止させるコマンド。長い時間コマンドが実行される例として使用。フォアグラウンドで行うと指定した秒数何もできなくなる。
途中で抜ける(停止)するには前述の通りctrl + z、そこからバックグラウンドに持っていくことも出来る。
fgコマンド
ジョブをフォアグラウンドにするコマンド
fg = foreground
書式
fg %ジョブID
具体例$ fg %1
bgコマンド
停止中のジョブをバックグラウンドにするコマンド
bg = background
書式
bg %ジョブID
具体例$ bg %1
killコマンド
kill = kill process
ジョブやプロセスを終了させるコマンド
書式
kill [オプション] %ジョブID
kill [オプション] プロセスID
例
$ kill %1
$ kill 4965
※フォアグラウンドのジョブはctrl + cで終了できる。停止中やバックグラウンドのジョブについてkillコマンドで終了できる。
正確には、killコマンドはシグナルを送信するコマンド
$ kill -[シグナル名] [プロセスID
デフォルトではTERMという終了を指示するシグナルを送信している、つまり下記の2つのコマンドは同じ
$ kill 4956
$ kill -TERM 4956
時々使う強制終了のシグナル「-SIGKILL」
「-TERM」シグナルを受け付けなくなってしまった異常なプロセスが出てきた時に使う。ただ直接コンセントを抜いてしまうような挙動なので極力使わない方が良い。
この2つのコマンドは同じ
$ kill -SIGKILL 4965
$ kill -9 4965
----------------------
以上、まとめてきました紹介したコマンドは基本的なものだし、オプションの使い方でもっと多岐にわたる使用方法がありますがそれはまた後々勉強した時にまとめようと思います。