7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

プロセスの終了の仕方 ~ top & kill

Posted at

研究室内の仲間とUbuntuでいろいろなことをしていると、「プロセスの終了の仕方が分からない」人が多いので、ここいらでまとめときます。

あと、「そのサーバーで回っている実験やプログラムが見たい」とか「過負荷どうなってるの?」とかも聞かれることが多いので、ここらへんの人にも役に立つはずです。

想定環境

  • Windows Subsystem for Linux
  • または Linux や Linux Server

問題の起こし方

さて、問題を具体的に見ていくために、上記の環境を持っている人は nyancat というタイマーを用意しましょう。

端末に以下のように打ち込みましょう。

端末
$ sudo apt install nyancat

Linuxの「端末」というのは、WSLにおけるUbuntuや、Hyper, Cmderといったアプリです。

これで nyancat がインストールされました。
では起動してみましょう。

端末
$ nyancat

すると、コンソール画面に以下のように表示されるはずです。

nyancat.PNG

これは、とても楽しいタイマーなのですが、どうやってこの画面を抜けるか、で問題が起こります。

「Ctrl + C」で抜けましょう。

しかし、もし「Ctrl + Z」で抜けたとします。
すると、「$ exit 」として端末を閉じようとしたとき、すぐに閉じられなくなります。

nyancat2.PNG

この状況を簡単に言うと、「いまこの端末で一時停止しているプロセスを殺さないと終了できない」という状況です。

「Ctrl + Z」はプロセスの一時停止なので、nyancat はバックグラウンドに回ってしまうのです。

もう一度、nyancat コマンドを実行しても、新しい nyancat のプロセスが生成されるだけで、昔の nyancat は消えてくれません。

このへんの挙動の違いを詳しくまとめている記事はこちら

さて、こうなってしまったプロセスや、バックグラウンドに回ってしまったプロセスを殺すために、まずは実行中のプロセスを見ましょう。

top コマンドの見方

top コマンドはプロセスによるシステムの過負荷などの情報がリアルタイムで見れます。

端末
$ top

以下が実行画面です。

top.PNG

黒い画面べた張りで申し訳ないです。

「q」を押すと止めれます。

一番上の load average ってのが、誤解を恐れずにいうと、CPUに処理されるのを待っている仕事の数で、仕事がなくて暇なほど小さくなります。

左から、1分、5分、15分の平均の値です。

ここの値に関しては、コア数とかにもよるけど、旧世代のノーパソで負荷かけたときは 10 超えてて、ファンがウィンウィンまわってました。

あとはプロセスのID、実行時間やCPU使用率などが見れるので、サーバを触る人は重宝してるコマンドだと思います。

ps コマンド

ps コマンドは実行中のプロセスを表示するコマンドです。

私はこのコマンドをバックグラウンドで走っているプログラムを見るときによく使います。

計算機実験などで使用するサーバーでは、他の人の負荷にならないようにまずはそのサーバーで何が起こっているのかを知る必要がありますから。

端末
$ ps ax
  • a : 表示にほかの端末も含める。
  • x : 現在実行しているプロセスの表示

これで実行中のプロセスの最低限の情報は取れます。

ps.PNG

このオプションなら、プロセスのIDやそのプロセスの状態が見れます。

nyancat のプロセスについてだけ表示させたいなら

端末
$ ps ax | grep "nyancat"

とすれば、出せます。

STATを見れば、プロセスの状態が分かります。

ゾンビになってるプロセスだけ表示させたいときとかにも使えます。

私はよく「$ ps aux」として使います。

  • u:ユーザー名と開始時刻を表示する

kill コマンドの使い方

kill コマンドは、プロセスを強制終了するためのコマンドです。

さて、top か ps コマンドで問題の nyancat のプロセスIDが取れたと思います。

取得したプロセスIDをもとに、以下のように実行します。

端末
$ kill "プロセスID"

今回の場合では、「$ kill 182」とすれば、無事 nyancat を終了させることができます。

お疲れさまでした。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?