-1
我知道您可以使用Automator從腳本創建應用程序,您可以從首選項應用到登錄文件中......但是真的很想知道是否可以使shell腳本運行在啓動只使用終端來設置?無需移動鼠標。順便說一句。該腳本將啓動我用於Web開發的不同服務:-)使用終端在啓動時運行shell腳本? (Mac OS X)
謝謝!
我知道您可以使用Automator從腳本創建應用程序,您可以從首選項應用到登錄文件中......但是真的很想知道是否可以使shell腳本運行在啓動只使用終端來設置?無需移動鼠標。順便說一句。該腳本將啓動我用於Web開發的不同服務:-)使用終端在啓動時運行shell腳本? (Mac OS X)
謝謝!
要運行腳本/命令,您可以使用launchd
。
你需要專門有2個文件。
1)你的shell腳本。
2)plist文件。
以下是樣本plist:另存爲com.example.exampld.plist
。標籤和plist的名字是首選蘋果給予相同。
<?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.exampled</string>
<key>LaunchOnlyOnce</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>absolute_path_to_script</string>
</array>
</dict>
</plist>
並將其放置在根據您的需要。
以下是文件夾:
|------------------|-----------------------------------|---------------------------------------------------|
| User Agents | ~/Library/LaunchAgents | Currently logged in user
|------------------|-----------------------------------|---------------------------------------------------|
| Global Agents | /Library/LaunchAgents | Currently logged in user
|------------------|-----------------------------------|---------------------------------------------------|
| Global Daemons | /Library/LaunchDaemons | root or the user specified with the key UserName
|------------------|-----------------------------------|---------------------------------------------------|
| System Agents | /System/Library/LaunchAgents | Currently logged in user
|------------------|-----------------------------------|---------------------------------------------------|
| System Daemons | /System/Library/LaunchDaemons | root or the user specified with the key UserName
|------------------|-----------------------------------|---------------------------------------------------|
根據您的需要將其無論是在第一或從上面列表中第二個文件夾。
要運行腳本,請使用launchctl
加載它或重新啓動mac。
加載和卸載腳本:
退房apple website爲可在plist中使用的密鑰。
我希望它有幫助。
keepAlive是什麼?這個鍵對shell腳本沒用。 – vadian
@vadian爲什麼?任何原因? – SkrewEverything
Shell腳本沒有runloop。 'keepAlive'只對有runloop的進程在必要時重新啓動進程很有用。此外,'LaunchOnlyOnce'和'keepAlive'是矛盾的。 – vadian