2015-02-05 86 views
1

我有以下cron,檢查我的Neo4J數據庫是否正在運行,如果它關閉,它會關閉Node.Js應用程序,然後重新啓動數據庫,然後再次啓動應用程序。第二行是備份腳本。Cron沒有運行而命令正常,爲什麼?

* * * * * /home/noduslabs/neo4j-community-2.0.1/bin/neo4j status || /home/noduslabs/webapps/infranodus/bin/forever stopall && /home/noduslabs/webapps/infranodus/bin/forever start $HOME/webapps/infranodus/infranodus/app.js && /home/noduslabs/neo4j-community-2.0.1/bin/neo4j start 10 14 * * * ~/webapps/infranodus/bin/backup

當我從shell中運行代碼自己,如

/home/noduslabs/neo4j-community-2.0.1/bin/neo4j status || /home/noduslabs/webapps/infranodus/bin/forever stopall && /home/noduslabs/webapps/infranodus/bin/forever start $HOME/webapps/infranodus/infranodus/app.js && /home/noduslabs/neo4j-community-2.0.1/bin/neo4j start

它做一切良好。

但cron的沒有做到這一點檢查每分鐘,並且不重新啓動什麼...

PS當我做crontab -l它列舉了上面,我用它編輯EDITOR=nano crontab -e - 只是在重要的情況下。 ..

任何想法爲什麼?

謝謝!

回答

1

問題是,Neo4J是一個Java程序,它不是從cron正確運行 - 不是相同的環境變量。

我所做的是改變的cron,使其運行shell腳本

* * * * * ~/webapps/infranodus/bin/checkdb

,並在一側checkdb腳本我有:

#!/bin/bash -l /home/noduslabs/neo4j-community-2.0.1/bin/neo4j start

它只是嘗試重新啓動數據庫(如果它已經開始,它將不會啓動,因爲它是相同的過程)

所以這是一個解決方法,第一行 - 使用bash shell非常重要 - 因此它保留相同的參數。