cron作业没有为节点js运行

时间:2014-11-28 20:09:27

标签: ubuntu cron

我想运行一个脚本,将新记录添加到mongodb中。

* * * * * echo ‘Run this command every minute’ >> file.log
* * * * * node /home/ubuntu/mongodb_tutorial-movies/getMovies.js
* * * * * node /home/ubuntu/mongodb_tutorial-movies/start.sh

更新代码:

* * * * * echo ‘Run this command every minute’ >> file.log
* * * * * node /home/ubuntu/mongodb_tutorial-movies/start.sh
* * * * * usr/local/bin/node /home/ubuntu/mongodb_tutorial-movies/getMovies.js

更新了代码2:

which node
/usr/local/bin/node


PATH=/usr/sbin:/usr/bin:/sbin:/bin:usr/local/bin/node
* * * * * echo ‘Run this command every minute’ >> file.log
* * * * * node /home/ubuntu/mongodb_tutorial-movies/start.sh
* * * * * usr/local/bin/node /home/ubuntu/mongodb_tutorial-movies/getMovies.js
* * * * * node /home/ubuntu/mongodb_tutorial-movies/getMovies.js

这里“/home/ubuntu/mongodb_tutorial-movies/getMovies.js”是js文件的位置。

Cron作业运行第一个脚本,即它将echo文本记录到file.log中,但由于某种原因它不运行第二个脚本。

我也尝试了第3个脚本但没有效果。 .start.sh

的内容
node getMovies.js

getMovies.js

的代码
var colors = require('colors'); 
var mongoose = require('mongoose');

var db = mongoose.connection;

db.on('error', console.error);
db.once('open', function() {

});

mongoose.connect('mongodb://localhost/movie-db');

var movieSchema = new mongoose.Schema({
  title: String
, rating: String
, releaseYear: Number
, hasCreditCookie: Boolean
});

var Movie = mongoose.model('Movie', movieSchema);

var thor = new Movie({
  title: 'Thor'
, rating: 'PG-14'
, releaseYear: '2011'  
, hasCreditCookie: true
});

thor.save(function(err, thor) {
  if (err) return console.error(err);
  console.dir(thor);
});

console.log(' every 6 secodns '.green);

1 个答案:

答案 0 :(得分:0)

出于安全原因,Cron的$PATH仅包含最低限度/bin/usr/bin。所以node可能不在cron的$PATH上。解决方案可能是将crontab文件中的node替换为可执行文件的完整路径,例如/opt/node/bin/node - 您可以在shell中输入which node来查找系统中的确切位置。

此外,要从crontab运行shell脚本,您不需要node可执行文件,因此请从第三行删除它。 生成的crontab将如下所示(假设/opt/node/bin/node是完整路径,请参见上文)

* * * * * echo ‘Run this command every minute’ >> file.log
* * * * * /opt/node/bin/node /home/ubuntu/mongodb_tutorial-movies/getMovies.js
* * * * * /home/ubuntu/mongodb_tutorial-movies/start.sh