起動時に実行されるように、このbashコマンドをどのファイルに入れるべきかと思いました。
# Start the MongoDB server
/Applications/MongoDB/bin/mongod --dbpath /usr/local/mongo/data --fork --logpath /usr/local/mongo/log
私はネットを精査していて、それは~/.bashrc
、~/profile
、/etc/bashrc
、/etc/profile
または~/.bash_profile
の間にあると思います。私はこれらを試してみましたが、それらはターミナル起動ではなくMacの起動。ファイルがありませんか?
公式にはこれらのどれもありません。 Appleが提案した方法は、 launchd を使用することです。これを設定するには、 lingon と コントロールを起動する
あなたが言及するファイルに関しては、ホームディレクトリ〜/ .bashrc、〜/ profile、〜/ .bash_profileにあるものは、あなたが端末を介してログインしたときにのみ開始されます。/etc内のものは、ホームディレクトリ内のものより前に、すべてのユーザーに対してシェルによって実行されます。ただし、ユーザーログインが行われる場合に限ります。 bash manual
Unixの起動スクリプトには/ etc/rc *が含まれていましたが、OSXの場合は単にlaunchdのものを使用してください。
OS X上で起動時にコマンドを実行するには、launchd
を使用する必要があります。
Lingon を使用したくない場合は、launchd
プロパティリストを作成する必要があります。これはXMLファイルなので、あなたの好きなテキストエディタでそれをすることができます、あるいはあなたはMac OS X Dev Toolsと一緒にインストールされるProperty List Editorを使うことができます。以下を作成してください。
<?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>
これを/Library/LaunchAgents/some.meaningful.name.plist
に保存し(管理者アカウントまたはSudo
、あるいはその両方が必要になります)、それから端末を開いて以下を行います。
Sudo launchctl load /Library/LaunchAgents/some.meaningful.name.plist
これにより、launchdは項目をロードし、起動時にMongoDBを起動します。ボーナスとして、launchd
はそれを監視し、何らかの理由で終了した場合は再開されます。アイテムを取り除くには、上記のコマンドのloadをunloadに置き換えるだけです。
your_name.app
というファイルが作成されます。ログオフし、再度ログインすれば完了です。 ;)
ログイン時にコマンドを起動するには、次のようにします。
あなたのコマンドを含むテキストファイルを作成します(bashスクリプト):
#!/bin/bash
# Start the MongoDB server
/Applications/MongoDB/bin/mongod --dbpath /usr/local/mongo/data --fork --logpath /usr/local/mongo/log
このファイルを~/Library/Startup.cmd
に保存します
chmod +x ~/Library/Startup.cmd
あなたはlaunchd
とlaunchctl
がどのようにMacOS上で動くのかを見なければならないでしょう。両方のコマンドのmanページを読むことから始めることができます。 launchctl
インターフェースを介して異なる時間にロードするようにアプリケーションを設定する方法の例については、/Library/LaunchAgents/
および/Library/LaunchDaemons/
を参照してください。
これが例です。 私はStack Overflowで見つけました。
LinuxとMac OS Xで動作するアプローチが必要な場合は、cronタスクで十分です(crontab -e
を実行してcronタスクを編集します)。
@reboot /path/to/script
私はこの問題に対する非常に簡単なunixの回答に興味があり、それを他の サイト で見つけました。これが解決策の要約です。
ログインシェルの標準は、名前に "profile"を付けたbash設定ファイルを、/ etc/profile、〜/ .bash_profile、次に〜/ .bash_login、最後に〜/ .profileの順に探すことです。ログインシェルが終了すると、〜/ .bash_logoutが読み込まれます。
私の場合は、〜/ .bash_profileを作成した後、Mac Terminalアプリの設定を開き、 "Shell opens with"オプションをデフォルトから/ bin/bashに変更しました。それでおしまい。清潔でシンプル。