私は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
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番目
おそらく、yarn の env が crond を実行するユーザーと一致していないのではないでしょうか。
答え2
問題は解決しました。これが私が問題を解決するために行ったことです。
- 私は bash apilibro を使用してスクリプトを手動で実行したので、環境変数に yarn が存在しないことに気付きました。@Artur Medim が言うように追加しただけです。
- 私の Node.js バージョンはデフォルトで 10.xx になっていることに気付きました。nvm を使用して変更すると動作しますが、システムを再起動するか、ssh ターミナルを閉じると、Node.js バージョンがデフォルトに変更されます。そのため、この問題が発生しないように、バージョンを 16.xx に正しく更新しました。
その後、スクリプトを手動で、また cronjob で実行できるようになりました。ご回答くださった皆様に感謝します。