見出し画像

[ターミナル]"Terminalが予期しない理由で終了しました"となり、使えなくなった時の対処記録

ターミナルが開けなくなった(´д` ;!?


こんばんわ、なかがわ(Twitter)です。
今回もターミナルのエラー関連での投稿です。

いつものようにxcodeを開いて作業をしていたところ、
そのエラーは突然やってきました。

普段はこの状態で、いつでもコマンド打っていいぜ状態なのだが、

突然…

"Terminalが予期しない理由で終了しました"

´д` ;!?

デカデカとエラー表示が。。

エラー発生時の状況としては、何かしらのコマンドを
実行したことによってエラーが発生したわけではなく、
ターミナルを開きコマンドを実行しようと文字を打ち始めた時に、
突発的にターミナルが落ちて画像の表示が出てきたといった状況でした。

…と、焦りはしましたが、
実は以前から稀に吐いていたエラーであり、一度閉じて再起動したら問題なく使用できていたので、xcodeや音楽ソフトが突然落ちたりするのと同じだろうと思いながら、今まで通り再起動をしました。

しかし、今回はなぜか再起動できません。
何度ターミナルを再起動しても↓

このエラー表示がされ、ターミナルを使用することができません。。
(こちらのエラー概要、メチャクチャ長文)
こーれは死活問題なので、当時夜中の2時でしたが、
早急にエラーの対処をすることとなりました。
実際に行った流れを順番に書いていくので、
同じ症状に陥った方の参考になれば幸いです。

原因の調査


こちらの記事が非常に参考になったので添付させていただきます。
今回のようなエラーだけでなく、Macでトラブルが発生した時の効果的な対処法が記述されいるので、ぜひこちらも見てみてください。🙏

参考記事:


対処1: 再起動


まず初めに実行したこと。再起動です。
何かしらPCの調子が悪かった時、再起動をすることで解消したことは数知れず。トラブル発生時にまず初めに実行してみました、が、
今回の問題に関しては解消することはできませんでした。

対処:2  セーフブート(セーフモード)実行


次に実行したことが、セーフモード(セーフブート)の実行です。

セーフモードとは?

セーフモード (セーフブートと呼ばれることもあります) は、Mac を起動する方法の1つです。起動時に所定のチェックを行い、一部のソフトウェアが自動的に読み込まれたり、起動したりしないよう阻止します。

Apple サポート より

セーフモードの具体的な動きはこちら↓

:セーフモードによる起動ディスクの検証と問題の解消

●必要なカーネル機能拡張のみの読み込み
●起動項目とログイン項目の読み込み阻止
●ユーザーがインストールしたフォントの無効化
●フォントキャッシュやカーネルキャッシュなどを含む
 システムキャッシュの削除

これらの処理によって、OSのシステム障害解消や、動作の軽量化の効果を得られます。

セーフモードの実行方法

PCを再起動し、真っ暗な画面の状態で「Shift⬆︎」キーを押し続ける

ログイン画面が開いた時に、右上に「セーフブート」と表示されていれば
実行成功◎

※再起動時の注意


BlueTourth等の無線キーボードを繋いでPCを操作している場合は
Mac本体のShift⬆︎を押すようにしてください。
再起動時に無線の接続が途切れているためです。
私は無線キーボードでの操作が日常化しすぎて、2度ほど
通信が途切れているキーボードのShift⬆︎を押し続けていました。泣

セーフブート起動ができたら、そのままログインします。
この時点で、ディスクの検査やキャッシュの削除などは終了しています。
再起動して通常モードで動作確認してみましょう。

この工程で不具合が直る方は直りますが、
私の場合セーフブートによる解消はしませんでした。

対処3: 新規アカウントからログインして動作確認


自分が使用しているアカウントではなく、新規で作成した
プレーンなアカウントで動作確認を行います。
新規アカウントで操作することで問題が解消した場合、
アカウントごとに持つユーザー設定が入ったライブラリファイル内部に問題があるということがわかります。

新規アカウント作成方法はこちらを参考に:

私の場合、こちらの方法でターミナルを起動することができました。

セーフモードでは改善しないが、新規アカウントだと改善する。
よって、ユーザ設定が格納されているファイルの中に異常が発生していることが判別できました。
次は内部ファイルの中でトラブルに関連していそうなファイルを
一つずつ退避or削除していき、原因データを調査していきます。
参考記事を引用させていただきます。



新しいユーザアカウントでは改善するがセーフモードでは改善しない場合の対処

引用元:
https://discussionsjapan.apple.com/docs/DOC-1032


◎ ホームフォルダのライブラリにある下記フォルダ内の関係ありそうなものを退避もしくは削除する
※ OS X Mavericks以降のOSを使用している場合は、初期設定ファイルの削除後すぐに再起動すること

・/ユーザ/[ユーザ名]/ライブラリ/Application Support (注3

・/ユーザ/[ユーザ名]/ライブラリ/Autosave Information

・/ユーザ/[ユーザ名]/ライブラリ/Containers

・/ユーザ/[ユーザ名]/ライブラリ/Preferences

・/ユーザ/[ユーザ名]/ライブラリ/Saved Application State



上記の "/ユーザ/[ユーザ名]/ライブラリ" ファイルですが、
通常だとファインダー内にライブラリファイルが表示されないようです。
大事なファイルがたくさん入っているからでしょうか。

:ライブラリの表示方法を2つ紹介
1.ファインダー選択下で画面上部バーの「移動」を
 「Optキー長押し + クリック」
2.
ファインダー選択下で 「Cmd + shift + L 」

こちらのファイル群が表示されたら成功です◎

[ 原因となっている可能性のあるファイル ]

・/ユーザ/[ユーザ名]/ライブラリ/Application Support
・/ユーザ/[ユーザ名]/ライブラリ/Autosave Information
・/ユーザ/[ユーザ名]/ライブラリ/Containers
・/ユーザ/[ユーザ名]/ライブラリ/Preferences
・/ユーザ/[ユーザ名]/ライブラリ/Saved Application State

⬆︎のファイルは
セーフモード❌ 新規アカウント⭕️ だった場合です。
別のパターンだった場合は引用元の記事を参考にしてみてください🙏

では、上記のファイルを一つずつ調査していきます。

// 追記) 対象ファイルをデスクトップ上に退避させるだけでも新規ファイル生成可能かも?

1.対象ファイルの中身をバックアップ(コピー)し、
  (新規バックアップ用ファイル)に退避

2. 対象ファイルを削除

3. PCを再起動
   (ファイルを削除し再起動した時点で、Macが自動で検知し
   新規のデフォルトファイルが生成されます) 注)※

注) ※
ファイルの中にはアプリケーションごとのユーザー用設定ファイルも入っているため、
削除すると自動で再生成されないファイルもあります。不足の事態を避けるため、
必ず都度バックアップをとりながら調査しましょう。



