Tout simplement, j'ai un script de noeud que je veux exécuter une fois par mois.
30 6 1 * * node /home/steve/example/script.js
Mais cela ne fonctionne pas, probablement à cause du chemin ou du shell sous lequel la commande est exécutée. J'ai essayé les moyens suivants pour exécuter node via cron (testé avec -v):
steve@atom:~$ node -v
v0.4.2
steve@atom:~$ sh node -v
sh: Can't open node
steve@atom:~$ bash node -v
/usr/local/bin/node: /usr/local/bin/node: cannot execute binary file
steve@atom:~$ /usr/local/bin/node -v
v0.4.2
steve@atom:~$ sh /usr/local/bin/node -v
/usr/local/bin/node: 1: Syntax error: "(" unexpected
steve@atom:~$ bash /usr/local/bin/node -v
/usr/local/bin/node: /usr/local/bin/node: cannot execute binary file
J'ai manqué d'idées à essayer, un conseil?
indiquez simplement le chemin complet du noeud /usr/local/bin/node
dans votre travail cron, par exemple:
30 6 1 * * /usr/local/bin/node /home/steve/example/script.js
De plus, il suffit de mettre #!/usr/local/bin/node
en haut du script que vous voulez exécuter. Ensuite, il saura automatiquement exécuter le script avec noeud. Assurez-vous que le fichier est également exécutable.
Je ne sais pas si changer vos chemins relatifs dans votre script en chemins absolus est une bonne idée
(que se passe-t-il lorsque votre système de fichiers change ou que vous déployez dans un autre environnement?)
Vous pouvez essayer de l'encapsuler dans un script Shell, en définissant des variables d'environnement dans l'exécution de la crontab. (spécifiquement PATH
& NODE_PATH
pour les débutants)
Essayez ma suggestion pour cette question similaire:
https://stackoverflow.com/a/27823675/608269
dans mon ordinateur portable sous Linux à la menthe, le chemin indiqué ne fonctionnait pas, alors je l'ai utilisé pour résoudre ce problème.
$ which node
$ /usr/bin/node
cela a fonctionné pour moi.
Utilisez des chemins absolus pour l'alias de noeud et le fichier à exécuter.
Edit Cron Jobs
crontab -e
Entrée pour exécuter notre fichier de nœud
Cela fonctionnera chaque minute.
*/1 * * * * * /bin/node /public/test.js
Tutoriel complet https://askmacgyver.com/blog/tutorial/how-to-run-node-scripts-from-a-cron-job