728x90
MacOS 에 부팅시 시작할 프로그램을 등록하기 위해 launchctl 을 이용하는 방법
애플에서 제작한 데몬과는 구분을 위해 /Library/LaunchDaemons 에 추가하기로 했다. - launchctd 로 스크립트 관리
launchctl 은 redhat 계열의 systemctl, service 랑 비슷한 데몬(서비스) 관리 명령어로 보인다.
% cd /Library/LaunchDaemons
% pwd
/Library/LaunchDaemons
% ls -la
total 64
drwxr-xr-x 11 root wheel 352 Aug 14 13:39 .
drwxr-xr-x 68 root wheel 2176 Jul 22 14:59 ..
-rw-r--r-- 1 web_admin staff 646 Aug 14 12:04 com.boos.testapp.plist
-rw-r--r-- 1 root wheel 428 Jul 17 11:42 com.microsoft.autoupdate.helper.plist
-rw-r--r-- 1 root wheel 1005 Jul 9 06:34 com.microsoft.dlp.install_monitor.plist
-rw-r--r-- 1 root wheel 739 Jul 9 06:34 com.microsoft.fresno.plist
-rw-r--r-- 1 root wheel 960 Jul 9 06:34 com.microsoft.fresno.uninstall.plist
lrwxr-xr-x 1 root wheel 103 Jun 8 2020 com.oracle.java.Helper-Tool.plist -> /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Resources/com.oracle.java.Helper-Tool.plist
-rw-r--r-- 1 root wheel 1124 Jan 28 2021 crash.report.symbolicator.plist
% launchctl load com.boos.testapp.plist
Warning: Expecting a LaunchAgents path since the command was ran as user. Got LaunchDaemons instead.
`launchctl bootstrap` is a recommended alternative.
Load failed: 5: Input/output error
Try running `launchctl bootstrap` as root for richer errors.
일반 유저(web_admin) 계정으로 com.boos.testapp.plist 로 시작하려고 진행했는데, /Library/LaunchAgents 에서 등록하라고 warning 메시지가 나오고, launchctl list 로 확인해보면 데몬이 안보인다.
스크립트를 /Library/LaunchAgents 로 옮기고 서비스 시작(load) 을 해도 "Load failed: " 오류는 동일하게 나온다.
% launchctl load com.boos.testapp.plist
Load failed: 5: Input/output error
Try running `launchctl bootstrap` as root for richer errors.
그냥 /Library/LaunchDaemons 에 스크립트를 두고 시작/등록할 수 있는 방법을 알아보았다.
방법은 스크립트의 소유자가 일반 사용자인데, root 로 바꿔서 등록하면 된다.
# chown root:wheel 스크립트 |
sh-3.2# ls -la
total 64
drwxr-xr-x 11 root wheel 352 Aug 14 13:59 .
drwxr-xr-x 68 root wheel 2176 Jul 22 14:59 ..
-rw-r--r-- 1 web_admin staff 646 Aug 14 12:04 com.boos.testapp.plist
-rw-r--r-- 1 root wheel 428 Jul 17 11:42 com.microsoft.autoupdate.helper.plist
-rw-r--r-- 1 root wheel 1005 Jul 9 06:34 com.microsoft.dlp.install_monitor.plist
-rw-r--r-- 1 root wheel 739 Jul 9 06:34 com.microsoft.fresno.plist
-rw-r--r-- 1 root wheel 960 Jul 9 06:34 com.microsoft.fresno.uninstall.plist
lrwxr-xr-x 1 root wheel 103 Jun 8 2020 com.oracle.java.Helper-Tool.plist -> /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Resources/com.oracle.java.Helper-Tool.plist
-rw-r--r-- 1 root wheel 1124 Jan 28 2021 crash.report.symbolicator.plist
-rw-r--r--@ 1 netmarble staff 991 Jun 8 2020 meerkat.system.symbol.uploader.plist
-rw-r--r-- 1 netmarble staff 385 Jun 8 2020 nas.plist
sh-3.2# chown root:wheel com.boos.testapp.plist
sh-3.2# ls -la
total 64
drwxr-xr-x 11 root wheel 352 Aug 14 13:59 .
drwxr-xr-x 68 root wheel 2176 Jul 22 14:59 ..
-rw-r--r-- 1 root wheel 646 Aug 14 12:04 com.boos.testapp.plist
-rw-r--r-- 1 root wheel 428 Jul 17 11:42 com.microsoft.autoupdate.helper.plist
-rw-r--r-- 1 root wheel 1005 Jul 9 06:34 com.microsoft.dlp.install_monitor.plist
-rw-r--r-- 1 root wheel 739 Jul 9 06:34 com.microsoft.fresno.plist
-rw-r--r-- 1 root wheel 960 Jul 9 06:34 com.microsoft.fresno.uninstall.plist
lrwxr-xr-x 1 root wheel 103 Jun 8 2020 com.oracle.java.Helper-Tool.plist -> /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Resources/com.oracle.java.Helper-Tool.plist
-rw-r--r-- 1 root wheel 1124 Jan 28 2021 crash.report.symbolicator.plist
-rw-r--r--@ 1 netmarble staff 991 Jun 8 2020 meerkat.system.symbol.uploader.plist
-rw-r--r-- 1 netmarble staff 385 Jun 8 2020 nas.plist
sh-3.2# launchctl load com.boos.testapp.plist
sh-3.2# launchctl list | grep {앱 label}
시스템 시작시 서비스가 시작되게 하려면 plist 파일에 "RunAtLoad" 키값을 true 로 설정하고 리부팅해서 확인하자.
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
참고:
https://www.reddit.com/r/macsysadmin/comments/wrn5dn/launchctl_errors/
https://gist.github.com/johndturn/09a5c055e6a56ab61212204607940fa0
'Engineering > Mac' 카테고리의 다른 글
altool 오류 on Mac (2) | 2024.10.31 |
---|---|
Command Line Developer Tool 무한 반복 설치 on Mac OS (3) | 2024.07.22 |
No suitable application records were found. Verify your bundle identifier is correct 해결 (0) | 2023.12.15 |
posix_spawn failed in Mac 해결 (0) | 2023.11.15 |
시작 프로그램 등록 in Mac (0) | 2023.11.15 |