出席,意見,質問

第2回テストアナウンス

  • 7月22日4限
  • 範囲:教科書14章,15章,21章

第21章 ファイルとディレクトリの高度な操作

広義のファイル

  • 普通のファイル
  • 広義のファイル
    • 名前があるファイル
    • 読み書きできるファイル
    • プロセス間のデータのやりとり

ハードリンクとシンボリックリンク

  • ln
    • ハードリンク
      % ln oldname newname
    • シンボリックリンク
      % ln -s oldname newname

ファイルとディレクトリに関するいくつかの技

  • ファイルをディレクトリ以下にコピー
    % cp file1 file2 file3 dir
  • ディレクトリ単位のコピー
    % cp -r olddir newdir
  • ディレクトリ単位の削除
    % rm -r dirname
  • ディレクトリ以下に移動
    % mv file1 file2 file3 dir
  • 「-」からはじまる名前のファイルの削除
    % rm ./-filename

バイナリファイル

  • od
    % od -x filename

マスクとモード

  • モード:ファイルの型とアクセス権を制御する16ビット(8進数表現する)
    • モードは,ls -lコマンドで左側に表示される.
      上位4bituidgidstickyusergroupothers
      sstrwxrwxrwx
  • 型:
    ls -l上位4bit(8進表現)上位4bit意味
    -0101000plain file(通常のファイル)
    d0040100ディレクトリ
    l0121010シンボリックリンク
    c0020010文字型デバイスファイル
    b0060110ブロック型デバイスファイル
    s0141100socket
    p0010001名前付きパイプ

set-uidビット,set-gidビット

実行ファイルのOwner,Groupの権限でユーザが実行するためのモード ユーザ j06001 グループ y06j が,以下のコマンドhogehogeを実行したとき,

モードコマンド実効ユーザ実効グループ
通常-rwxr-xr-x root wheel hogehogej06001y06j
set-uidビットがオン-rwsr-xr-x root wheel hogehogerooty06j
set-gidビットがオン-rwxr-sr-x root wheel hogehogej06001wheel
% ls -l /{,usr/,usr/local/}{,s}bin/ | grep 'r[-w]s'

上記のコマンドで,set-uidビット,set-gidビットが立っているファイルを探そう.

stickyビット

ディレクトリのOtherに対して適用されて,任意のユーザに読み書き可のディレクトリ下の削除権限をオーナーのみに限るモード(これがオンでないとき,誰にでも読み書きできるうえに,削除もされてしまう.)

% ls -ld /private/tmp 
drwxrwxrwt    18 root  wheel   612 Jul  6 10:26 /private/tmp/

というように,otherの実行ビットのところがtで表示される.

% ls -l /{,private/} | grep 'r[-w]t'

上記のコマンドでstickビットが立っているディレクトリを探そう.

例:

% ls -l
drwxr-xr-x    2 koji     teach        4096 Jun 27 08:51 public_html/
-rw-r--r--    1 koji     teach           4 Jul  4 00:41 test.txt

よく使われるモード

ls -lの表示8進数
rw-r--r--644
rwxr-xr-x755
rw-------600
rwx------700
例:
% chmod 755 file1
% chmod g+r file2

マスク:新しくファイルを作成する際に、許可しないビットを示す

% umask

ファイルの属性変更

  • 所有者属性の変更
    % chown owner file1
  • グループ属性の変更
    % chgrp owner.group file1

その他のファイル

  • デバイスファイル
  • ソケット
  • 名前付きパイプ
  • プロセスファイル

ファイルシステム

  • マウントとアンマウント
  • NFSマウント
  • ファイルシステムの操作

標準的なディレクトリ構成

ディレクトリ構成を調べましょう.(以下はMac OS Xの例)

