命令没问题时Cron没有运行,为什么?

时间:2015-02-05 23:27:46

标签: node.js neo4j cron crontab

我有以下cron检查我的Neo4J数据库是否正在运行,如果它关闭,它会关闭Node.Js应用程序,然后重新启动数据库,然后再次启动应用程序。第二行是备份脚本。

* * * * * /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 个答案:

答案 0 :(得分: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非常重要 - 所以它保持相同的参数。