我在 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
问题解决了,这就是我解决问题所做的事情。
- 我使用 bash apilibro 手动运行了脚本,因此我注意到 yarn 不存在于我的环境变量中,我只是按照@Artur Medim 说的那样添加。
- 我注意到我的 nodejs 版本默认为 10.xx,当我使用 nvm 更改它时它可以工作,但是当我重新启动系统或关闭我的 ssh 终端时,nodejs 版本更改为默认值,因此正确更新我的版本为 16.xx 以确保不会发生这种情况。
之后我可以手动运行脚本并在 cronjob 上运行,感谢大家的回答。