Linux6

トラブル時の操作

Ctrl+sで画面がロックされてしまう。
Ctrl+qで解除する。

実行中のコマンドを強制終了させるにはCtrl+c

プロンプトが文字化けしたらCtrl+lで画面消去。

Linuxファイルシステム

Linuxはユーザーデータのファイルに加えて、システム全体も1つ1つのファイルとして構成されている。ハードディスクやキーボードやプリンタなどの入出力装置も割り当てられたファイルを介して機器を操作できる。

そしてWindowsとの違いは何台のディスクがあってもシステム全体で1つのディレクトリツリーしか持たないこと。複数ディスクがある場合はマウントという手法をとる。

マウント

ファイルシステムの中でCD-ROMなどの場所を論理的に関連付けて指定しているやり方
例えばmnt/cdromディレクトリと/dev/cdrom(CD-ROMを表す特殊ファイルといいます)を関連付けて、/mnt/cdromディレクトリの中に、あたかもCD-ROMの中身そのものがあるように見せる

ワイルドカード

コマンドの引数に使う
*(アスタリスク)が0文字以上の任意の文字列を表す
?(クエスチョンマーク)は任意の一文字を示す
[ ]内にいくつかの文字を指定すると、その中の任意の1文字を表す

lnコマンド

リンクを貼る。

ハードリンク

1つのファイルの実態に複数の名前をつける機能。
ハードリンクを持つファイルの実態は、すべてのハードリンクが無くなった時に削除される。

シンボリックリンク

リンク先のパス名が書かれた小さな特殊ファイル。
シンボリックリンクを削除してもリンク先のファイルには影響を与えない。
逆に、リンク先のファイルだけ削除した場合はリンク先がなくなり「リンクが壊れた」状態になる。
オプションの-sをつけることでシンボリックリンクに出来る。

$ ln -s <リンク元ファイル名><リンク名>

利用方法
・長いパス名を省略する。
・複数バージョンのプログラムを共存させる。

Findコマンド

ファイルを探す。

$ find 検索開始ディレクトリ 検索条件 アクション

ワイルドカートの*を使う時にはbashのパス名展開と解釈されない様で囲む。

locateコマンド

パス名の一部を指定してファイルを探すコマンド。
ファイル名を専用のデータベースから検索するため高速で検索できる。
最初だけupdatedbコマンドでデータベースを作成する。その後は定期的に勝手に実行してくれる。

$ locate 検索パターン

whichコマンド

コマンドのフルパスを表示する。

bashの設定

エイリアス

分かりやすい別名を与えて、コマンドを使いやすくするための機能。

alias 別名=’変更するコマンド’

で設定する。
unaliasコマンドを実行して設定を解除することが可能
また、ログアウトすると自動的に設定は解除されるが、常にこの設定を有効にしたい場合は、カスタマイズで行います。

Typeコマンド

コマンドなのかエイリアスなのかを確認

bashのオプション

Setコマンド、shoptコマンドで設定できる。

シェル変数

Bash内部で使用される変数で、数値や文字列を保存してシェルの様々な機能のカスタマイズを出来る。プロンプトの設定や、PATHLANGなど。

変数名=値

・値にスペースを含む時はまたはで囲む。
=の左右にスペースをつけてはいけない。

環境変数

外部コマンド(色々なコマンドが外部コマンドになっている!)からも値を参照できる様にしたシェル関数のこと。
printenvコマンドで環境変数の確認が出来る。
exportコマンド環境変数を設定できる。

Export シェル変数名=値

環境変数に設定しても、bashを終了すると設定は消える!
次回ログインした時も同じ設定にするにはbashの設定ファイルを書き換える!

bashの設定ファイル

基本的には~/.bashrcに書く。
変更前の~/.bashrcはバックアップをとっておき、何かあったら元に戻せる様にしておく。
誤った記述によってログイン出来なくなった時のために、設定を行うシェルとは別にもう一つシェルを起動しておく。

