ここではMacのターミナルでプロセスの終了などの管理に利用するターミナルコマンド「kill」「killall」について、コマンドの使い方を解説します。
ターミナルコマンド「kill」
kill
コマンドは、macOS や他の Unix 系オペレーティングシステムで使用される、プロセスを終了させるためのコマンドです。
特定のプロセスに対してシグナルを送信し、プロセスの終了や再起動などのアクションを制御します。
「kill」コマンドの基本的な構文
kill コマンドの基本的な構文は以下の通りです。
kill [シグナル] プロセスID
「kill」コマンドでよく使われるシグナル
- SIGTERM(または -15): プロセスに終了を求めるデフォルトシグナルです。これは安全にプロセスを終了させるためのもので、通常はプロセスがクリーンアップを行い終了します。
- SIGKILL(または -9): プロセスを即座に強制終了させます。このシグナルはプロセスによって無視されず、OSによって直接処理されます。データの損失や不整合を引き起こす可能性があるため、最後の手段として使用します。
- SIGHUP(または -1): プロセスに再起動を要求するシグナルです。多くのデーモンプロセスはこのシグナルを受け取ると設定を再読込みします。
「kill」コマンドの例
1.特定のプロセスを終了
プロセスID 1234 のプロセスをデフォルトシグナル(SIGTERM)で終了させます。
kill 1234
2.プロセスを強制終了
プロセスID 5678 のプロセスを強制的に終了させます(SIGKILL)。
kill -9 5678
3.複数のプロセスを終了
プロセスID 1234
と 5678
のプロセスを終了させます。
kill 1234 5678
4.プロセスに再起動シグナルを送信
プロセスID 1012 のプロセスに再起動(SIGHUP)シグナルを送信します。
kill -1 1012
プロセスを終了させる際には、kill コマンドを慎重に使用することが重要です。特に SIGKILL を使用する際には、プロセスが中途半端な状態で強制終了されることでデータが破損する可能性があるため、必要な場合のみに限定して使用してください。
また、プロセスIDを正確に指定することが必須であり、誤って他の重要なプロセスを終了させないように注意が必要です。
ターミナルコマンド「killall」
killall
コマンドは macOS や他の Unix 系オペレーティングシステムで使用されるコマンドで、指定した名前を持つすべてのプロセスを終了させるために使います。
このコマンドは、プロセス名に基づいて一致するすべてのプロセスに対してシグナルを送信することができるため、特定のアプリケーションやサービスを一括で再起動したり終了させたりする際に便利です。
「killall」コマンドの基本的な構文
killall コマンドの基本的な構文は以下の通りです。
killall [オプション] プロセス名
「killall」コマンドでよく使われるオプション
- -s または –signal [シグナル]: 送信するシグナルを指定します。デフォルトは SIGTERM です。
- -i または –interactive: それぞれのプロセス終了前に確認を求めます。
- -u [ユーザー]: 指定したユーザーが実行しているプロセスのみを対象とします。
- -v または –verbose: 処理の詳細を表示します。
「killall」コマンドの例
1.特定のアプリケーションを終了
firefox という名前のプロセスを終了させます。
killall firefox
2.プロセスを強制終了
chrome という名前のプロセスを強制的に終了させます(SIGKILL を使用)。
killall -s SIGKILL chrome
3.特定のユーザーのプロセスのみ終了
ユーザー john が実行している node プロセスを終了させます。
killall -u john node
4.終了前に確認を求める
nginx プロセスを終了させる前に、確認を求めます。
killall -i nginx
killall コマンドは非常に強力で、特に多くのプロセスが同じ名前で動作している場合は、大量のプロセスを一度に終了させることがあります。
したがって、特にシステム関連の重要なプロセスを誤って終了させないよう、使用する際には慎重に操作することが必要です。
また、運用中のサーバーなどでは、サービスの可用性に影響を与える可能性があるため、使用前に十分な調査とテストが推奨されます。