Ubuntu 20.04 @reboot cronjob 不執行腳本

Ubuntu 20.04 @reboot cronjob 不執行腳本

我在 ubuntu so 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 啟動命令不運行。

知道如何解決這個問題嗎?

答案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 手動運行腳本,所以我注意到我的環境變數中不存在紗線,我只是按照@Artur Medim 的說法添加了。
  2. 我注意到我的nodejs版本預設為10.xx,當我使用nvm更改它時它可以工作,但是當我重新啟動系統或關閉我的ssh終端時,nodejs版本更改為預設值,因此將我的版本正確更新為16。

之後我可以手動運行腳本並在 cronjob 上運行,感謝大家的回答。

相關內容