Команда Linux service

Linux 命令大全Справочник команд Linux


Что такое команда service?

serviceЭто инструмент командной строки в Linux для управления системными службами. Он предоставляет стандартизированный способ запуска, остановки, перезапуска и проверки состояния системных служб.

Служба — это приложение или процесс, работающий в фоновом режиме, обычно предоставляющий критически важные системные функции (такие как сеть, ведение журналов, базы данных и т. д.). Понимание команды service крайне важно для администрирования системы Linux.


Базовый синтаксис команды service

service [服务名] [操作指令]

Общие инструкции по операциям

Команда Описание
start Запустить указанную службу
stop Остановить указанную службу
restart Перезапустить указанную службу
reload Перезагрузить файл конфигурации (без перезапуска службы)
status Просмотреть состояние работы службы
--status-all Вывести список состояний всех служб

Подробное объяснение общих параметров

1. Базовые операции управления службами

Запустить службу Apache:

Пример

service apache2 start
# Или используйте эквивалентную команду systemctl
systemctl start apache2

Остановите службу MySQL:

Пример

service mysql stop
# Рекомендуется для современных систем
systemctl stop mysql

Перезапустите службу Nginx:

Пример

service nginx restart
# После изменения файлов конфигурации обычно требуется перезапуск, чтобы изменения вступили в силу

Проверьте состояние службы SSH:

Пример

service sshd status
# Пример вывода:
# ● ssh.service - сервер OpenBSD Secure Shell
# Загружен: загружен (/lib/systemd/system/ssh.service; включено; предустановка производителя: включено)
# Активен: активен (работает) с вт 2023-05-16 10:23:45 CST; 3h 25min назад

2. Расширенное использование

Перезагрузить конфигурацию службы (без прерывания работы службы):

Пример

service nginx reload
# Используйте, когда был изменён только файл конфигурации и полный перезапуск не требуется

Вывести список состояний всех служб:

Пример

service --status-all
# [+] обозначает работающую службу
# [-] обозначает остановленную службу
# [?] обозначает службу с неизвестным статусом

Проверьте, настроена ли служба на запуск при загрузке:

Пример

# Старый метод
chkconfig --list | grep httpd
# Современные системы используют
systemctl is-enabled apache2

Практические примеры применения

Пример 1: Управление веб-сервером

Пример

# 1. Запустите Apache
sudo service apache2 start

# 2. После изменения файла конфигурации перезагрузите
sudo nano /etc/apache2/apache2.conf
sudo service apache2 reload

# 3. Проверьте статус работы
service apache2 status

Пример 2: Обслуживание службы базы данных

Пример

# 1. Остановите MySQL для обслуживания
sudo service mysql stop

# 2. Выполните операции по обслуживанию...

# 3. Перезапустите MySQL
sudo service mysql start

# 4. Проверьте состояние службы
service mysql status

Различия между старыми и новыми системами

По мере развития систем Linux методы управления службами изменились:

Характеристика Традиционная система (SysVinit) Современная система (systemd)
Команда управления службами service systemctl
Расположение файла конфигурации /etc/init.d/ /lib/systemd/
Управление журналами Разрозненные файлы журналов journalctl
Параллельный запуск Не поддерживается Поддерживается

Примечания по совместимости:

  • В современных системах,serviceкоманда обычноsystemctlобёртка совместимости
  • Рекомендуется использовать в новых системахsystemctlчтобы получить больше возможностей

Решение распространённых проблем

Проблема 1: Служба не запускается

Пример

sudo service mysql start
# Вывод: Задание для mysql.service не выполнено, так как управляющий процесс завершился с кодом ошибки.

Решение:

  1. Проверьте подробную информацию об ошибке:
    journalctl -xe
  2. Проверьте файлы журналов:
    tail -n 50 /var/log/mysql/error.log
  3. Распространённые причины: конфликт портов, проблемы с правами, ошибки в файлах конфигурации

Проблема 2: Команда service не существует

service: command not found

Решение:

  1. Проверьте, не является ли это минимальной средой установки
  2. Установите необходимые пакеты:
    # Debian/Ubuntu
    sudo apt install sysvinit-utils
       
    # RHEL/CentOS
    sudo yum install initscripts

Рекомендации по лучшим практикам

  1. Используйте полный путь: Рекомендуется использовать в производственных средах/usr/sbin/serviceа не использовать напрямуюservice
  2. Сочетайте с systemctl: Предпочтительно использовать в современных системахsystemctlcommand
  3. Добавьте sudo: для управления службами обычно требуются права root
  4. Проверка журналов: если служба неисправна, сначала проверьте соответствующие журналы
  5. Управление автозапуском при загрузке:
    # 启用开机启动
    sudo systemctl enable nginx
       
    # 禁用开机启动
    sudo systemctl disable nginx

Расширение знаний

Сравнение связанных команд

Команда Назначение Пример
service Управление службами в режиме совместимости service sshd restart
systemctl Современное управление службами (рекомендуется) systemctl restart sshd
chkconfig Управление уровнями выполнения SysV chkconfig --list
update-rc.d Управление уровнями запуска на основе Debian (Debian) update-rc.d apache2 defaults

Из этой статьи вы должны были освоить основы использования команды service в Linux. Помните, что хотя команда service распространена в старых системах, в современных дистрибутивах Linux, использующих systemd,systemctlявляется более рекомендуемым инструментом управления службами. Рекомендуется выбирать подходящую команду в зависимости от вашей системной среды и выработать полезную привычку проверять журналы служб.

Linux 命令大全Справочник команд Linux

Другие расширения