Cron not 运行 虽然命令没问题,为什么?
Cron not running while the commands are fine, why?
我有以下 cron 检查我的 Neo4J 数据库是否 运行ning,如果它关闭,它会关闭 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
对其进行编辑 - 以防万一...
知道为什么吗?
谢谢!
问题是 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 非常重要 - 所以它保持相同的参数。
我有以下 cron 检查我的 Neo4J 数据库是否 运行ning,如果它关闭,它会关闭 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
对其进行编辑 - 以防万一...
知道为什么吗?
谢谢!
问题是 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 非常重要 - 所以它保持相同的参数。