выполнить несколько команд после загрузки

Вопрос или проблема

У меня есть сервер 22.04, на котором работает PM2 для предоставления некоторых приложений на node. Эти приложения зависят от переменной оболочки, которая говорит, находится ли среда в состоянии ‘dev’ или ‘prd’

Каждый раз, когда я перезагружаю систему, мне нужно выполнять

export ENV_TYPE = 'dev'

а затем перезапустить все процессы PM2 с помощью

pm2 restart 0 --update-env
pm2 restart 1 --update-env

и так далее

Как я могу создать скрипт, который будет выполнять эти действия автоматически, когда я перезагружаю сервер (не после входа в систему, а сразу после завершения загрузки)? Позже я посмотрю, как запустить скрипт, но сейчас цель состоит в том, чтобы создать скрипт

  • vi ~/$USER/script.sh Замените script.sh на что-то более описательное.

  • нажмите i

  • вставьте это:

      #!/bin/bash
      export ENV_TYPE = 'dev'
      pm2 restart 0 --update-env
      pm2 restart 1 --update-env
    
  • нажмите и введите <ESC>:wq!, а затем

  • chmod 750 ~/$USER/script.sh

и у вас есть скрипт. Переместите его в директорию из echo $PATH, если вам нужен прямой доступ к нему.

Следующий шаг — добавить его в /etc/crontab с @reboot как временем или (лучший, но немного более сложный метод) создать службу systemd, чтобы вы могли добавить его где-то в цепочку загрузки и иметь возможность запускать/останавливать/перезапускать его,

Ответ или решение

Выполнение команд после загрузки системы на сервере Ubuntu 22.04 с PM2

Если у вас имеется сервер на базе Ubuntu 22.04, использующий PM2 для управления Node.js приложениями, и вам нужно выполнять определенные команды сразу после загрузки системы, вы можете автоматизировать этот процесс с помощью скрипта.

Шаг 1: Создание скрипта

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

  1. Откройте терминал и выполните следующую команду для создания нового скрипта:

    vi ~/$USER/start_pm2.sh
  2. Перейдите в режим редактирования, нажав клавишу i.

  3. Вставьте следующий код в файл:

    #!/bin/bash
    export ENV_TYPE='dev'
    pm2 restart 0 --update-env
    pm2 restart 1 --update-env
  4. Чтобы сохранить изменения и выйти из редактора, нажмите ESC, затем введите :wq! и нажмите Enter.

  5. Установите права на выполнение для вашего скрипта:

    chmod 750 ~/$USER/start_pm2.sh

Шаг 2: Добавление скрипта в расписание

Чтобы выполнить ваш скрипт автоматически при загрузке системы, вы можете использовать два метода: Cron или systemd. Рекомендуется использовать systemd, так как это более управляемый и гибкий способ.

Метод 1: Использование cron с опцией @reboot
  1. Откройте файл crontab для редактирования:

    crontab -e
  2. Добавьте следующую строку в конец файла:

    @reboot /home/$USER/start_pm2.sh
  3. Сохраните изменения и выйдете из редактора.

Метод 2: Создание службы systemd

Создание службы systemd даст вам больше контроля над выполнением вашего скрипта.

  1. Создайте файл службы systemd:

    sudo vi /etc/systemd/system/start_pm2.service
  2. Вставьте следующий код в файл:

    [Unit]
    Description=Start PM2 processes after boot
    
    [Service]
    ExecStart=/home/$USER/start_pm2.sh
    Restart=always
    User=$USER
    
    [Install]
    WantedBy=multi-user.target
  3. Сохраните изменения и выйдите из редактора.

  4. Активируйте созданную службу:

    sudo systemctl enable start_pm2.service
  5. Запустите службу, чтобы убедиться, что она работает:

    sudo systemctl start start_pm2.service

Заключение

Теперь ваш сервер будет автоматически выполнять необходимые команды после перезагрузки, что позволит вам избежать ручного ввода команд каждый раз при запуске системы. Это значительно упростит управление вашими Node.js приложениями с PM2 и обеспечит более стабильную работу вашего сервера.

В случае возникновения вопросов или необходимости в более глубоком анализе, вы всегда можете обратиться к документации PM2 или systemd для получения дополнительной информации о конфигурации и управлении процессами.

Оцените материал
Добавить комментарий

Капча загружается...