5月16日

プロセス(Process)

テキスト 上巻p.110 第10章プロセス

プロセスの属性

プロセスの表示

% ps
  • PID:プロセスID
  • TT:端末情報
  • STAT
    • R (Runnable)→実行可能状態
    • D (Disk)→ディスク入出力中
    • S (Sleep),I (Idle)→入力待ち
    • Z (Zombie)→処理完了待ち
    • T (Traced)→一時停止中か,デバッグ対象
  • TIME:CPU時間
  • COMMAND:起動したコマンド
% ps u
% ps l

プロセスを殺す

  1. Ctrl+Cで殺す
  2. psコマンドを実行し,PIDをしらべて,
    % kill PID

Title 第10章 プロセス

Date 2003年5月16日

  • 10.1 プロセスとは
    • プログラムとプロセス
    • マルチプロセス
    • プロセス単位による保護,資源割り当て
  • 10.1.2 プロセスの操作
  • 新しくプロセスを作る,プログラムを実行する: ls, grep
  • 動いているプロセスを調べる: ps, jobs
  • 動いているプロセスを殺す: C^c, kill
  • (動いているプロセスを一時的に止める)
  • (一時的に止まっているプロセスの実行を再開させる)
  • (プロセスの優先順位を変える)
  • (プロセスの実行の様子を調べる)
  • 10.3 プロセスの観察: ps
    • PID, TT, STAT, TIME, COMMAND
    • man -k terminal
  • 10.3.2 デーモンプロセスと端末
    • デーモンプロセス
    • ps aux
    • バックグラウンドジョブ,フォアグラウンドジョブ
    • プロセスとユーザ
  • 10.3.5 プロセスの親子関係: ps l
    • 親プロセス PPID
  • 10.5 プロセスを殺そう
    • キーによるプロセスの強制終了: C^c, C^?
    • kill コマンドによるプロセスの強制終了: kill -KILL $PID
  • 演習
    • ターミナルを二つ実行する.
    • ターミナル1で emacs を起動する.
    • ターミナル2で emacs のプロセスIDを確認し,そのジョブを強制終了させよ.

csh入門

テキスト 上巻p.119 第11章プロセス

Title 第11章 csh入門

