問題タブ [launchd]

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 投票する
1 に答える
3850 参照

macos - コードが LaunchDaemon として実行されている場合、再起動せずに初めて LaunchAgent を起動するにはどうすればよいでしょうか?

LaunchDaemon があります。実行すると、SIMBL がインストールされているかどうかがチェックされます。SIMBL がインストールされていない場合は、NSTask を使用して SIMBL.pkg で /usr/sbin/installer を実行します。

次に、SIMBL の postflight スクリプトは、launchctl load コマンドを実行して、SIMBL の LaunchAgent をすぐに開始しようとします。

私の LaunchDaemon の NSTask 環境には $USER が設定されていないため、これは失敗します。

システム構成フレームワークを使用してデーモンに現在のユーザーを検出させ、それを setEnvironment を使用して NSTask に渡すと、launchctl でバグが発生します。

定義上、デーモンはユーザーセッションで動作してはならないことを認識しています。同様に、Apple は LaunchAgents を LaunchDaemons のヘルパー オブジェクトとして推奨しているようで、そのユーザー セッションの作業を行います。そのようなエージェントをすぐに稼働させる方法はありますか?

私はすべての .plist を適切な場所に置いています (再起動後に起動し、次回 launchctl が通常の読み込みを行うときに)、最初に考えたのは、launchctl にリロードするように指示することでした。ただし、これを行うコードはすべて launchctl.c でコメントアウトされています

...

0 投票する
3 に答える
9422 参照

macos - Mac OS X で別のユーザーとしてデーモンを実行する

私は今、Mac Os で jenkins 用に別のユーザーを作成し、このユーザーで実行しようとしています。新しいユーザーを作成しました:

そして、私はjenkinsユーザーとしてjenkinsを実行しようとしています:

エラーが発生しました:

jenkins ユーザーのディレクトリを作成した後:

次のエラーが続きました:

一般質問:

  1. ホームディレクトリなしで、デーモン用の_wwwのようなユーザーを作成するにはどうすればよいですか
  2. この新しいユーザーとしてスクリプトを実行するにはどうすればよいですか?

手伝ってくれてありがとう!

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

objective-c - Launch Daemon での Appkit Framework の使用

NSWorkspace を使用して、アプリケーションが起動または終了しているかどうかを確認したい。

しかし、プロセスは Launch Daemon であり、Apple のドキュメントによるとスレッドセーフではありません。

ただし、Workspace を使用するコードの一部は、起動時またはログイン時に実行されません。BSD通信経由で他のアプリから何らかのコマンドを受信した後に実行され、処理はUIなしのバックグラウンド処理ですか?

この状況で Appkit フレームワークを使用しても安全ですか? NSWorkspace API だけで他にはありませんか? 代替ソリューションはポーリングですか? あなたの提案は何ですか?

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

objective-c - rootとしてではなく、現在のMacOSXユーザーとしてプロセスを実行します

常にrootで実行されるMacOSXヘルパーアプリケーションを作成しました。それから他のアプリケーションを起動する必要がありますが、rootとしては起動しません。現在ログインしているユーザー(sudoed rootではない)から起動したい。

私は[NSTask launchedTaskWithLaunchPath:arguments:]他の多くの方法を使用しようとしましたが、それらはすべてroot権限を使用してアプリケーションを起動します。

現在MacOSXにログインしているユーザーとして、ヘルパーからアプリケーションを起動するにはどうすればよいですか?

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

python - LaunchDaemon 処理システムのシャットダウン - SIGTERM がありませんか?

リモート データベースに起動/シャットダウン時間を記録するために、LaunchDaemon として実行している小さな python スクリプトを作成しました。スクリプトが起動すると、起動時間を記録し、一時停止して SIGTERM をキャッチしてシャットダウン時間を記録するのを待ちます。ログイン/ログアウト時の LaunchAgent として、ほぼ同じワークフローが使用されています。

しかし、Apple の突然の終了メカニズムが事態を悪化させているようです。マシンがシャットダウンまたは再起動されたときに、が launchdaemons と launchagents にlaunchdのみ信号を送信しているように見えますが、これは処理できません。SIGKILL私は技術的に間違っているかもしれませんが、それは本質的に私が経験していることです..

launchctl を使用してデーモンを手動でロード/アンロードすると、SIGTERMハンドラーがトリガーされます。ただし、実際のシステム シャットダウンが発生した場合、同じコードはトリガーされません。

を防ぐ方法についての推奨事項はありSIGKILLますか?

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

macos - 自作でインストールされた Mac OS X での Jenkins SSH の問題

Jenkins CI を homebrew からインストールしました ( brew install jenkins)。したがって、それは自分のユーザーの下で実行されます。Git リポジトリへの SSH アクセスを除いて、すべて正常に動作します。Jenkins を実行するための別のユーザー (jenkins など) を作成して、別の SSH キーを作成したくありません。自分の SSH キーを使いたいだけです。コマンドラインでのリモート git リポジトリへのアクセスは、ssh キーで正常に機能しますが、Jenkins では機能しません。「許可が拒否されました(公開鍵)」エラーが発生します(ユーザー名とプロジェクトは難読化されています(<user>および<project>)):

私のsshキーを使用してgitサーバーに接続していないようです。jenkins launchagent plist に UserName キーを追加しようとしましたが、再起動しましたが、効果はありませんでした。

ジェンキンに SSH キーを使用させてリモート git リポジトリに接続させるにはどうすればよいですか?

0 投票する
3 に答える
1109 参照

macos - ココアとデーモン

私はFTPサーバーを作成しましたが、witchはftpd.commandを介してコマンドラインから起動されます。ここで、Cocoaアプリからそのコマンドを実行したいと思います。

アプリを終了したいのですが、コマンドは実行されたままになります。そして、Cocoaアプリに戻ると、FTPサーバーがまだ実行されているかどうかがわかります。

私を助けてくれる人はいますか?どうもありがとう!ジュリアン

0 投票する
3 に答える
10733 参照

bash - Bash – シグナルを受信するまでどのようにアイドル状態にすればよいですか?

サーバーを起動し、launchdがサーバーを強制終了したときに(シャットダウン時に)正常に終了するように指示するlaunchdのスクリプトを実行します。私の質問: シグナルを受け取るまでスクリプトをアイドル状態にする適切で慣用的な方法は何ですか? while-true-sleep-1 ループを使用する必要がありますか、またはこれを行うためのより良い方法はありますか?

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

cocoa - launchd の NSAppleScript

launchd サービスと Cocoa アプリがあります。ユーザーがアプリケーション フォルダーからアプリをクリックすると、アプリが実行されます。サービスから次の Apple Script を実行したい。しかし、xcode のデバッグ バージョンでは動作するように見えても、それをビルドして launchd サービスとしてインストールすると動作しません。