LoginSignup
0
0

macOS版Goodnotesでテキスト入力ができなくなったときに強制終了する

Posted at

macOS版Goodnotesを使っていると,テキスト入力ツールが反応しなくなる(文字入力を受け付けなくなる)ときがあります。この場合,Goodnotesアプリを再起動する必要があります。

軽度の症状の場合,単に Command+Q で終了させれば解決するのですが,多くの場合,単に Command+Q で終了させて再起動するだけでは,同じ症状が再発してしまいます。このような場合,ps -ax コマンドで調べてみると,終了させたはずの Goodnotes のプロセスが残存しており,暴走状態になっていることが多いです。このような場合,Command+Option+escからの画面でも強制終了できず,コマンドラインから暴走している Goodnotes プロセスを強制終了させる必要があります。

killallpkill による Goodnotes のプロセス終了

ターミナルから,Goodnotesのプロセスを,名前を指定して終了させるには,killallpkill コマンドが使えます。

$ killall -KILL Goodnotes
$ pkill -KILL -i -f Goodnotes

killallpkill はどちらもプロセスを終了させるコマンドです。-KILL で強制終了シグナル (-9-SIGKILLでも同じ)を送っています。killall はプロセス名自体が完全一致したプロセスのみを終了します。pkill の場合は部分一致検索となります。-i を付けておくことで大文字・小文字を同一視しています。さらに,-f を付けることで,プロセス名本体のみならず,パス名などコマンドライン全体を見て,わずかにでも一致する部分があれば終了させます。

grep & kill による古典的方法

便利な killallpkill に頼らない,古典的方法も紹介しておきます。

古典的手法(手動)

まず,ps -ax の結果を grep することで,暴走しているGoodnotesのプロセスID (PID)を特定します。

$ ps -ax | grep -i Goodnotes
 1675 ??         0:57.00 /Applications/Goodnotes.app/Contents/MacOS/Goodnotes
 1677 ??         0:57.10 /Applications/Goodnotes.app/Contents/MacOS/Goodnotes
28487 ttys000    0:00.01 grep -i Goodnotes

このうち,grep 自身のプロセスは除いて,他のGoodnotes関連のプロセス(複数あれば全部)を強制終了させます。

$ kill -KILL 1675 1677

PIDの特定と kill を自動化させる

GoodnotesプロセスのPIDを毎回目で探すのが面倒なので,これを自動化しましょう。

まず,grep 自身のプロセスを除くには,次のトリックを使います。

$ grep -i [^]]Goodnotes

[^]] の部分がトリッキーですね。ここは正規表現で,「] 以外の任意の1文字」を意味します。grep -i [^]]Goodnotes というプロセスは,Goodnotes という文字の直前に ] が存在するので,この正規表現にマッチせず,grep の結果から除外されるわけです。

grep された結果からPID部分を取り出すには awk を使います。それを kill -KILL の引数として並べるには,xargs コマンドが使えます。

パイプでこれらをつなげると,以下のようになります。

$ ps -ax | grep -i "[^]]Goodnotes" | awk '{print $1}' | xargs kill -KILL

シェル関数化してコマンド化する

Goodnotes以外にも使えるように,これをシェル関数にまとめておきましょう。自作のpkillコマンドが存在しない環境下であっても,pkill コマンドもどきとして使えます。

function taskkill () {
	if [ $# -ne 1 ]; then
		echo "Usage: taskkill <PROCESS_NAME>" 1>&2
		return 1
	fi
	ps -ax | grep -i "[^]]$1" | awk '{print $1}' | xargs kill -KILL
}

.bashrc / .zshrc などでこのように定義しておくことにより,

$ taskkill Goodnotes

のような指定ができるようになります。

0
0
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
0
0