naobe @ ウィキ

UNIX共通

最終更新:

naobe

- view
管理者のみ編集可
Unix/Linuxに戻る

ロック

スピンロック

http://www.multisoft-lab.com/os/processes.html 参照
資源が使用可能になるまでループして待つ。
【概略図】
lock(){
    while(m) //永久ループ
      ;
    m=TRUE;
}

unlock(){
    m=FALSE;
} 


ファイルの権限

ls -lを実行すると以下のように表示する。

 -rwxr-xr-x  1 root root        1249  1月  7  2007 xmkmf
 -rwsr-xr-x  1 root root       22984  1月  7  2007 passwd
 -rwxr-xr-x  1 root root      603696  1月  7  2007 cdrdao
 -rwxr-xr-x  1 root root       19668  1月  7  2007 cue2toc

-rwsr-xr-xを説明する。最初の-はファイルの種類を表す(d:ディレクトリ、s:ソケット、p:パイプ、l:ロック)。3文字で区切った部分が、ユーザ、グループ、他者の権限を表す。rwsはユーザが読み、書き、実行、SetUIDの権限を持っていることを表す。次のr-xはグループが読み、実行の権限を持つことを表す。r-sなら実行権限とSetGID権限を持つ。最後のr-xは他者が読み、実行の権限を持つことを表す。

Sが表示されると、実行権がなくて、SetUID or SetGIDがセットされていることを表す(不正な状況)。

8進で表示すると各ビットは、SetUID,SetGID,ステッキービット,ユーザ読み,ユーザ書き,ユーザ実行,・・・となる。

プロセスの配置

a.out

ヒープ領域はアドレスの大きい方向に成長する。スタックはアドレスの小さい方向に成長する。bssは初期値のない大域変数が割り当てられるセグメント。最初にロードしたときに0クリアされる。


ELF

スタックセグメントはコードセグメントの前にあってアドレスの小さい方向に成長する。ヒープセグメントはa.outと同様。


UNIXオブジェクトファイル形式


UTC(Coordinate Universal Time)

http://e-words.jp/w/UTC.html 参照
協定世界時間。全世界で時刻を記録する際に使われる公式な時刻。GMTとほぼ同じ。GMTは天体観測をもとに決定するが、UTCはSI単位系の1秒を原子時計で計測して決定している。GMTにおける1958年1月1日0時0分0秒からの経過時間を原子時計でカウントして定めた時刻である「国際原子時」に、GMTとのずれを調整するための「閏秒」を追加したものがUTCである。
海の潮汐運動がブレーキとなり、地球の自転周期は年々長くなっているため、放っておけばGMTとUTCは100年で約18秒ずれてしまう。このずれを1秒以下に抑えるため、ずれが0.8秒を超えるとUTCに閏秒を追加して、GMTとの差を詰める。

メタ文字

以下の文字はメタ文字として扱われ、表示したい場合はバックスラッシュを使う。
 "  $  @  &  '  (  )  ^  |  [  ]  {  }  ;  *  ?  <  >  `  \  スペース 改行,タブといったエスケープ・シーケンス

端末エスケープシーケンス


端末にエスケープシーケンスを出力すると、色、カーソル位置を変更できる
エスケープシーケンスは0x1Bで始まる。

