\documentstyle[a4j]{jarticle}
\title{ジョブ}
\author{}
\date{}
\begin{document}
\maketitle
\section{マルチプロセス}
UNIXはマルチプロセス機構によって、複数のプログラム(プロセス)を同時に実行
できる。実際には同時ではなくタイムシェアリングにより細かく処理を切り替え
ている。この技術により複数の人が同時に計算機を使用したり、プログラムを開
発しながら同時にドキュメントを作成したりすることができる。
\section{フォアグラウンドジョブ}
tcshなどのシェルは、コマンドなどからプログラムを実行する。この実行を開始
したプログラムのことをジョブ(job)と呼ぶ。このプログラムが終了するまでシェ
ルではコマンドプロンプトが表示されない。この状態をジョブがフォアグラウン
ドで実行されていると呼ぶ。ジョブを中断するときはCtr-zを押せば良い。そう
するとジョブは中断されコマンドプロンプトが表示される。Ctr-cでフォアグラ
ウンドのジョブは中止される
\section{バックグラウンドジョブ}
シェルでプログラムを実行しながらさらに次のプログラムを実行することができる状態
にすることができる。このことをジョブがバックグラウンドで実行されていると
言い、コマンド入力の時に$\&$を入力すればよい。
\begin{verbatim}
kubo@kago[~]%netscape &
\end{verbatim}
こうすると続いてコマンドを入力できる。以下にジョブに関するコマンドを書い
ている。\%1となっているのはジョブ番号である。
\begin{itemize}
\item bg: バックグラウンドのジョブを表示させる
\item fg: 中断中またはバックグランドのジョブをフォアグラウンドで実行\\
      fg \%1
\item jobs: ジョブの番号と状態を表示
\item kill: バックグラウンドジョブを中止\\
      kill \%1
\end{itemize}
\section{ジョブとプロセス}
シェルで実行しているプログラムのことであり、同じシェルで実行しているジョ
ブしかjobsコマンドは表示しない。現在実行中のすべてのプロセスはpsコマンド
によって表示できkillコマンドにより中止したり再起動したりすることができる。
\\
psコマンドのオプションを以下に書く。
\begin{itemize}
\item a:すべてのユーザのプロセスについて表示
\item u:プロセス情報を詳細に表示
\item x:psコマンドを実行した端末以外の端末に入出力を行うプロセスについて
      も表示
\item w:コマンド名をすべて表示
\end{itemize}
良く使う形式は
\begin{verbatim}
kubo@kago[~]%ps aux
\end{verbatim}
psコマンドでプロセス番号がわかれば強制的に終了させたり再起動させたりする
ことができる。
\begin{verbatim}
kubo@kago[~]% ps aux | grep xmms
kubo    5125  3.9  4.0  9476 4988  p1  S     5:26PM   0:00.78 xmms
kubo@kago[~]% kill 5125

[2]    Terminated                    xmms
\end{verbatim}
オプションHUPを使うと再起動する。
\begin{verbatim}
kago# ps aux | grep inetd
root     188  0.0  0.6  1048  724  ??  Is   Mon07PM   0:00.03 inetd -wW
kago# kill -HUP 188
\end{verbatim}
どうしても終了しないプロセスはオプション9を使うと終了できることもある。
\begin{verbatim}
kubo@kago[~]% ps aux | grep xmms
kubo    5128  3.1  4.2  9476 5200  p1  S     5:28PM   0:00.82 xmms
kubo@kago[~]% kill -9 5128

[2]    Killed                        xmms
\end{verbatim}

\end{document}
