\r\n\r\n

posixシグナルを使用したmacアプリケーションの昔ながらのトラブルシューティング

posixシグナルは、macosの中心にあるunix基盤の結果ですが、なぜそこにあるのか、そして、それでも使えるのか...。

アクティビティモニタには、プロセスにシグナルを送るための謎のメニューオプションがある。と思ったことはないだろうか。選択すると、SIGINTやSIGHUPなど、よくわからない曖昧な用語が表示されます。では、その信号とはいったい何なのか。

これらの信号は、MUOS Core UNIX Foundationによるものです。ターミナルには、このような信号がいくつか組み込まれています。実行中のコマンドを停止するためにCtrl+Cを押すと、現在実行中のコマンドを中断して停止するために、プロセスにSIGINTを送信していることになるのです。これは、アプリケーションが互いに通信するための最初の方法の1つで、古いPOSIX(Portable Operating System Interface)規格の一部だった。

システムがどのように動作するかの基本を知ることは良いことですが、これらの信号を利用して、正しく動作していないアプリケーションに関する情報を取得することもできます。

株式会社ポシックス(以下、ポシックス)は何ですか?

POSIXは、UNIXおよびUNIX系OSの基本規格です。これらの互換システムのうち、macOSはUnixと互換性があります。その核となるのは、NeXTSTEPをルーツとするUnixのコアであるDarwinで、それ自体は、Unixの原型の一つであるBSDの分派である。

POSIXは、これらすべてのオペレーティングシステムが期待される方法でコードを処理することを保証し、開発者は自分のコードが本当に移植可能であることを知ることができる。この信号を他のマシンのプロセスに送ると、自分たちが期待し、処理できる形式でデータが戻ってくる。これは、約40年にわたるコンピュータの歴史を簡略化したものですが、大まかな内容はご理解いただけると思います。

これらのシグナルは、macOSのUnix基盤を構成する最も基本的なデーモンと通信する際に最適です。デーモンは、コンピュータの基本機能を実行するバックグラウンドプロセスで、macOSで言うところの「サービス」です。悪名高いディスカバリーはその一例である。アップデートでネットワークの問題を引き起こすと考えられていた別のサービス、mDNSResponderを置き換えたのはOS X Yosemite 10.10でした。

アプリケーションの受け取り方によっては、アプリケーションを終了させるシグナルを送ることで、いわゆるコアダンプを作成することができます。コアダンプには、実行中のプログラムに関する現在のすべてのデータが含まれています。これらは、常にクラッシュするアプリケーションのトラブルシューティングに重要です。Macの場合、これらのダンプはMach-Oファイル形式で、XcodeというmacOSの開発環境で読むことができる。ほとんどのユーザーは、おそらくこれらをあまり使用しないと思いますが、アプリケーションの問題でイライラしている場合、開発者に送ってサポートを受けるのに役立ちます。

Mach-Oのファイルフォーマットは、Machのマイクロカーネルと同じ名前である。MachはBSDほど伝説的な存在ではないので、あまり報道されませんが、AppleのOSが他のUnixの亜種と違うのは、この2つがあるためです。

また、どのように使えばいいのでしょうか?

アプリのアップデートをしたり、新しいアプリをダウンロードしたりすると、開くたびにハングアップしてしまうことは、誰もが経験したことがあるのではないでしょうか。アップルメニューから強制終了を開くと、アプリが無反応であることが表示されます。さらに悪いことに、バックグラウンドのプロセスがシステムの足を引っ張っていることもあります。

アクティビティモニタを開き、応答していないプロセスをクリックします。次に、「表示」メニューから「信号を処理に送る」を選択します。プロセスに送信する信号を選択するメニューがポップアップ表示されます。 信号を選択し、送信を押してください。

ターミナルがお好みの方は、すでに使い慣れたコマンドを使用することになります。

kill

を追加した場合、このコマンドはプロセスを停止させるために使用されます。

-s

数字を追加することで、killされるプロセスにシグナルを送ることができます。

kill

パンフレットのページです。

  • 1-HUP (ハングアップ)
  • 2 - INT (割り込み)
  • 3 - 撤退(exit)
  • 6-ABRT (中止)
  • 9 - 殺害(捕獲不可、無視できない殺生)
  • 15 - 継続時間(ソフトウェア端子信号)

他にもさまざまな信号を送ることができますが、これらは最も一般的なものにすぎません。

どのような時に使うのですか?

POSIX シグナルの扱い方がわかったので、ハングしたプロセスを停止させるためにシグナルを **きれいに** 使えるようになりました。公平に見て、このコードを毎日使うことはないでしょう。アプリケーションの異常終了について開発者と連携する場合や、社内アプリケーションのベータテストをシステム管理者が行う場合などに、これらのコードを利用することで必要な情報を入手することができます。

アプリケーションがこれらのダンプを作成するようにコード化されている場合、これらのダンプは、ディレクトリ

/cores

クラッシュしたりハングアップしたアプリケーションのデータを取得する際に、見つけやすいディレクトリにすること。

ls -a

そのディレクトリにあるすべてのファイルが表示されますので、musicコマンドを使って、よりアクセスしやすいディレクトリにコピーします。

mv filename destination

.

最終用途

command cd /cores

ディレクトリに切り替えて

ls -a

を使うだけです。

mv filename /Users/username/Documents

(ファイル名とユーザー名を入れ替えてください)。

長年Unixを使ってきたユーザーがMacに移行する場合、他にあまり知られていない機能はありますか?Mac OSのオープンソース基盤のみを使用したプロジェクト、PurrdWin.をチェックしてみたいと思われた方は、ぜひコメントでその内容を教えてください。また、POSIXシグナルがMacの厄介な問題を解決してくれた時も教えて欲しいです。

POSIXシグナルをトラブルシューティングに使用したことがありますか?

写真提供:Dean Drobot/Shutterstock

  • 2021-03-16 15:08 に公開
  • 閲覧 ( 18 )
  • 分類:IT

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