Перезапуск сервиса является одной из задач администрирования, что необходимо будет выполнить одно время или другой при конфигурировании программного обеспечения на Ubuntu. В этой статье мы объясним, как перезапустить рабочий сервис на Ваш Ubuntu посредством команды systemctl. Мы также объясним еще некоторое управление службами systemctl команды, которые помогут Вам далее при работе с сервисами.
Перезапуск сервиса с Systemctl
В этой статье мы будем использовать командную строку Ubuntu, Терминал, чтобы объяснить, как перезапустить рабочий сервис.
Можно открыть Терминальное приложение на Ubuntu или через панель поиска средства запуска приложения или просто через ярлык Ctrl+Alt+T.
Последние версии Ubuntu используют systemd, чтобы управлять и запустить сервисы. Получить список всех включило systemd единицы, выполните эту команду:
systemctl list-unit-files | grep enabled
Список поможет Вам в выборке точного сервисного названия, которое можно позже использовать для перезапуска сервиса.
Запуск windows программ в Linux Ubuntu Решение
Можно использовать команду systemctl для перезапуска сервиса. Эта команда является относительно новым инструментом, который можно использовать для управления systemd (init система) и сервисы. Этот инструмент является заменой менеджера sysV init. В эти дни самые современные дистрибутивы Linux переключились на systemd и таким образом systemctl.
Вот то, как можно использовать команду systemctl для перезапуска рабочего сервиса:
sudo systemctl restart [servicename]
Например, следующая команда может использоваться для перезапуска UFW (Несложный Брандмауэр) сервис на Ubuntu:
sudo systemctl restart ufw
Обратите внимание на то, что необходимо быть авторизованным пользователем для управления системными службами.
Справьтесь с сервисами с Systemd
Не только можно перезапустить сервисы с systemctl, но и Вы можете также:
- Проверьте состояние сервиса
systemctl status [servicename]
systemctl start [servicename]
systemctl stop [servicename]
- Перезагрузите сервис
systemctl restart [servicename]
- Перезагрузка-или-перезапуск сервис (перезагружает сервис/перезапуски, если перезагрузка не доступна),
sudo systemctl reload-or-restart [servicename]
- Проверьте, выключены ли/активны сервисы
sudo systemctl is-active [servicename]
sudo systemctl is-failed [servicename]
Через этот простой, все же полезный инструмент можно перезапустить сервис, не перезапуская всю систему. Не только, что, можно выполнить больше управления службами с помощью использования команды, описанного в этой статье.
Похожие записи:
- Запись экрана с помощью Kazam в Ubuntu
- Установка сервера документов ONLYOFFICE в CentOS
- Как исправить предупреждение об устаревании apt-key в Ubuntu
- Как установить программное обеспечение для видеоконференций Zoom в Ubuntu
- Отключаем IPv6 через параметры ядра (GRUB) в Linux
- Как завершить работу Ubuntu
- Напишите свою первую программу на Swift в Ubuntu Linux
Источник: g-soft.info
C++ первая программа HELLO WORLD в Linux Ubuntu
# Использование системных команд systemctl и journalctl
В этой инструкции мы рассмотрим две системные команды, которые нужны для полноценного администрирования на Linux. Дополнительные возможности этих команд позволяют собрать общую информацию о работе сервера и установленных приложений, не используя при этом каких-то сложных инструментов.
Для начала работы нам понадобится:
- подготовленный к работе сервер под управлением Ubuntu. Мы будем рассматривать работу именно на Ubuntu, но общий синтаксис и принцип работы команды распространяются также на Debian и CentOS.
- установленный веб-сервер, например, Nginx. На самом деле обе команды универсальны, использовать Nginx мы будем исключительно в качестве образца для исследования.
# Systemctl
Начнём изучение с команды systemctl . Она предназначена для прямой работы с приложениями. С помощью базовых функций этой команды можно запустить приложение:
sudo systemctl start app
sudo systemctl stop app
Добавить его в автозагрузку:
sudo systemctl enable app
sudo systemctl disable app
Важно помнить, что команда systemctl выполняется от имени администратора, поэтому не забывайте указывать префикс sudo .
Также при работе с командой systemctl можно не указывать .service расширение после названия приложения — команда сама проверяет доступность приложений в списке сервисов и выполняет команды в соответствии с ним. Это упрощает синтаксис команды.
# restart vs reload
Для перезапуска приложений у systemctl есть две опции: restart и reload . Синтаксис команды для запуска этих функций стандартный:
sudo systemctl restart app sudo systemctl reload app
Основное различие этих функций — во взаимодействии с приложениями. Если restart полностью останавливает приложение и запускает его заново, то reload просто позволяет приложению перечитать конфигурационный файл, с которым оно работает, без полного перезапуска.
# Статус
Одна из основных функций для проверки работы приложений — status :
sudo systemctl status nginx # Output ● nginx.service — A high performance web server and a reverse proxy server Loaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-03-30 08:01:48 +05; 5h 12min ago Docs: man:nginx(8) Process: 354 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 370 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 383 (nginx) Tasks: 3 (limit: 19660) Memory: 11.3M CGroup: /system.slice/nginx.service ├─383 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─384 nginx: worker process └─385 nginx: worker process Mar 24 10:19:27 host systemd[1]: Stopping A high performance web server and a reverse proxy server Mar 24 10:19:28 host systemd[1]: nginx.service: Succeeded.
Эта команда выводит на экран общую информацию о приложении — его статус (Active / Inactive (dead)), добавлено оно в автозагрузку или нет (Enabled / Disabled), PID процесса, количество используемой памяти, зависимости и последние несколько строк лога. Здесь же выводятся системные ошибки при запуске приложения.
Эта информация бывает очень полезной при поиске ошибок и отладке работы приложения.
Вариации этой команды — is-active , is-enabled , is-failed — позволяют проверить одно конкретное состояние приложения без вывода на экран всей остальной информации:
sudo systemctl is-enabled nginx # Output enabled
# Просмотр установленных приложений
Также systemctl позволяет проверить список всех установленных на машине приложений:
На экран будет выведена таблица со следующей информацией:
- UNIT — наименование приложения;
- LOAD — правильно ли загружено описание приложения;
- ACTIVE — статус приложения на данный момент;
- SUB — более детальная информация о состоянии приложения;
- DESCRIPTION — описание приложения.
Эта команда также имеет несколько дополнительных функций, позволяющих выводить список только активных в данный момент приложений:
systemctl list-units —all —state=inactive
Логичное продолжение этой команды — опция вывода информации об исполняемом файле приложения:
systemctl cat nginx.service
Правильное название сервиса, который нужно указать в данной команде, можно взять из списка, выведенного командой systemctl list-units .
Зависимости выбранного сервиса можно посмотреть командой list-dependencies :
sudo systemctl list-dependencies nginx.service nginx.service ● ├─system.slice ● └─sysinit.target ● ├─apparmor.service ● ├─dev-hugepages.mount ● ├─dev-mqueue.mount ● ├─kmod-static-nodes.service ● ├─proc-sys-fs-binfmt_misc.automount ● ├─proc-sys-fs-binfmt_misc.mount ● ├─sys-fs-fuse-connections.mount ● ├─sys-kernel-config.mount ● ├─sys-kernel-debug.mount ● ├─sys-kernel-tracing.mount ● ├─systemd-ask-password-console.path ● ├─systemd-binfmt.service ● ├─systemd-boot-system-token.service ● ├─systemd-hwdb-update.service ● ├─systemd-journal-flush.service …
Полное описание сервиса можно вызвать командой:
sudo systemctl show nginx.service # Output Type=forking Restart=no PIDFile=/run/nginx.pid NotifyAccess=none RestartUSec=100ms TimeoutStartUSec=1min 30s TimeoutStopUSec=5s TimeoutAbortUSec=5s RuntimeMaxUSec=infinity WatchdogUSec=0 WatchdogTimestampMonotonic=0 RootDirectoryStartOnly=no …
# Маскировка сервиса
Иногда в работе нужно временно исключить из работы один сервис — запретить автоматический доступ к нему и не перезапускать его при перезагрузке системы. Это можно сделать с помощью команды mask :
sudo systemctl mask nginx.service
После этого при попытке запуска сервиса можно будет увидеть сообщение:
# Output Failed to start nginx.service: Unit nginx.service is masked.
И в общем списке приложений напротив указанного сервиса будет сообщение masked .
Снятие маскировки производится обратной командой:
sudo systemctl unmask nginx.service
Это основные инструменты для работы с командой systemctl , позволяющие управлять работой приложений и собирать общую информацию об их работе. Теперь переходим к описанию команды, позволяющей работать с системными логами.
# journalctl
Команда journalctl — один из основных элементов работы с системными логами. Она позволяет не только читать общие системные логи, но и выбирать из них интересующую нас информацию — от временного интервала до конкретного сервиса или приложения.
# Установка локального времени
Начнём работу с логами с установки локального времени на сервере.
Обычно время, установленное на сервере, совпадает с его реальным временем в его часовом поясе. Это бывает неудобно при удалённом администрировании сервера: он подписывает логи своим локальным временем, которое может отличаться от времени администратора. Установим своё время на сервере.
timedatectl
Она выведет на экран локальное время, установленное на сервере, UTC-время и укажет часовой пояс, выбранный на сервере. Чтобы изменить время на сервере, нужно указать часовой пояс, время которого будет считаться актуальным. Для этого выведем на экран список всех доступных часовых поясов:
timedatectl list-timezones
Выберем из списка нужный и установим его:
sudo timedatectl set-timezone zone_name
После этого командой timedatectl можно проверить, установилось ли нужное нам время, и переходить непосредственно к чтению логов.
# Работа с логами
Введите общую команду:
journalctl
Она выведет в консоль все логи событий сервера. Будьте внимательны — их может быть очень много.
Чтобы сократить число таких строк, можно добавить флаг -b к основной команде, тогда будут показаны логи только с момента последней перезагрузки сервера. Но даже в этом случае, если сервер нагружен и имеет большой аптайм, список может быть очень длинным.
# Сортировка по времени
Чтобы прочитать логи в определённом временном промежутке, используются флаги —before и —since , после которых указывается время в формате YYYY-MM-DD HH:MM:SS . Также эти флаги можно использовать совместно, чтобы выводить на экран события из определённого временного окна:
journalctl —since «2022-01-01» —until «2022-01-02 12:00»
Также эта команда поддерживает более свободный формат указания времени. Например, логи со вчерашнего дня:
sudo journalctl —since yesterday
А вот так выглядит указание на то, что временное окно логов нужно закончить час назад:
journalctl —since 12:00 —until «1 hour ago»
# Выбор логов конкретного сервиса
Один из наиболее популярных и полезных инструментов при работе с командой journalctl — вывод логов определённого сервиса или приложения. Для этого используется флаг -u , после которого указывается наименование интересующего нас сервиса или приложения. В частности вывод логов SSH-подключений выглядит так:
journalctl -u ssh
Этот флаг также сочетается с флагами времени:
journalctl -u ssh —since yesterday
Он может сочетаться и с командами на ограничение выводимых строк. Например, можно вывести в консоль последние 20 позиций из логов ssh-подключений:
journalctl -u ssh |tail -20
Посмотреть последние события в логах вне зависимости от сервиса можно с помощью ключа -n , после которого нужно указать количество последних событий:
journalctl -n 20
# Логи и дисковое пространство
В зависимости от загруженности сервера его логи могут занимать очень много места. Команда journalctl позволяет контролировать количество дискового пространства, отведённого для записи логов. Контроль можно осуществлять как по общему занимаемому пространству, так и по глубине времени хранения событий сервера.
journalctl —disk-usage
Она выведет в консоль сведения о занимаемом дисковом пространстве в данный момент:
#Output Archived and active journals take up 16.0M in the file system.
Далее введите следующую команду:
sudo journalctl —vacuum-size=
С её помощью вы можете установить максимально допустимый объём дискового пространства, занимаемый логами. Если в данный момент журнал превышает указанное значение, то все старые записи, выходящие за пределы указанного объёма, будут удалены.
Аналогично работает и эта команда:
sudo journalctl —vacuum-time=
Различие в том, что здесь в качестве значения указывается системное время, за которое нужно хранить журналы событий.
Как запускать, останавливать или перезапускать сервисы в Ubuntu
Как и во всех других операционных системах, в Linux есть службы и процессы, выполняемые во время работы системы в фоновом режим. Когда система загружается, сервисы запускаются автоматически и продолжают работать, пока система не выключится. Однако вы можете запускать, останавливать и перезапускать службы вручную.
Рассмотрим различные способы запуска, остановки и перезапуска служб в Ubuntu с помощью systemd, команды service и сценария инициализации init.
Список всех сервисов в Ubuntu
Прежде всего нужно получить список всех служб на вашем компьютере.
service —status-all
Он покажет полный список сервисов на вашем компьютере.
Использование Systemd для запуска / остановки / перезапуска служб в Ubuntu
Вы можете запускать, останавливать или перезапускать сервисы с помощью утилиты systemd systemctl. Начиная с версии 16.04 Ubuntu включает в себя systemd как init-систему по умолчанию. На сегодняшний день это предпочтительный способ работы со службами.
sudo systemctl [действие] [имя службы]
Например, рассмотрим как запустить, остановить или перезапустить службу брандмауэра ufw в Ubuntu.
Откройте окно терминала и введите следующие команды.
sudo systemctl start ufw
sudo systemctl stop ufw
sudo systemctl restart ufw
Проверить статус службs:
sudo systemctl status ufw
Управление сервисами с помощью systemd
Запуск / остановка / перезапуск сервисов в Ubuntu с помощью команды service
Вы также можете запускать, останавливать или перезапускать службы, используя service. Откройте окно терминала и введите следующие команды.
sudo service ufw start
sudo service ufw stop
sudo service ufw restart
Проверить статус службы:
sudo service ufw status
Использование скриптов Init для управления сервисами в Ubuntu
Вы можете запускать, останавливать или перезапускать службы, используя сценарии инициализации в каталоге /etc/init.d. Этот каталог на самом деле содержит в себе различные скрипты для разных сервисов.
Сценарии инициализации устарели с тех пор, как Ubuntu перешла на Systemd, поэтому этот метод будет использоваться, только если вам приходится иметь дело со старой версией Ubuntu. Откройте окно терминала и введите следующие команды.
/etc/init.d/ufw start
/etc/init.d/ufw stop
/etc/init.d/ufw restart
Проверить статус службы:
/etc/init.d/ufw status
Таким образом, вы можете запускать, останавливать и перезапускать службы разными способами, не перезагружая всю операционную систему. Вы также можете использовать эти команды в других дистрибутивах Linux.
Источник: admin812.ru