在crontab中运行yarn脚本



我用TypeScript编写了一个脚本,它从一些api下载数据并存储在mongo DB中。如果我从应用程序文件夹运行yarn start,它工作得很好。我想把这个命令放在一个每5分钟执行一次的cron作业中。

我在crontab中尝试了一些sintax,但它不起作用。我试着把调用放在run.sh脚本中,但它也不起作用。

*/5 * * * * cd /opt/app-folder/src/ && /home/username/.nvm/versions/node/v16.15.1/bin/ts-node main.ts
*/5 * * * * cd /opt/app-folder && /usr/bin/yarn start > /home/username/app-name-out.txt
*/5 * * * * /home/username/run.sh  > /home/username/app-name-out.txt
*/5 * * * * /home/username/.nvm/versions/node/v16.15.1/bin/ts-node /opt/app-folder/src/main.ts > /home/username/app-name-out.txt
*/5 * * * * cd /opt/app-folder/src/ && /home/username/.nvm/versions/node/v16.15.1/bin/ts-node main.ts > /home/username/app-name-out.txt

有人能帮我执行主程序吗?是5分钟一次吗?由于

我解决了这个问题。有两个问题,第一个与输出重定向有关。我通过重定向stdout在一个文件和stderr在另一个固定。第二个与crontab的$PATH有关,是/usr/bin:/bin。为了修复它,我登录到脚本工作的用户,并使用echo $PATH打印我的$PATH。

我复制了该值,并将其设置在crontab文件的crontab行之前。它看起来是这样的:

# Set the same path of user username to have the correct path in script
PATH=/home/username/.nvm/versions/node/v16.15.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
# Execute oracle every 5 minutes
*/5 * * * * /bin/sh /home/username/run.sh >> /home/username/app-name-info.txt 2>> /home/username/app-name-error.txt

现在可以了

最新更新