% ls -lF  /
drwxrwxr-x   485 root  admin     16490 Jul 10 21:49 Applications/
drwxrwxr-x    22 root  admin       748 Oct  6  2003 Applications (Mac OS 9)/
drwx------     6 koji  admin       204 Jan 15  2004 Desktop/
-rw-r--r--     1 root  admin    441344 Jul  6 15:17 Desktop DB
-rw-r--r--     1 root  admin   2786674 Jul  6 15:17 Desktop DF
drwxrwxr-x     2 root  admin        68 Jul 31  2003 Desktop Folder/
drwxrwxr-x    18 root  admin       612 Jun 19 08:50 Developer/
drwxrw-rw-    11 koji  wheel       374 Oct 17  2005 Documents/
drwxrwxr-x    61 root  admin      2074 Jun  7 19:21 Library/
drwxr-xr-x     1 root  wheel       512 Jul 11 09:25 Network/
drwxr-xr-x     4 root  wheel       136 Apr  4 10:12 System/
drwxrwxr-t     8 root  admin       272 Feb 14 08:47 Users/
drwxrwxrwt     4 root  admin       136 Jul 11 09:52 Volumes/
drwxr-xr-x     4 root  admin       136 Dec  6  2005 automount/
drwxr-xr-x    40 root  wheel      1360 Jun 28 06:34 bin/
dr-xr-xr-x     2 root  wheel       512 Jul  5 21:40 dev/
lrwxrwxrwx     1 root  admin        11 Jun 27 09:05 etc@ -> private/etc
lrwxr-xr-x     1 root  admin         9 Jul  5 21:40 mach@ -> /mach.sym
-r--r--r--     1 root  admin    603108 Jul  5 21:40 mach.sym
-rw-r--r--     1 root  wheel   4338660 Jun 23 13:56 mach_kernel
drwxr-xr-x     6 root  wheel       204 Jul  5 21:40 private/
drwxr-xr-x    63 root  wheel      2142 Jun 28 06:34 sbin/
lrwxr-xr-x     1 root  admin        11 Oct  5  2005 tmp@ -> private/tmp
drwxr-xr-x    13 root  wheel       442 May 22 18:10 usr/
lrwxr-xr-x     1 root  admin        11 Oct  5  2005 var@ -> private/var

シグナル

シグナルの種類

% kill -l
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP 
TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2 

シグナルの定義

/usr/include/sys/signal.h
#define SIGHUP  1       /* hangup */
#define SIGINT  2       /* interrupt */
#define SIGQUIT 3       /* quit */
#define SIGILL  4       /* illegal instruction (not reset when caught) */
#define SIGTRAP 5       /* trace trap (not reset when caught) */
#define SIGABRT 6       /* abort() */
#if  defined(_POSIX_C_SOURCE)
#define SIGPOLL 7       /* pollable event ([XSR] generated, not supported) */
#else   /* !_POSIX_C_SOURCE */
#define SIGIOT  SIGABRT /* compatibility */
#define SIGEMT  7       /* EMT instruction */
#endif  /* !_POSIX_C_SOURCE */
#define SIGFPE  8       /* floating point exception */
#define SIGKILL 9       /* kill (cannot be caught or ignored) */
#define SIGBUS  10      /* bus error */
#define SIGSEGV 11      /* segmentation violation */
#define SIGSYS  12      /* bad argument to system call */
#define SIGPIPE 13      /* write on a pipe with no one to read it */
#define SIGALRM 14      /* alarm clock */
#define SIGTERM 15      /* software termination signal from kill */
#define SIGURG  16      /* urgent condition on IO channel */
#define SIGSTOP 17      /* sendable stop signal not from tty */
#define SIGTSTP 18      /* stop signal from tty */
#define SIGCONT 19      /* continue a stopped process */
#define SIGCHLD 20      /* to parent on child stop or exit */
#define SIGTTIN 21      /* to readers pgrp upon background tty read */
#define SIGTTOU 22      /* like TTIN for output if (tp->t_local&LTOSTOP) */
#if  !defined(_POSIX_C_SOURCE)
#define SIGIO   23      /* input/output possible signal */
#endif
#define SIGXCPU 24      /* exceeded CPU time limit */
#define SIGXFSZ 25      /* exceeded file size limit */
#define SIGVTALRM 26    /* virtual time alarm */
#define SIGPROF 27      /* profiling time alarm */
#if  !defined(_POSIX_C_SOURCE)
#define SIGWINCH 28     /* window size changes */
#define SIGINFO 29      /* information request */
#endif
#define SIGUSR1 30      /* user defined signal 1 */
#define SIGUSR2 31      /* user defined signal 2 */

端末キーコンビネーション

  • Ctrl+c プロセスの終了
  • Ctrl+z プロセスの一時停止

ジョブ制御

jobとは,シェル単位でカウントされる一連の仕事をしているプロセスの集合

  • jobs
  • fg
  • bg

プロセス制御

  • topコマンド


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-06-20 (木) 14:45:26 (2342d)