Cron没有运行,而命令是好的,为什么?
我有下面的cron,检查我的Neo4J数据库是否正在运行,如果它closures,它会closuresNode.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
– 只是万一重要…
任何想法为什么?
谢谢!
问题是,Neo4J是一个Java程序,它不是正确运行的cron – 不是相同的环境variables。
我所做的是更改cron,以便它运行一个shell脚本
* * * * * ~/webapps/infranodus/bin/checkdb
并在我checkdb
脚本的一面:
#!/bin/bash -l /home/noduslabs/neo4j-community-2.0.1/bin/neo4j start
它只是试图重新启动数据库(如果它已经开始,它将无法启动,因为它是相同的过程)
所以这是一个解决方法,第一行 – 使用bash
shell非常重要 – 所以它保持相同的参数。