我試圖在OSX Sierra上定期運行postgres查詢,並且發現我應該使用launchd的建議。我創建了一個plist文件,它調用一個包含postgres查詢的簡單shell腳本,將plist文件複製到LaunchAgents文件夾中並加載它。但是,它似乎並沒有工作。在launchd中運行postgres查詢
如果我運行shell腳本是一些簡單的像:
echo "Hello" > /Users/agentzel/Documents/temp.txt
它工作得很好 - 每30秒,它刷新該文件以單詞「你好」。但是,如果它是像以下這樣的postgres查詢,我不會得到任何輸出。
psql -U agentzel -d dvdrental -c 'select count(*) from film;' > /Users/agentzel/Documents/temp.txt
這些命令都工作得很好,當我在命令行中運行它們,但當由LaunchAgent稱爲Postgres的查詢不起作用。我對postgres或launchd都沒有太多的瞭解,所以我希望能夠深入瞭解我做錯了什麼。
如果它是相關的,這裏是我的launchd文件:
<?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.test.database_info_sample</string>
<key>ProgramArguments</key>
<array>
<string>/Users/agentzel/Documents/test.sh</string>
</array>
<key>StartInterval</key>
<integer>30</integer>
</dict>
</plist>
(其中test.sh只包含我試圖運行命令)
編輯:如果沒有人熟悉特別的問題,有沒有簡單的方法來調試launchd?如果launchd或postgres報告錯誤,是否有文件可以檢查錯誤消息/代碼?
嘗試重定向錯誤輸出到一個文件,以'PSQL ...> ... 2> error.txt'它可能給你一個線索,什麼是錯的 – Eelke