본문 바로가기
OSX 맥/기타

맥 서비스 등록 (시작프로그램)

by 자바초보자 2016. 5. 10.
728x90

윈도우 Service로 등록해 두면, 부팅시 자동으로 실행되어 WAS나 MySQL 같은 서비스를 구동할 수 있다.

윈도우에서는 NSSM이라는 .bat / .exe / .cmd 파일등을 실행해주는 툴이 있고, (https://nssm.cc/)
리눅스는 inetd 라는 녀석에 등록해 둘 수 있지만, MAC은 찾질 못해 혜매다가 겨우 찾아서 포스팅한다.

필요한 사전 지식은 3가지이다.

1. xxxx.plist : 실행할 프로세스의 정보
2. launchd : 런칭데몬
3. launchctl : 런칭데몬을 제어하는 녀석

먼저 xxxx.plist는 "/Library/LaunchDaemons"에 위치하도록 하자.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
 <dict>
 <key>Label</key>
 <string>com.example.app</string> 
 <key>Program</key>
 <string>/Users/Me/Scripts/cleanup.sh</string>
 <key>RunAtLoad</key>
 <true/>
 </dict>
</plist>



위의 .plist에서 변경할 부분은 
<string>com.example.app</string> ==> 해당 되는 걸로 바꿔준다. 예를 들어 Unity Cache Server라면... 임의로 <string>com.unitycache.serverd</string> 등으로 변경한다.
<string>/Users/Me/Scripts/cleanup.sh</string> ==> 실제 .sh 파일이 실행되는 경로로 변경한다.
이렇게 변경하고 저장하면 실행시 자동으로 실행하겠다는 뜻이다.

남은건, owner를 root로 변경하고 권한을 변경하는 일이다.
간단히
su 
{패스워드 입력}
chown root xxxx.plist
chmod 644 xxxx.plist
하면 끗!

만약 root사용을 풀어 놓지 않았다면, 
su -s 
라는 명령을 내리면 패스워드를 설정하라고 나옴.


이제 마지막으로 launchd에 load하면 모든 작업이 완료된다.
sudo launchctl load /Library/LaunchDaemons/xxxx.plist
삭제는 
sudo launchctl unload /Library/LaunchDaemons/xxxx.plist

launchctl은 언제 사용하냐면... launchd에 load 완료후 다음과 같이 사용한다.
- 시작
launchctl start com.example.app
- 중지
launchctl stop com.example.app
728x90

'OSX 맥 > 기타' 카테고리의 다른 글

부트캠프 블루투스 헤드셋 드라이버  (0) 2016.06.29
맥 tomcat 서비스 등록  (0) 2016.05.10
맥 8080 -> 80 사용하기  (0) 2016.05.10