LaunchAgentsのプログラムが再ログインで起動されない

自作プログラムをログイン時に起動されるようにplistを作成して~/Library/LaunchAgentsに登録しlaunchctl  loadで起動したのですが、ログインし直しても何故か再起動されません。

plistには RunAtLoad=YES KeepAlive=YESを記述しています。

なお、Sequoia15.3.2(M4)なのですが、Sonoma14.3(Intel)では再起動できていました。

仕様が変わったのでしょうか

MacBook Pro 14″, macOS 15.3

投稿日 2025/03/24 12:59

返信
返信: 5
並べ替え順: 

2025/03/24 15:03 macha184 への返信

こんにちは。


私はMonteley(intel)なので条件が違いますが。


>RunAtLoad=YES KeepAlive=YESを記述して


端折らずにちゃんと書いた方がいいと思う。。


わたし的には、

RunAtLoad タグは</true>とするし、

LaunchAgentsは「起動時のみ実行」なので

LaunchDeamonsに入れた方がよさげだし、

KeepAliveタグは</true>とする、かなぁ。

(YESはよく知らない)


chown、chmod はちゃんと設定してますよね?


load後や再起動後、launchctl listで確認してみた?


ま、気がつくのはそんなところ?かな?


これ以上は再現できるplistをちゃんと提示しないとわからないのでは?


返信

2025/03/24 16:18 亀どん への返信

返信ありがとうございます。

plistは

--------

<dict>

<key>Label</key>

<string>jp.xxx.xxxx</string>

<key>Program</key>

<string>/opt/xxx</string>

<key>ProgramArguments</key>

<array>

<string>/opt/xxx</string>

</array>

<key>RunAtLoad</key>

<true/>

<key>KeepAlive</key>

<true/>

<key>WorkingDirectory</key>

<string>/opt</string>

<key>StandardOutPath</key>

<string>/Users/x/Library/Logs/x.log</string>

<key>StandardErrorPath</key>

<string>/Users/x/Library/Logs/x.log</string>

</dict>

-----こんな感じです(”YES”と記載したのはXcodeでplistを表示させた時の内容です。)

最初だけlaunchctl listでは表示されます。再ログインすると消えます。

Agentなので自ユーザIDのオーナーで 0644 です。


訂正です。Sonoma14.7.4でした。


返信

2025/03/24 16:42 macha184 への返信

私は(知識がないので)詳しいことはわかりませんが、


以下のように「システム設定>一般>ログイン項目と機能拡張>バックグラウンドでの実行を許可」にある"sh"のチェックをオンにしないと実行されませんでした。


返信

2025/03/24 16:59 Pajerow への返信

情報ありがとうございます。

shは登録していません。これだとSonomaで再起動される理由がわかりません。

実はブート時に起動するプログラムもあり、これもやはりSonomaでは再起動され、Sequoiaでは再起動されません。なのでshでは解決できずcrontabで解決するのかもしれません。

でもやはりlaunchctlで解決したい次第です。

でもありがとうございました

返信

2025/03/25 16:13 macha184 への返信

自己レスです。

理由は不明ですが、

[設定]→[一般]→[ログイン項目と機能拡張]の[バックグラウンドでの実行を許可]一覧にある自作プログラムをビルドしたチーム名が表示されていたのでそれをオンにしたらリログインで再起動されました。

ちなみに自作サーバプログラムもリブートして再起動されました。

お手数をおかけしました。

返信

LaunchAgentsのプログラムが再ログインで起動されない

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。