윈도우 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
'OSX 맥 > 기타' 카테고리의 다른 글
부트캠프 블루투스 헤드셋 드라이버 (0) | 2016.06.29 |
---|---|
맥 tomcat 서비스 등록 (0) | 2016.05.10 |
맥 8080 -> 80 사용하기 (0) | 2016.05.10 |