Как мне автоматически запустить скрипт node.js - PullRequest
1 голос
/ 06 февраля 2020

Я хочу запускать свой скрипт каждые 30-60 минут и не хочу, чтобы скрипт работал постоянно.

Могу ли я сделать какой-нибудь cronjob или что-то еще, который запускает скрипт и закрывает его после того, как он сделан?

Я использую Ubuntu 18.04

Ответы [ 2 ]

3 голосов
/ 06 февраля 2020

Несмотря на то, что cron работает, современный надежный способ сделать это на платформах Linux заключается в создании службы systemd. Создав службу, systemd автоматически создаст процесс и перезапустит его, если он завершится или завершится неудачно. Чтобы создать службу systemd, выполните следующие действия.

  1. Создайте файл в /etc/systemd/system с расширением .service. Этот файл определяет процесс, за которым мы хотим, чтобы systemd следил.

  2. В этом файле мы можем выбрать, какая команда запускает сценарий, сколько времени ждать перед повторной попыткой, если процессы завершаются, какой пользователь создает процесс и т. Д. c. В этой статье и в этой статье перечислены некоторые общие параметры. В вашем случае вы хотите, чтобы ваш файл выглядел примерно так ...

    [Unit]
    Description=Runs script every 30 minutes
    After=network-online.target
    Requires=network-online.target # if your script connects to the internet, for example
    Documentation= # maybe your github or something

    [Service]
    Type=simple
    Restart=always
    RestartSec=1800 # 30 minutes
    User= # Your user, if you need particular permissions for example
    WorkingDirectory= # The working directory you need
    ExecStart= # The command to start the script you need
Начните свой сервис с systemctl enable your_service_name.service. Это обеспечит запуск вашей службы при каждой загрузке системы (замените enable на disable, чтобы остановить запуск службы при загрузке). Если вам нужно, чтобы он работал во время ЭТОЙ загрузки, используйте systemctl start your_service_name.service (переключение start с stop делает то, что вы ожидаете). Это подробно описано в статьях выше.
2 голосов
/ 06 февраля 2020

Создайте файл сценария, такой как run_script. sh и введите следующий код.

exec node /path/to/your/javascript.js

Затем добавьте этот run_script. sh в свой cronjob. Вы можете использовать */30 * * * *, чтобы запускать его каждые 30 минут, или 0 * * * *, чтобы запускать его ежечасно.

Если ваш сценарий не останавливается сам по себе, вы можете добавить process.exit() после условия, чтобы выполнить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...