2013-08-21 94 views
0

我希望有人能幫助我解決這個問題。我一直在努力,整天...啓動時的Mac OSX LaunchDaemon,使用SSH的Shell腳本

我想LaunchDaemon在啓動時執行一個shell腳本。這裏是我的plist文件,位於/Library/LaunchDaemons/com.mhi.backup.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.mhi.backup</string> 
    <key>UserName</key> 
    <string>Joel</string> 
    <key>GroupName</key> 
    <string>Admin</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>/usr/local/bin/mhi_websites_backup.sh</string> 
    </array> 
    <key>RunAtLoad</key> 
    <true/> 
</dict> 
</plist> 

它執行正確的,當我從終端(launchctl負載/Library/LaunchDaemons/com.mhi加載它。 backup.plist),但不是在啓動時。

這裏是我的腳本,以供參考:

#!/bin/bash 
sleep 15 #delay script to ensure time for network connection 
ssh [email protected] << HERE 
    mysqldump -u <user_name> -pPASSWORD --all-databases | lzma > alldatabases.sql.lzma 
    tar cfa backup-`date '+M%mD%dY%y'`.tar.lzma webapps alldatabases.sql.lzma 
    exit 
HERE 
scp [email protected]:backup-`date '+M%mD%dY%y'`.tar.lzma /Users/Joel/Desktop 

可能有人請幫忙嗎?

非常感謝,

JG

+0

Excecute'{set;出口 ; } | sort> cmdLineEnv'和'{set;出口 ; } |按照環境排序> startupEnv,然後是'diff * Env'?祝你好運。 – shellter

+0

看起來像一個類似的plist來挖礦,但我把它放在LaunchAgents不LaunchDaemons ..不知道有什麼區別。 –

+0

@shellter唯一的區別是PIPESTATUS。在startupEnv中,PIPESTATUS =([0] =「0」[1] =「0」);在cmdLineEnv中,PIPESTATUS =([0] =「0」)。我不知道這甚至意味着什麼...... – user1403777

回答

0

,你看到什麼錯誤?我預計你可能在這裏有一個PATH問題。 mysqldump在哪裏?如果它在/usr/local/bin中,那麼你可能想要明確說明,或者在/etc/launchd.conf中設置默認路徑。

+0

mysql轉儲正在遠程服務器上執行。我懷疑這個問題可能與我的用戶的ssh密鑰沒有被使用有關,如果環境是root的話,但我不確定測試這個假設的確切語法。 – user1403777

+0

我明白你的意思了。 LaunchDaemons以一種有趣的狀態運行,不受GUI限制,但它們是'root',應該能夠讀取'〜root/.ssh'你在控制檯中是否有任何錯誤? –

0

是由root擁有的plist嗎?如果/Library/Launch{Agents,Daemons}/中的plist不屬於root,則可以在不使用sudo的情況下使用launchctl加載,但在登錄時不加載。

您也可以嘗試移動的plist到/Library/LaunchAgents/並添加LimitLoadToSessionType鍵:

<key>LimitLoadToSessionType</key> 
<array> 
    <string>LoginWindow</string> 
    <string>Aqua</string> 
</array> 

Daemons and Agents技術說明。