ファイルとディレクトリのパーミッション

自分以外の人の、ファイルのパーミッションr-xにしていても、そのファイルの入っているディレクトリのパーミッションrwxとなっていると、ファイルを消すことができてしまう!
また、ディレクトリのパーミッションxが設定されていないと、そのファイルへのcdができない!
通常他のユーザーから観覧されてもいいディレクトリのパーミッションrwxr-xr-x
他のユーザーから観覧されたくないディレクトリはrwx——

su

一時的に他のユーザーになるためのコマンド。exitで一般ユーザーに戻れる。
・主にスーパーユーザーになるために使う。
su環境変数やカレントディレクトリなど現在の環境を維持したまま切り替え。
su -でスーパーユーザーの環境に初期化されて切り替わる。
・現在はこちらよりsudoの方がよく使われる!

sudoコマンド

コマンドを別のユーザーとして実行する。
・一般ユーザーでログインしている時に、スーパーユーザーでないと実行出来ないコマンドを実行するために使う。
・どのユーザーにsudoを許可するかどうかは/etc/sudoersファイルで管理されている。
sudoの設定をするのに/etc/sudoersファイルを直接テキストエディタで開いて編集してはいけない。visudoという特別なコマンドを使う!

プロセスとは

シェルからコマンドを実行すると、Linuxカーネルはディスクから実行ファイルを読み出し、メモリに格納し、CPUがプログラムを実行する。
このメモリ上で実行状態にあるプログラムのこと。

psコマンド

現在動作しているプログラムを表示。
psで現在のターミナルで実行しているプロセスだけ表示。
xオプションで現在のユーザーが実行している全てのプロセスを表示。
fオプションでプロセスの親子関係を表示。
aオプションで自分のプロセスだけでなく、システムで働いている全てのプロセスを表示。

プロセスの終了

Kill <プロセスID>

プロセスを終了できるのはその実行ユーザーのみ。
スーパーユーザーは全てのプロセスを終了できる。
サービスを提供するアプリケーションは端末から切り離して実行されるためジョブ番号を持たないので、システム管理を行うにはプロセスの終了操作の知識が必要。

ジョブとは

シェルが管理している、「シェルを実行する作業単位」のこと。
「ジョブ番号」はシェルごとに割り当てられます。
また、ジョブは、複数のコマンドをまとめたものでプロセスの集まりになります。

フォアグラウンド

通常の状態。対話的に操作しながら処理が実行される。
fg %<ジョブ番号>でフォアグラウンドにする。

バックグラウンド

ユーザーが対話的に操作せずに処理が実行されている様態。
bg %<ジョブ番号>、または初めからバックグラウンドで実行するには末尾にを記述。
キーボード入力を受け付けていないので、終了させるにはKill %<ジョブ番号>

ジョブの停止はCtrl+z

標準出力、標準入力、標準エラー出力

標準入力・・・キーボード
標準出力、標準エラー出力・・・端末ディスプレイ

リダイレクト

標準入出力先を変更する機能。
< FILEは標準入力をファイルに変更
> FILEは標準出力をファイルに変更
>> FI LEは標準出力をファイルの末尾に変更
2 > FILE は標準エラー出力をファイルに変更
2 >> FILE標準エラー出力をファイルの末尾にに変更
> FILE 2>&1 は標準出力と標準エラー出力を共にファイルに変更

/dev/nullにリダイレクトすると、その内容は消えてなくなる。

|(パイプライン)

あるコマンドの出力結果を別のコマンドの入力として使う機能

フィルタ

標準入力を入力として受け取り、標準出力に出力するコマンド。
cat入力をそのまま出力
head先頭の部分を表示
tail 末尾の部分を表示
grep指定した検索パターンに一致する行だけを抽出
sort 順番に並べ替える
Uniq重複した行を取り除く
tac逆順に出力する
wc 行数やバイト数を出力