調査結果


調査の結果、私の場合原因となっていたファイルは
/ユーザ/[ユーザ名]/ライブラリ/Saved Application State/
の中に含まれている
com.apple.Terminal.savedState
   ←
こちらのファイルでした。

こちらのファイルの中身を退避させ、
デフォルト設定の新規データを生成することにより、
ターミナルを開くことができました!🎉

ただ、何が原因でこちらのファイルに異常が発生するのかまでは特定することができませんでした。。
ちなみにこの一日後再び同じトラブルが起きます(なんでや)が、
同対処で回復することができました。
現在はとりあえず問題なくターミナル操作ができています。

まとめ


以上、ターミナルが開けなくなった時の対処記録でした。
予期せぬエラーにおののくことも多いですが、
エラー内容をもとに根気よく検索していると先人の方達が模索してくれた対処法が埋もれていたりするので、挫けずやっていきたいですね。
同じ症状で悩んでる方にこの記事が参考になれば幸いです。
ではでは。




追記: ターミナルのアップデートが原因か?


本記事のエラーが起きる原因として可能性のあるものが
一つ発見されたので追記しておきます。
2019年にmacのOSが[MacOS X Catalina]にアップデートしたタイミングで、デフォルトのシェルが bash ⇨ zsh に変更されたようです。
私の使っているシェルはmacが多少古いのもありbashでした。

現在使用しているシェルは、ターミナル画面上部に記述されています。

アップデート後なのでzshと表記されています


シェルってなに??

OSとアプリケーションの間に立ってユーザからの要求をシステムに伝えるためのユーザインターフェース。コマンドを入力することで動くプログラムのことをシェルという。
人間がOSのカーネル(核)を直接いじって致命的なエラーを出さないように、貝の殻のように『OSを包み込んで守る』という役割からシェルと呼ばれている。

シェル – デジタル大辞泉の解説

単純にzshがbashの完全上位互換というわけではなく、
他にも色々なシェルの種類があり、それぞれ機能部分が
違っていたりするようです。
なので、bashを使っていたことが今回のエラー原因かどうかは
まだ確定ではありませんが、一旦このzshシェルを使用した状態で様子を見てみようと思います。

また何かあれば追記します。

以上


いいなと思ったら応援しよう!