エスケープシーケンス
ESC[0;30m
ESC[0;31m
ESC[0;32m
ESC[0;33m
ESC[0;34m
ESC[0;35m Purple
ESC[0;36m 水色
ESC[0;37m 薄灰色(light grey)

上記でESCは0x1B(10進の27)

CentOSのinitシェルの中に以下の記述がある

SETCOLOR_SUCCESS="echo -en \\033[0;32m"
033は8進(10進では27)。


ロケール

言語、国、文字コードで表される。メッセージ、日付、数値、ソート順等を、国、言語ごとに異なる書式で表示するために設定する。全てを同じロケールに設定するには、LC_ALLまたはLANGのみ設定しておけばよい。ロケールの設定一覧を見るには、localeコマンドを引数なしで実行する。


ロケール名

language(_territory)(.encoding)(@modifier)
【例】
ja_JP.UTF-8  言語:ja, 地域:JP, エンコード:UTF-8


umask

ファイルパーミッションを禁じるビットを設定する。666に対して、umaskを引いた値が、ファイルのパーミッションになる。
引くといってもビット(0,2,4)を0にするということ。

パーティション分割

最低限以下のパーティションに分割すべき。/と/usrは変化しない。/varと/homeは日々変化する。バックアップの観点から、日々変化するところのみバックアップしておけば良いということか。
  • /
  • /var
  • /home

権限

プロセスがファイルを読み/書き/実行するときに、プロセスの実効ユーザID、実効グループIDとファイルに割り当てられた権限から許可されるか判定し読み/書き/実行する。以下の順番で判定する。
  • プロセスの実効ユーザIDとファイルのユーザ権限を比較
  • プロセスの実効グループIDとファイルのグループ権限を比較
  • ファイルのその他権限を適用

ディレクトリの扱い

UNIXではディレクトリは特殊なファイルとして取り扱われ、ファイルの作成や削除は、そのファイルが存在するディレクトリの内容を変更することを意味する。

ディレクトリパーミッション ディレクトリ
r ディレクトリの内容を一覧できる
w ディレクトリ内にファイルを追加/削除/リネームできる
x ディレクトリ内のファイルを操作できる。サブディレクトリを作成できる。

操作 ディレクトリパーミッション
ディレクトリに含まれるファイルの一覧を表示する r-x
ディレクトリにファイルを新規作成する -wx
ディレクトリからファイルを削除する -wx
ディレクトリに含まれるファイルを読み出す --x
ディレクトリに含まれるファイルを上書きする --x
ディレクトリに含まれるファイルをリネームする -wx
ディレクトリにサブディレクトリを作成する -wx
ディレクトリからサブディレクトリを削除する -wx

プロセス

プロセスグループ

jobコントロールなどを行う為に、パイプライン等で繋げられた複数のプロセスをグループ化したもの。

spawn

Solarisではq、fork()-exec()によるプロセスの生成をspawnと言う。

ジョブ

http://www.q-eng.imat.eng.osaka-cu.ac.jp/~ippei/unix-tips/jobs-process.html 参照
「ジョブ」というのはシェルが管理する仕事の単位。 シェルは自分が起動したコマンド一つ一つを「ジョブ」という単位として扱い、そしてジョブの状態を常に把握、管理する。仕事の実体は一つだけど、「ジョブはシェルによって」「プロセスは OS によって」と管理される主体が違う。


UNIXの起動とプロセス


vi 制御文字入力

たとえば、Ctrl+D なら、EOT(0x04) が入力される。Dは0x44で、Ctrlキーは0x40減算する。
ttyが高機能になってASCII制御文字だけでは足りなくなると、エスケープシーケンスが使われるようになる。エスケープシーケンス
は、ESC(0x1b)に続けて複数のコードを送り、それでひとつのコマンドとする。

vimで制御文字をファイルに入力するには Ctrl+V に続けて、制御文字を入力する。たとえば、ESC(0x1b)を入力するには、Ctrl+V
Ctrl+[

拡張子

拡張子 説明 備考
la 動的リンクライブラリ
a 静的リンクライブラリ
so 動的リンクライブラリ

MANページの設定

/etc/man.config

ハッシュの作成

openssl dgst [-md5|-sha1] ファイル名

シェルを使わせたくないユーザに割り当てるシェル

/bin/false 常に終了コードに1を返す

smartd

ハードディスクの状況を調べるデーモン

ATAではサポートされていない機種が多いため、起動スクリプトを無効にしておく。
ハードディスクが、smartdをサポートするかどうかは、#smartctl -i /dev/hdaを使う

シグナル

以下のコマンドでプロセスに対してシグナル(割り込み)を伝える
 kill -s シグナル名|シグナル番号 プロセスID1 [プロセスID2 ...]

シグナル番号 シグナル名 説明 デフォルトアクション 発生方法
1 SIGHUP 制御端末(controlling terminal)のハングアップ検出、または制御しているプロセスの死 プロセスを停止
2 SIGINT キーボードからの割り込み プロセスを停止 ctrl + C
3 SIGQUIT キーボードによる中止 コアを吐いて停止する ctrl + \
5 SIGTRAP
6 SIGABRT abort(3) からの中断 (Abort) シグナル コアを吐いて停止する
8 SIGFPE 0による除算 コアを吐いて停止する
9 SIGKILL 無視したり捕捉することができない。 プロセスを停止
10 SIGUSR1 ユーザ定義シグナル1
11 SIGSEGV 権限のないメモリアクセス コアを吐いて停止する
12 SIGUSR2 ユーザ定義シグナル2
13 SIGPIPE Broken pipe. 閉じられたパイプやソケットに書き込むと発生。 プロセスを停止
14 SIGALARM alarm(2) からのタイマーシグナル。ジョブコントロール プロセスを停止
15 SIGTERM 終了 (termination) シグナル プロセスを停止
18 SIGCONT 保留されたプロセスを再開
19 SIGSTOP プロセスの一旦停止。無視したり捕捉することができない。 プロセスを保留
20 SIGTSTP 端末 (tty) より入力された一旦停止 (stop) プロセスを保留 ctrl + Z

CDROMのマウント




その他


デフォルトのファイル許可モード 666
umask 002
端末を終了しても継続してコマンドを実行する nohup command &
優先度を下げてコマンドを実行する(優先度を10下げる) nice command &
環境変数の一覧を表示する export
環境変数とは 子プロセスに伝搬する変数。シェル変数は当該のシェルのみ使える(子プロセスは使えない)。環境変数は親子関係のないプロセス間で共用できない。
Ctrl-D ログオフ
人気記事ランキング
ウィキ募集バナー