Environment

急にUbuntuが遅くなったと思ったら… | ソフトウェア編

Ubuntuを日々利用していると、時々急にフリーズしたり/画面が真っ黒になってしまったり/動作が遅くなることがあります。今回はそういった状況におけるトラブルシューティングのやり方、特にソフトウェアに焦点を絞って解説します。
なお、この記事の想定している読者はUbuntu使用歴が1年以内の初心者です。基本的な用語解説も書いておりますので、人によっては記事が間延びしているように思われるかもしれません。ご了承ください。

1.まずはCUI環境に入る

たいていのユーザ、特にUbuntu使用歴の浅いユーザは日頃からGUI環境で作業していることが多いはずです。簡単にGUIとCUIについて説明すると、両者はそれぞれGraphical User Interface、Character User Interfaceの略であり、GUIが直感的な操作を可能にするため、画像を多用したインターフェース(操作環境)であるのに対し、CUIは主にキーボード入力による操作しか受け付けないが、コンピュータリソースの使用量を抑えられるという特徴があります。

日頃使う分にはGUIでも問題ないのですが、今回のような状況になった場合、原因がGUIによることも考えられます。(実際、そのようなケースは多い。)
ですので、問題を切り分ける場合においては、まずはCUI環境でのトラブルシューティングをおすすめします。
CUI環境に入るには、Ctrl + Alt + F1~F6、GUIに戻るにはCtrl + Alt + F7を押します。ちなみに、ですが、CUI環境に入る前にGUIへの戻り方はメモしておきましょう。じゃないと、またスマホとかで戻り方を検索しなければならなくなります笑。

なお、GUIを再スタートさせてちゃんと動作するか確認することも有効です。sudo service [display manager] restart
このコマンドを入力すると、一旦GUI画面が消え、再びログイン画面に戻ります。ちなみに、 Ubuntuだったらデフォルトのdisplay managerはlightdmになってます。

2.プロセスを確認する

ps aux | grep [username]
psは現在実行中のプロセス(メモリ上で実行されているプログラム。Linuxカーネルから見た処理の単位)を表示するコマンドであり、auxは全ユーザのプロセスを詳細表示するオプションです。これをパイプでつないで、grepで現在のログインユーザのプロセスに限定することで問題の範囲を絞っています。

上の出力画面はユーザの指定(grep [username])を省いていますが、結果を見ると、左からユーザ、プロセスID、CPU占有率、メモリ占有率、仮想メモリのサイズ、物理メモリのサイズ、端末情報、プロセスのステータス、開始時刻、CPUを占有した累計時間、そして入力されたコマンド、と並んでいます。

kill -9 [process ID]
9はSIGKILLというプロセスを強制終了させるシグナル(プロセス自身に送られる指示)の番号であり、-9でオプションとしてこれを指定しています。とはいえ、このSIGKILLのシグナルは他のシグナルと異なり、プロセスではなくLinuxカーネルに渡され、カーネルによってプロセスが終了させられます。
これで解決するケースも結構多いです。

3.パッケージを更新する

sudo apt update && sudo apt upgrade
ライブラリや設定ファイルをまとめたものをパッケージと呼びます。もともと、Linuxでは自分のやりたいことに応じて必要なパッケージをインストールする必要がありました(というか今もそう)。これを自力で行う場合、いちいちインストールするパッケージが自分の環境で動作するか・インストール済みのほかのパッケージに悪影響を与えないかをチェックする必要があったのですが、それは面倒ですよね。ということで、現在のLinuxではこういったインストールおよびアンインストール、依存関係の調整、システムの更新などを行ってくれる、ディストリビューションに応じたパッケージ管理システムが存在しており、Ubuntuを含むDebian系ではAPTが使用されています。(APTはAdvanced Package Toolの略です。ちなみにaptはAPTから提供されているコマンドラインベースフロントエンドの1つという位置づけです。APT=aptではないことに注意しましょう。)

