Ubuntu 20.04 @reboot cronjob не запускает скрипт

Ubuntu 20.04 @reboot cronjob не запускает скрипт

У меня есть сервер vultr в Ubuntu 20.04, я создаю скрипт bash в следующем каталоге

/startupscripts/apilibro

Внутри скрипта мне нужно запустить мой сервер Directus, запустив yarn directus start

!#/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 не запускается. Когда я запускаю ее локально, она работает, но при перезагрузке Ubuntu она не работает. Наконец, я тестирую скрипт bash, добавляя строку touch index.js, и она работает, но команда запуска yarn directus не запускается.

Есть идеи, как решить эту проблему?

решение1

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

2-й

возможно, env пряжи не соответствует вашему использованию, кто управляет crond?

решение2

Проблема решена. Вот что я сделал, чтобы решить свою проблему.

  1. Я запустил скрипт вручную с помощью bash apilibro, поэтому заметил, что yarn отсутствует в моих переменных окружения, я просто добавил, как сказал @Artur Medim.
  2. Я заметил, что моя версия nodejs была 10.xx по умолчанию, когда я изменил ее с помощью nvm, это сработало, но когда я перезагрузил систему или закрыл свой терминал ssh, версия nodejs изменилась на версию по умолчанию, поэтому обновите мою версию до 16.xx, чтобы убедиться, что этого не происходит.

После этого я смог запустить скрипт вручную и по cronjob, спасибо всем за ответы.

Связанный контент