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内部で使用される変数で、数値や文字列を保存してシェルの様々な機能のカスタマイズを出来る。プロンプトの設定や、PATH
、LANG
など。
変数名=値
・値にスペースを含む時は’
または”
で囲む。
・=
の左右にスペースをつけてはいけない。
環境変数
外部コマンド(色々なコマンドが外部コマンドになっている!)からも値を参照できる様にしたシェル関数のこと。
・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
行数やバイト数を出力