上記コマンドの左側、sudo apt updateではこの利用できるパッケージのリストを更新します。

sudo apt upgradeでは、他のパッケージを削除せずにアップグレードできるインストール済みパッケージのみを更新します。

4.ファイルシステムの確認

ファイルシステムとは、簡単に言うとOSの機能の一部であり、データの保存や管理を行っています。このシステムのチェックにはfsckというコマンドを使用します。(fsckはfile system consistency checkの略です。)

fsckを使うにはチェックするパーティションがマウント(読み書き可能な状態)されていない必要がある。というのも、マウントしたまま実行してしまうと、ファイルシステムが破壊されてしまう可能性があるからです。なお、アンマウントはumount [partition]と入力することで可能です。(unmountじゃないことに注意。)

fsck -y [partition]で実行。
-yは問題があれば自動的にエラーを修復するオプション
ちなみにすべてのファイルシステムでチェックをするには以下のコマンドを入力(root権限にならずに入力すること)

fsck -AR -y

Aはすべてのファイルをチェックするオプションで、Rはルートディレクトリをチェックから除くオプションです。

もし、rootでfsckを使いたのであれば、まずrootディレクトリ直下にforcefsckというファイルを作成する(sudo touch ~/forcefsck)。たったこれだけで、次回PCを再起動するときに自動でrootディレクトリのチェックを行ってくれる。(ただ、ダウンタイムが存在するので実行するタイミングには注意すること。)

なお、再起動によるチェックが終わった場合は、ls ~/forcefsckでファイルの存在をチェックし、もしあれば削除する。(そうしないと、毎回立ち上げる時にfsckが実行されてしまう。)

4.REISUBを試す

これはフリーズしたUbuntuを一部のプログラムのデータ損失を防ぎ、ファイルシステムの破損を回避して、安全に再起動するやり方です。AltとSysReq(Print Screen)を押しながら、以下のキーを順番に、各キーは数秒間の間隔を空けて押していってください。

R: Switch to XLATE mode ( キーボードのコントロールをX Windowから解放 )
E: Send Terminate signal to all processes except for init (kill -15を実行し、プログラムを可能な限り通常終了させる)
I: Send Kill signal to all processes except for init (kill -9を実行し、プログラムを強制終了させる)
S: Sync all mounted file-systems (メモリ上のデータをディスクに書き込む)
U: Remount file-systems as read-only (すべてのディスクを読み込み専用で再マウントする)
B: Reboot(システムを再起動する)

https://wiki.ubuntulinux.jp/UbuntuTips/Others/MagicSysRq

5.それでもダメなら…

ソフトウェアの観点からすれば、デスクトップ環境をunityからgnomeに変更したり、Live CDを使って、USBからデバッグする手法もあるようですが、ここではそこまで深入りしません。

興味のある人は、下のURLから記事を読んでみてください。

ただ、高い可能性で考えられるのがハードウェアにおける問題です。
これについては次回解説します。
https://www.maketecheasier.com/4-ways-to-get-yourself-out-of-a-ubuntu-crash/

https://ja.wikipedia.org/wiki/シグナル_(Unix)

関連記事

  1. Environment

    個人的にLinuxでよく使うコマンドリスト

    なだらかに上のほうが基本的・重要なコマンドになっています。Linux…

  2. Computer Vision

    研究に役立つ?リンク集

    随時更新。今後は「読んでよかった本リスト」みたいなのも作っていきたい…

  3. Environment

    CUDAインストール時の注意点

    本記事ではLinux(Ubuntu)上で深層学習に関する用途のために…

カテゴリー

最近の記事

おすすめ記事

  1. その他

    Panasonic Singaporeでのインターンの思い出2
  2. OpenCV

    ブロック崩しを半日で作る1
  3. その他

    海外大学院への推薦状依頼に関するソース
  4. Environment

    CUDAインストール時の注意点
  5. その他

    Panasonic Singaporeでのインターンの思い出1
PAGE TOP