Để chạy lệnh khi khởi động trên OS X, bạn cần sử dụng launchd
.
Nếu bạn không muốn sử dụng Lingon , bạn cần tạo launchd
Danh sách tài sản. Đây là một tệp XML, vì vậy bạn có thể làm điều đó với trình soạn thảo văn bản yêu thích của mình hoặc thay vào đó, bạn có thể sử dụng Trình soạn thảo danh sách tài sản được cài đặt với Mac OS X Dev Tools. Tạo như sau:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>some.meaningful.name</string> <!-- org.mongodb.mongodb perhaps? -->
<key>OnDemand</key>
<false/>
<key>UserName</key>
<string>anAppropriateUser</string>
<key>GroupName</key>
<string>anAppropriateGroup</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/MongoDB/bin/mongod</string>
<string>--dbpath</string>
<string>/usr/local/mongo/data</string>
<string>--fork</string>
<string>--logpath</string>
<string>/usr/local/mongo/log</string>
</array>
</dict>
</plist>
Lưu cái này vào /Library/LaunchAgents/some.meaningful.name.plist
(bạn sẽ cần một tài khoản quản trị viên và / hoặc sudo
), sau đó mở một thiết bị đầu cuối và làm:
sudo launchctl load /Library/LaunchAgents/some.meaningful.name.plist
Điều này sẽ khiến launchd tải mục sẽ khiến nó khởi động MongoDB khi khởi động. Như một phần thưởng, launchd
sẽ giám sát nó và, nếu nó thoát vì bất kỳ lý do gì, nó sẽ được bắt đầu lại. Để thoát khỏi mục chỉ cần thay thế tải trong lệnh trên bằng unload.
/etc
đó thì có nên chạy khi khởi động không? Có vấn đề gì trong đó không?