Date 2003年5月16日

  • 11.1 cshとは
    • シェル
    • (1)プロンプトを出力して,コマンドの入力を促す.
    • (2)キーボードからの入力(文字)を Enter(Return) が押されるまで蓄える.
    • (3)Enter が押されたら,蓄えておいた文字列を空白などで区切ってコマンドの名前と文字列と引数の文字列に分ける.
    • e.g.) 「ps u」としても「ps u」としても同じ
    • (4)コマンドの名前から,その名前のプログラムを見つけ出す.
    • 詳細は 11.9 にて
    • (5)見つけたプログラムを起動し,引数の文字列を渡す.
    • (6)特に指定しなければ,シェルは起動したプログラムが終了するまで待つ.
    • コマンド名 or ファイル名の補完機能: Tabキー, C^d
  • 11.1.2 sh と csh
    • Cシェル: csh, tcsh
    • Bシェル: sh, bash
  • 11.1.4 cshの説明における「コマンド」という用語の使い方
    • 「ps コマンド」という場合
    • 「ps aux」をコマンドという場合
    • 「コマンドライン」という場合
  • 11.1.5 コマンドライン編集機能
    C^a: 先頭に移動
    C^e: 最後尾に移
    C^f: 右に一文字移
    C^b: 左に一文字移動
    C^d: カーソルの位置にある文字を消去
    C^h: カーソル位置の直前(左)にある文字を消去
    C^k: カーソルの右側全てを消去(バッファにコピー)
    C^y: バッファに保存されている内容をペースト(貼り付け)
    C^l: 画面全体のクリア
    C^p: 一つ前に入力したコマンドラインを表示
    C^n: 一つ後ろのコマンドラインを表示
  • 11.2 I/O リダイレクションとパイプ
    • I/O とは
    • コマンドの実行結果を別のコマンドに処理させたい!
    • 現在実行中のプロセス数は?
    • リダイレクション)ps aux > result ; wc result
    • パイプ)ps aux | wc
    • 標準入力 stdin
    • 標準出力 stdout
    • 標準エラー出力 stderr
  • 11.2.1 リダイレクションとは
    • 標準出力をターミナルからファイルに変更 e.g.) ps aux > result
  • 標準入力をターミナルからファイルに変更 e.g.) cat < result
  • 11.2.3 パイプ
  • コマンドの実行結果を標準出力から標準入力に変更
    e.g.) ps aux | wc
    「ps aux」による出力を「wc」への入力に変更
  • 11.2.5 I/O リダイレクションとパイプの詳細
    「$command > file」
    「$command >> file」
    「$command >& file」
    「( $command > file1 ) >& file2」
    「$command1 | $command2」
    「$command1 |& $command2」
  • 演習
  • 「ps aux」で全プロセスを出力し,root が実行しているプロセス数を数えよ.リダイレクションを使用する方法と,パイプを使用する方法二通りを考えよ.
  • ヒント1:ps aux による出力結果には,root 以外のユーザによるプロセスも含まれている.この中から root の記載されている行のみを探し出し,その行数を数えると「rootが実行しているプロセ洪堯廚箸覆襦
  • ヒント2:次の3行が「test.txt」というファイルに書かれているとする.
    abc
    1 2 3
    abc 1 2 3
  • このファイルから「abc」という文字列が含まれている行は「grep abc test.txt」として抜き出すことが出来る.
  • ヒント3:ファイル内の行数を数えるには「wc -l test.txt」とする.
  • 11.3 変数
    • 変数
    • 変数名
    • 変数の値
    • 変数の値を参照
    • 変数に値を代入
  • 11.3.2 シェル変数
  • set
    set test=123
    echo $test
    unset test
  • 11.3.3 環境変数
  • setenv
    setenv test 123
    echo $test
    unsetenv test
  • 11.3.4 シェル変数と環境変数の違い
    • シェル変数はシェル毎に異なるが,環境変数は引き継がれる.
    • シェル変数では変数の値にリストが許される: echo $path[1]
  • 11.4 メタキャラクタとエスケープ
    • cshが解釈する文字=cshのメタキャラクタ: >
    • メタキャラクタの機能をオフにする=エスケープ: ?, '', ""
  • 11.5 ファイル名置換
    • main.c と subroutine.c という二つのファイルで動くプログラムを簡単にコンパイルするには?
    • * と ?
    • [str]
  • 11.5.4 ファイル名補完
    • 補完できる部分を補完: Esc, Tab
    • 補完候補を表示: C^d
  • 11.6 実行制御
    • フォアグラウンドジョブ
    • バックグラウンドジョブ: コマンド実行時に,コマンドライン最後尾に「&」を付ける
    • 順次実行: $command1 ; $command2 ; $command3
    • コマンド1が正常終了ならコマンド2を実行: $command1 && $command2
    • コマンド1が異常終了ならコマンド2を実行: $command1 || $command2
  • 11.7 ヒストリ機能
    • history
    • C^p, C^n もしくはカーソルキーの上下
    • !
  • 11.8 エイリアス機能
    • コマンドに別名を付ける: alias $name $command-line
    • エイリアス設定の表示: alias
    • エイリアスの削除: unalias $name
    • シェルスクリプトではできないエイリアスの応用
    • why?) シェルスクリプトでは,新しいシェルを起動してスクリプトを実行する.そのスクリプト内で変更されたシェル変数は,新しいシェルのものであり,元のシェル変数はそのまま保たれているため.
  • 11.9 コマンドサーチパス
    • (1)コマンドが「/」を含めば,パス名を指定したものとして,そのプログラムを実行.
    • (2)コマンドが組み込みコマンド(cdなど)なら,その組み込みコマンドを実行.
    • (3)シェル変数 path を使って,実行可能なファイルがそのパスで指定されたディレクトリ内にあるかを順に探し,最初に見つけたものを実行.
    • (4)以上で実行できなければ,コマンドが見つからないという表示「Command not found」を表示.
       which ls
       echo $path
  • 11.10 ディレクトリスタック
    • pushed /etc
      pushed
      poped
  • 11.11 資源の制限
    • limit
      limit $resource $value
      unlimit $resource
  • シェルスクリプト例
    • menu
    • mkhtml
  • 演習
    • menu に「自分のプロセスを表示するメニュー」と「指定したプロセスIDのプロセスを殺すメニュー」を追加せよ.
      • ヒント1: 「自分のプロセスを表示する」コマンドは ps
      • ヒント2: 「プロセスを殺す」コマンドは kill
      • ヒント3: ターミナルからの入力を変数に代入するのは「set PROCESSID=$<」とする.

演習

(1)プロセスの殺し方

  • ターミナルを二つ実行する.
  • ターミナル1で emacs を起動する.
  • ターミナル2 emacs のプロセスIDを確認し,そのジョブを強制終了させよ.

(2)リダイレクシ腑鵑肇僖ぅ廚了箸な

  • 「ps aux」で全プロセスを出力し,root が実行しているプロセス数を数えよ.リダイレクションを使用する方法と,パイプを使用する方法二通りを考えよ.
  • ヒント1:ps aux による出力結果には,root 以外のユーザによるプロセスも含まれている.この中から root の記載されている行のみを探し出し,その行数を数えると「rootが実行しているプロセス数」となる.
  • ヒント2:次の3行が「test.txt」というファイルに書かれているとする. abc 1 2 3 abc 1 2 3
  • このファイルから「abc」という文字列が含まれている行は,以下のコマンドで抜き出すことが出来る. grep abc test.txt
  • ヒント3:ファイル内の行数を数えるには「wc -l test.txt」とする.



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