Я пытаюсь запустить бот-диск в приложении узла в бесплатном экземпляре Compute Engine. Я изо всех сил пытаюсь сделать скрипт, который на самом деле запускает приложение узла. Я создал этот скрипт и добавил его как startup-script
метаданные из файла: cd code/movo-tron-2000 && npm start &
. Я проверил, что скрипт работает с sudo google_metadata_script_runner --script-type startup --debug
, но когда я перезапускаю экземпляр, приложение не запускается. При запуске sudo journalctl -u google-startup-scripts.service
печатаются следующие журналы:
Apr 20 12:19:08 bot-vm systemd[1]: Starting Google Compute Engine Startup Scripts...
Apr 20 12:19:09 bot-vm startup-script[691]: INFO Starting startup scripts.
Apr 20 12:19:09 bot-vm startup-script[691]: INFO Found startup-script in metadata.
Apr 20 12:19:09 bot-vm startup-script[691]: INFO startup-script: /startup-od52epug/tmpjy_z4vue: line 1: cd: code/mo
Apr 20 12:19:09 bot-vm startup-script[691]: INFO startup-script: Return code 0.
Apr 20 12:19:09 bot-vm startup-script[691]: INFO Finished running startup scripts.
Apr 20 12:19:09 bot-vm systemd[1]: Started Google Compute Engine Startup Scripts.
Я вижу, что сценарий выполняется, но также завершается. Приложение прослушивало запросы, поэтому оно не должно завершаться для запуска. Я предполагаю, что сценарий запуска запускается в том же потоке, что и сценарий запуска Google Compute Engine, поэтому он завершается, чтобы продолжить загрузку vm. Что я должен изменить в своем сценарии запуска, чтобы правильно запустить мое приложение и не завершить его экземпляром?
Редактировать: я установил следующий системный сервис и скрипт в соответствующих местах
Сервис:
[Unit]
Description=Start bot
[Service]
ExecStart=/home/me_adi_hf/code/movo-tron-2000/start.sh
[Install]
WantedBy=default.target
Скрипт:
#!/bin/sh
date > /root/bot_report.txt
du -sh /home/ >> /root/bot_report.txt
Но при запуске sudo systemd start bot.service
и затем проверяя его состояние с помощью sudo systemd status bot.service
, я получаю этот вывод, показывая Exec format error
:
bot-start.service - Start bot
Loaded: loaded (/etc/systemd/system/bot-start.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2020-04-21 09:43:01 UTC; 9s ago
Process: 19303 ExecStart=/home/me_adi_hf/code/movo-tron-2000/start.sh (code=exited, status=203/EXEC)
Main PID: 19303 (code=exited, status=203/EXEC)
Apr 21 09:43:01 bot-vm systemd[1]: Started Start bot.
Apr 21 09:43:01 bot-vm systemd[19303]: bot-start.service: Failed at step EXEC spawning /home/me_adi_hf/code/movo-tron-2000/start.sh: Exec format error
Apr 21 09:43:01 bot-vm systemd[1]: bot-start.service: Main process exited, code=exited, status=203/EXEC
Apr 21 09:43:01 bot-vm systemd[1]: bot-start.service: Unit entered failed state.
Apr 21 09:43:01 bot-vm systemd[1]: bot-start.service: Failed with result 'exit-code'.
Я не уверен, что вызывает ошибку, так как синтаксис файла службы выглядит правильно