問題タブ [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.
unix - MacOSでシステム全体のデーモンをロードする方法
このコマンドを使用してdaemon-appをロードしようとしていますlaunchctl load /Library/LaunchDaemons/myPlistFileName
。正常に動作しますが、ユーザーがシステムにログインしている間のみです。
ユーザーがシステムにログインしていなくてもロードされたままになるdeamon-appをロードするにはどうすればよいですか(windows-servicesなど)??
コマンドsudo launchctl load /Library/LaunchDaemons/myPlistFileName
は私にエラーを与えます->ロードするものが見つかりません
これを行う正しい方法はどれですか?
編集:私のPlist-ファイル
現在はそうです:system-startで、私のデーモンはroot-permissionsで始まります。ユーザーアカウントでログインした後、daemon-processが再起動し、ユーザーがプロセスの新しい所有者になります
launchd - launchd を使用してアプリケーションの複数のインスタンスを起動するにはどうすればよいですか?
私のアプリケーションは 2 つの部分に分かれています。メイン アプリケーションとヘルパー ツール。ヘルパー ツールは、昇格された権限でタスクを実行します。
launchd plist は次のようになります: (重要な設定のみが含まれています。)
ソケットへの接続ごとに新しいヘルパー インスタンスを起動する方法はありますか?
あるいは、複数のリクエストを処理するための既存のテンプレートはありますか? (私は今これを自分でやっていますが、これは非常に多くの醜いコードです。)
apache2 - MacPorts Apache2 が起動時に起動しなくなった
2 台の異なるマシンで最近気付いたのは、MacPorts 経由でインストールされた Apache2 が起動時に起動を停止したように見えることです。正直なところ、以前はそうであったと断言することはできませんが、LaunchDaemon のインストールはインストール プロセスの一部であるため、気付くと思います。実際、LaunchDaemon をリロードしようとすると失敗します。
Apache を手動で ( を使用してsudo apachectl restart
) 起動しない限り、プロセス リストで "apache2" または "httpd" を grep すると、次のようになります。
1410639199 6960 6792 0 0:00.00 ttys001 0:00.00 egrep Apache2|httpd
デーモン自体は配置されているようですが、実行可能ファイルはありません。私が知る限り、関連する実行可能ファイル (httpd と apachectl) は誰でも実行可能です。
他の誰かがこれに気づきましたか?何か案は?
アップデート
以下の要求に従って、実行しlaunchctl list
ました。リストは長く、どのように切り取ればよいかわかりませんが、org.macports.*
項目がリストされていないと言えば十分です。私の MySQL デーモンは同じ方法でロードされるため、それ自体が興味深いものです。動作しますが、リストにも表示されません。出力全体が本当に必要かどうか教えてください。
アップデート
私はlaunchctl list
sudoの下で実行したと思いましたが、以下のmipadiのコメントに促されて、実行したことを確認し直しましたが、間違っていると思いました。sudo で実行すると、MacPorts 項目が表示されます。
参考になるかどうかわかりませんが、もう少し情報を。
アップデート
LaunchDaemons and Environment Variablesで、別の、しかし関連する質問をしました。詳細がわかり次第、両方の質問を更新します。
アップデート
今日は、メーリング リストの入力に基づいて、ワイルドカード ホーム ディレクトリを使用してみました。学術的には、私が望むよりも少し包括的ですが、実際には、このコンピューターを使用しているのは私だけです。確かに、Apache の設定ファイルを置いている唯一の人です。
不運にも...
macos - launchd で startCalendarInterval を使用して x 分ごとにジョブを実行します (cron でステップ値「*/x」を使用するように)?
私は mac osx 10.6 を使用しています。また、minutes パラメータによって、ジョブが実行される時間を 1 時間から何分過ぎたかが決まるようです。しかし、毎正時 x 分ごとにジョブを実行するように設定するにはどうすればよいでしょうか。
いくつかの数字の配列と、「*/5」の 1 つの文字列を含む配列として分を設定しようとしました。つまり、crontab の 5 分ごとの構文に似ています。
python - launchd スケジューリングを Python プログラムに置き換える方法
Mac OS X システムのスタートアップ プログラムlaunchdは、ジョブ スケジューリングを有効にします ( cronに似ています) 。launchdエージェントを作成することにより、次のイベントのいずれかを介してプログラムをトリガーできます。
- 一定の時間が経過した
- 特定の暦日が来ました
- ファイル パスが変更されました
- 何かが特定のディレクトリ (キュー ディレクトリ) に配置されている
- ボリュームがマウントされました
私は以前、OS X システムを自動化するための Python スクリプトのコレクションを開始するために launchd に依存していました。ただし、新しいスクリプトを追加すると、それを起動するための新しい launchd エージェントのインストールも必要になることが多いため、 launchdを方程式から除外したいと考えています。Python プログラムは、上記のようなイベントが発生するのを待って監視し、適切なルーチンをディスパッチする必要があります。
上記のようなイベントを検出するのに適した Python モジュールはありますか? または、より一般的な質問として、Python (およびおそらく AppScript ブリッジ経由の AppleScript) を使用して、この設定でlaunchdを置き換えるにはどうすればよいですか? 質問がかなり曖昧で申し訳ありません。読書の提案も大歓迎です。
macos - 起動デーモンから画面セッションを生成します
WindowServer の起動時にデバッガをアタッチする launchd .plist を作成しました。スクリプトの主要部分は次のようになります
これにより、gdb が WindowServer にアタッチされている分離画面セッションが開始されます。
ただし、これにより、Snow Leopard の launchd でエラー状態が発生し、エラー メッセージがログに出力されるようです。
「... システム Mach ブートストラップでは許可されていません」というメッセージは、システムの起動からの経過時間に関係なく発生することに注意してください。
画面セッションを生成できるようにするための回避策はありますか?
launchd のマンページによると、
デーモンは、UI を表示したり、ユーザーのログイン セッションと直接やり取りしたりしないでください。
これは、launchd がこの動作を別のセッションと対話し、それを拒否していると見なしていることを示唆している可能性があります。コードはここにありますが、私はそれに慣れていません: http://launchd.macosforge.org/trac/browser/trunk/launchd/src/launchd_core_logic.c#L8250
macos - 起動されたエージェントが起動していません
launchd agent
MacOSXシステムにログインするすべてのユーザーに対して簡単なアプリケーションを実行するを作成しようとしています。
名前の付いたファイルを作成し、com.mycompany.myapp.plist
に配置しました/Library/LaunchAgents
。そのファイルの内容は次のとおりです。
StartInterval
エージェントが自動的に起動すると思ったので、最初はキーを設定していませんでした。問題は、次の2つのコマンドを手動で発行しない限り、エージェントが起動しないことです。
さらに、実行するlaunchctl list com.mycompany.myapp
と、次の出力が得られます。
LimitLoadToSessionType
パラメータが変更されていることに注意してください。
ここで何かが足りませんか?このようなエージェントを起動するための別のメカニズムはありますか?なぜLimitLoadToSessionType
プロパティが変更されたのですか?
c++ - ユーザーコンテキストでデーモンからエージェントを起動
Mac OSX 10.6 マシンのログイン コンテキストで実行される起動デーモンがあります。そのエージェントからユーザーごとにエージェントを起動し、ユーザーのログイン コンテキストでエージェントを実行したいと考えています。ただし、エージェント アプリケーションへの正確な引数を非常に慎重に制御する必要があるため、デーモンのように launchd エージェントを使用することはできません。
ログインしたユーザーのコンテキストで実行されるプロセスを作成するにはどうすればよいですか? trueseteuid
とsetuid
呼び出しを行いましたが、これらはエージェント アプリケーションの実行コンテキストを変更しません。
これが Apple の推奨するやり方ではないことは承知していますが、私には選択の余地がありません。デーモン アプリケーションの設計は非常に柔軟性がありません (多くの異なるシステムで実行する必要があります)。ログイン コンテキストで実行されているデーモンから、ログイン ユーザーの GUI コンテキストでアプリケーションを実行できるようにする回避策はありますか?
私は C++、Carbon & Cocoa を使用しています。
macos - launchd.confにスペースがあるsetenv変数?
私は最近Macを入手したLinuxユーザーです。IDEをセットアップしようとしていますが、MacがGUIアプリに.bashrc /.bash_profile/などを使用していないことがわかりました。したがって、環境変数を必要とするGUIアプリがある場合は、/ etc/launchd.confでそれを行うことになっているようです。
つまり、このファイルはcshスタイルのsetenv構文( "export key='value'"ではなく"setenvkey value")を使用しているため、スペースを含む変数ができたので、どうすればよいかわかりません。 。何も機能していません。これは私がそれをテストしようとしたものです:
再起動後、変数#5と#8のみが存続します。(スペースのないもの。)残りはどれも私の環境にはありません。
objective-c - NSTimer で複数の毎日のイベントをスケジュールしますか?
に保存されているスケジュール キャッシュがありNSDictionary
ます。
以下の例では、20120 年 1 月 13 日 2:00PMと2012 年 1 月 13 日 2:05PMのスケジュール時刻があります。これらの両方をキューに追加して、独自に起動するにはどうすればよいですか?