Tôi muốn máy chủ của mình thực thi tập lệnh nút mỗi phút. Chương trình thực hiện hoàn hảo nếu tôi thực thi tệp theo cách thủ công (./main.js
), vì vậy tôi khá chắc chắn đó không phải là vấn đề. Nhưng khi tôi giao nó cho cron để thực hiện, không có gì xảy ra.Tại sao cron không thực thi tập lệnh node.js của tôi?
Đây là dòng từ tệp cron.
*/1 * * * * /home/bryce/scripts/wudu/main.js
Và đây là một bản ghi mẫu:
Oct 11 15:21:01 server CROND[2564]: (root) CMD (/home/bryce/scripts/wudu/main.js)
Các thực thi: home/bryce/scripts/wudu/main.js
#!/usr/bin/env node
var program = require('commander');
var v = require('./cli/validation');
var a = require('./cli/actions');
program
.version('0.0.1')
.option('-u, --url', 'Register url')
.option('-s, --selector', 'Register selector')
.option('-p, --pagination', 'Register pagination')
.option('-i, --index', 'Pass an index, to destroy')
.parse(process.argv);
var args = process.argv.slice(2),
mode = v.mode(args[0]),
options = v.hasArgs(mode, program);
a.init(mode, options);
Bất cứ ý tưởng tại sao tôi nhận được im lặng vô tuyến? Một nơi khác tôi nên tìm cách gỡ lỗi?
UPDATE:
Tôi tin rằng vấn đề đã làm với filepaths tương đối của tôi, và main.js được thực hiện từ bên ngoài thư mục riêng của mình.
Vì vậy, bây giờ, tôi đã đặt exe.sh
trong thư mục wudu
. Có vẻ như sau:
#!/bin/bash
cd ${0%/*}
./main.js mail
exit
Bây giờ, tôi đã đặt cron để thực thi tệp này mỗi phút. Tôi đã thử thực thi tệp này từ các thư mục khác và nó hoạt động như mong đợi. Nhưng một lần nữa, cron không nhặt nó lên.
Có thể kiểm tra các đặc quyền thực thi trên tệp. –
Điều đó làm tôi rối tung trước đó, nhưng tôi đã sửa nó rồi. Cảm ơn mặc dù. –
tên đường dẫn tương đối: 'var v = require ('./ cli/validation');' Công việc cron của bạn không được khởi động trong thư mục '/ home/bryce/scripts/wudu /', nhưng pwd có lẽ là '/ home/bryce/'khi được gọi từ cron. – wildplasser