Службы автозапуска в Linux с примерами кода

Чтобы автоматически запустить службу в Linux, существует несколько способов. Вот некоторые часто используемые методы с примерами кода:

  1. Скрипты Init.d:

    • Создайте сценарий init.d в каталоге /etc/init.d/.
    • Сделайте скрипт исполняемым с помощью команды: chmod +x /etc/init.d/myservice.
    • Используйте команду update-rc.d, чтобы добавить службу: update-rc.d myservice defaults.
    • Пример сценария init.d:

      #!/bin/bash
      ### BEGIN INIT INFO
      # Provides:          myservice
      # Required-Start:    $remote_fs $syslog
      # Required-Stop:     $remote_fs $syslog
      # Default-Start:     2 3 4 5
      # Default-Stop:      0 1 6
      # Short-Description: My Service
      # Description:       My Service Description
      ### END INIT INFO
      
      case "$1" in
       start)
           # Start the service
           ;;
       stop)
           # Stop the service
           ;;
       restart)
           # Restart the service
           ;;
       *)
           echo "Usage: $0 {start|stop|restart}"
           exit 1
           ;;
      esac
      exit 0
  2. Системная служба:

    • Создайте файл модуля службы systemd в каталоге /etc/systemd/system/.
    • Пример файла сервисного модуля systemd:

      [Unit]
      Description=My Service
      After=network.target
      
      [Service]
      ExecStart=/path/to/myservice
      Restart=always
      
      [Install]
      WantedBy=multi-user.target
    • Включите запуск службы при загрузке: systemctl Enable myservice.
    • Запустите службу: systemctl start myservice.
  3. Задание Cron:

    • Используйте планировщик cron для запуска команды во время загрузки.
    • Отредактируйте файл crontab с помощью команды: crontab -e.
    • Добавьте запись @rebootв файл crontab.
    • Пример записи в crontab:
      @reboot /path/to/myservice
  4. Выскочка:

    • Создайте скрипт Upstart в каталоге /etc/init/.
    • Пример скрипта Upstart:

      description "My Service"
      
      start on runlevel [2345]
      stop on runlevel [!2345]
      
      respawn
      respawn limit 10 5
      
      exec /path/to/myservice