2016-12-04 232 views
-1

我知道您可以使用Automator從腳本創建應用程序,您可以從首選項應用到登錄文件中......但是真的很想知道是否可以使shell腳本運行在啓動只使用終端來設置?無需移動鼠標。順便說一句。該腳本將啓動我用於Web開發的不同服務:-)使用終端在啓動時運行shell腳本? (Mac OS X)

謝謝!

回答

1

要運行腳本/命令,您可以使用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中使用的密鑰。

我希望它有幫助。

+0

keepAlive是什麼?這個鍵對shell腳本沒用。 – vadian

+0

@vadian爲什麼?任何原因? – SkrewEverything

+0

Shell腳本沒有runloop。 'keepAlive'只對有runloop的進程在必要時重新啓動進程很有用。此外,'LaunchOnlyOnce'和'keepAlive'是矛盾的。 – vadian

相關問題