Ubuntu 20.04 @reboot cronjob 不运行脚本

Ubuntu 20.04 @reboot cronjob 不运行脚本

我在 ubuntu 20.04 上有一个 vultr 服务器,我在以下目录中创建了一个 bash 脚本

/startupscripts/apilibro

在脚本中我需要运行 yarn directus start 来启动我的 directus 服务器

!#/bin/bash
cd /var/www/vhosts/librocambio.cl/core.librocambio.cl/apilibro
/usr/bin/yarn directus start

我给了 chmod 755 来读取、写入和执行脚本,最后我运行 crontab -e 并添加以下代码以在服务器重新启动时执行

@reboot /startupscripts/apilibro

我的问题是 yarn directus start 命令无法运行,当我在本地运行该命令时可以运行,但在 ubuntu 重启时不起作用,最后我测试了 bash 脚本,添加了一行作为 touch index.js,它可以运行,但 yarn directus start 命令无法运行。

知道如何解决这个问题吗?

答案1

第一种方式,

我认为你可以使用该命令来查看 crond 的日志

tail -f /var/log/cron.log

这里的输出可能会给你一些信息。

如果没有 cron.log,请使用此命令并重新启动 rsyslog 服务

sed -i '/#cron.*/s/^#//g' /etc/rsyslog.d/50-default.conf

systemctl restart rsyslog.service

第二

也许 yarn 的环境与运行 crond 的用户不匹配?

答案2

问题解决了,这就是我解决问题所做的事情。

  1. 我使用 bash apilibro 手动运行了脚本,因此我注意到 yarn 不存在于我的环境变量中,我只是按照@Artur Medim 说的那样添加。
  2. 我注意到我的 nodejs 版本默认为 10.xx,当我使用 nvm 更改它时它可以工作,但是当我重新启动系统或关闭我的 ssh 终端时,nodejs 版本更改为默认值,因此正确更新我的版本为 16.xx 以确保不会发生这种情况。

之后我可以手动运行脚本并在 cronjob 上运行,感谢大家的回答。

相关内容