問題タブ [launch-daemon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
364 参照

macos - OSX: launchd エージェントがスクリプトを 2 回実行しているのはなぜですか?

この launchd エージェントに関連付けられた 1 つの plist があります。にリストされているエージェントが 1 つあります。このエージェントはlaunchctl list、Mac がスリープから復帰するたびに、rc.wakeup という私の bash スクリプトを呼び出します。この bash スクリプトのコピーは 1 つだけです。bash スクリプトのコードは繰り返されません。それにもかかわらず、bash スクリプト全体が 2 回実行されています。なんで?

編集: インストール bash スクリプトとアンインストール bash スクリプトを作成しました。このプログラムを誰でも使用できるように、両方のスクリプトを機能させるために、これらを連続して実行してきました。これらのファイルを不適切にインストール/アンインストールしたことが問題の原因だと思いますが、その理由はわかりません。

0 投票する
1 に答える
460 参照

mysql - デーモンを自動的にロードおよび/または開始させたくない場合、launchd ファイルはどうすればよいですか?

自動的に起動したくない MySQL 用の launchd ファイルを追加しています。ファイルで何を変更する必要があるのか​​ 疑問に思っています。

/Library/LaunchDaemons/com.mysql.mysql.plist

0 投票する
1 に答える
132 参照

macos - CFEvents を使用して Mac でデーモンからキーボード イベントを実行する

OSX でキーボード イベントをシミュレートするデーモン (ルート プロセス) に次のコードがあります。

私が User1 にいて、デーモンがルート コンテキストに読み込まれると、キーボード イベントが正常にシミュレートされます。User2 に切り替えると、Shift キーを除くすべてのイベントが正常に実行されます。現在User2でログインしているのに、なぜかShiftキーのキーボードイベントがUser1で実行されてしまいます。

また、シフト マスクを使用してみました。

これも User1 で正常に動作します。user2 に切り替えて、上記のように主要なイベントを実行すると、User1 の最前面のアプリケーションでこれらのイベントが実行されます。Shift キーを押した場合、または Shift マスクを使用してキーを押した場合のイベントは、現在ログインしているユーザーではなく、User1 に送信されます。

ログインしたユーザーでキーボードイベントが実行されることを確認できる方法はありますか?

0 投票する
1 に答える
1622 参照

objective-c - Objective C を使用して OSX で権限昇格を行う方法

Objective C で作成した Mac OSX 上のカスタム Cocoa ベースの setup.app は、ハード ドライブ全体をスキャンする必要があるためルート権限が必要なウイルス対策プログラムなどの昇格された権限タスクを実行するために、LaunchDaemon をインストールする必要があります。セットアップ アプリケーションで顧客に管理者ログインを要求し、その LaunchDaemon を /Library/LaunchDaemons にインストールするにはどうすればよいですか (~/Library/LaunchDaemons という意味ではないことに注意してください)。

私が現在それを処理している方法は、管理者権限で AppleScript を使用することです。このログインを求めるプロンプトが表示され、AppleScript は OS から文句を言われることなく、このフォルダへのコピーを実行します。しかし、それは適切な手法ではないと思います - どうにかしてこれを完全にObjective Cで行うべきでしょうか?

この場合、SMBlessJob を使用できないことに注意してください。なぜなら、最初に Launch Daemon を作成するのはこのためです。

背景情報

ノートンの AV アプリケーションがカスタム setup.app を使用するのと同じように、カスタム setup.app を作成する特別な必要があります。これは、Apple PKG および DMG インストーラーが、インストール中にサーバーから非常に大きなファイル (ウイルス定義など) をダウンロードすることを許可していないためです。つまり、Perl スクリプトまたは Bash スクリプトを実行しているときに、PKG ファイルにサーバーからファイルをダウンロードさせることができますが、インストーラーは、ダウンロードにかかる時間の間、進行状況バーをハングアップさせるだけで、他のフィードバックは何も提供しません。プログレスバーがハングしたことを除いて、ユーザーはインストーラーが壊れていると思っていますが、そうではありません。そのため、Norton が AV アプリケーションで行ったように、独自のカスタム setup.app を作成する必要がありました。

0 投票する
1 に答える
1767 参照

macos - Launchd は手動の「launchctl start」で実行されますが、StartCalendarInterval では実行されません

基本的なスクリプトを実行するだけの非常に単純な起動デーモン com.daily.vocab.plist があります。(StartCalendarInterval を使用して) 毎日特定の時刻に実行することになっていますが、それを実現することはできません。オンラインの多くの投稿では、1 ~ 2 分で実行されると書かれていますが、私にとっては実行されることはありません。

テスト中に実行時間を将来の 5 分に設定していましたが、今では毎分 0 秒で実行するように設定されているので、動作させることができます。機能したら、希望する毎日の実行時間に設定します。

このチュートリアルでアドバイスされているように、/Library/LaunchDaemons に保存されます。で手動でロードしましたlaunchctl load /Library/LaunchDaemons/com.daily.vocab.plist。実際、実行するとロードされていることがわかりますlaunchctl list。で実行するように手動で指示するとlaunchctl start com.daily.vocab、期待どおりにすぐに動作します。唯一の問題は、StartCalendarInterval が無視されているように見えることです。Macbook で Mavericks を使用しています。

ファイルは次のとおりです: com.daily.vocab.plist

理想的には、毎日午前 7 時 15 分に実行して、StartCalendarInterval代わりにセクションを次のようにしたいと考えています。

StartCalendarInterval を使用して作業するようになった LaunchDaemon の例と、それを機能させるために行ったすべてのステップ (例: running launchctl load x.x.x.plist) を共有できれば、それは本当に役に立ちます!

解決策: このローカル デーモンは実際にはユーザー エージェントである必要があるため、~/Library/LaunchAgents ディレクトリに保存してそこからロードする必要がありました。そこから、エージェントをアンロードしてエージェントを再ロードする必要もありました。

注: デーモン/エージェントは、アンロード/ロードするまで、launchd で自動的に更新されません。更新された .plist を保存するだけでは機能しません!