Как вывести список системных служб в Linux

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

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

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

 

Как вывести список активных сервисов в systemd

Сервисы systemd управляются командой systemctl. Если вы запускаете systemctl без каких-либо аргументов, он вызывает подкоманду по умолчанию list-units и перечисляет различные типы системных модулей, таких как службы, сокеты, цели и т. д.

Но ваша цель состоит в том, чтобы перечислить сервисы, чтобы вы указали тип устройства с флагом —type, например:

systemctl --type=service

Вы заметили, что мы не указали подкоманду list-units, потому что она используется по умолчанию? Если вы хотите следовать соглашению, вы также можете указать это. Мы предпочитаем это таким образом, и мы буду следовать этой конвенции в оставшейся части статьи.

systemctl list-units --type=service

В обоих случаях вывод будет одинаковым. По умолчанию эта команда показывает только загруженные и активные службы в алфавитном порядке:

  UNIT                     LOAD   ACTIVE SUB     DESCRIPTION                                                       

  accounts-daemon.service  loaded active running Accounts Service                                                  

  acpid.service            loaded active running ACPI event daemon                                                 

  alsa-restore.service     loaded active exited  Save/Restore Sound Card State                                     

  apparmor.service         loaded active exited  Load AppArmor profiles                                            

  apport.service           loaded active exited  LSB: automatic crash report generation

 

Позвольте нам объяснить вывод:

  • UNIT: имя системного блока.
  • LOAD: был ли файл конфигурации модуля проанализирован systemd.
  • ACTIVE: состояние высокого уровня устройства.
  • SUB: состояние низкого уровня устройства. Активный блок может находиться в рабочем состоянии или в состоянии выхода. Это значение зависит от типа услуги.

Как видите, вы можете перечислить загруженные сервисы в вашей системе Linux. Но активная служба systemd может быть запущена или может быть закрыта (после успешного запуска).

 

Список всех запущенных сервисов systemd

Активное состояние также может иметь под-статус, например, запущен, завершен и т. д. Вы можете использовать тот же флаг —state с под-состоянием.

Чтобы вывести список запущенных сервисов systemd, используйте такой флаг —state=running:

systemctl list-units --type=service --state=running

Вот пример вывода для моей системы, показывающий некоторые из запущенных сервисов systemd:

  UNIT                        LOAD   ACTIVE SUB     DESCRIPTION                                                     

  accounts-daemon.service     loaded active running Accounts Service                                                

  acpid.service               loaded active running ACPI event daemon                                               

  avahi-daemon.service        loaded active running Avahi mDNS/DNS-SD Stack                                         

  bluetooth.service           loaded active running Bluetooth service                                               

  bolt.service                loaded active running Thunderbolt system service

 

Список всех загруженных системных сервисов, включая неактивные

По умолчанию команда systemctl отображает только загруженные и активные модули.

Если вы хотите перечислить все загруженные сервисы, включая неактивные, используйте флаг —all:

systemctl list-units --all --type=service

Теперь вы можете увидеть даже неактивные сервисы:

  UNIT                                                  LOAD      ACTIVE   SUB     DESCRIPTION                                                                     

  accounts-daemon.service                               loaded    active   running Accounts Service                                                                

  acpid.service                                         loaded    active   running ACPI event daemon                                                               

  alsa-restore.service                                  loaded    active   exited  Save/Restore Sound Card State                                                   

  alsa-state.service                                    loaded    inactive dead    Manage Sound Card State (restore and store)                                     

  anacron.service                                       loaded    inactive dead    Run anacron jobs                                                                

  apparmor.service                                      loaded    active   exited  Load AppArmor profiles

 

Список всех неактивных сервисов systemd

Если вы хотите увидеть только неактивные услуги, вы можете комбинировать различные флаги , как —all и —state, как это:

systemctl list-units --all --type=service --state=inactive

Как вы можете видеть в выводе, он отображает все неактивные сервисы systemd:

  UNIT                                   LOAD      ACTIVE   SUB  DESCRIPTION                                                                     

  alsa-state.service                     loaded    inactive dead Manage Sound Card State (restore and store)                                     

  anacron.service                        loaded    inactive dead Run anacron jobs                                                                

  apport-autoreport.service              loaded    inactive dead Process error reports when automatic reporting is enabled                       

  apt-daily-upgrade.service              loaded    inactive dead Daily apt upgrade and clean activities                                          

  apt-daily.service                      loaded    inactive dead Daily apt download activities                                                   

● auditd.service                         not-found inactive dead auditd.service

 

Список всех установленных сервисов systemd (даже если они не загружены)

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

systemctl list-unit-files --type=service

Вот что вы должны увидеть:

UNIT FILE                                  STATE           VENDOR PRESET

accounts-daemon.service                    enabled         enabled      

acpid.service                              disabled        enabled      

alsa-restore.service                       static          enabled      

alsa-state.service                         static          enabled      

alsa-utils.service                         masked          enabled      

anacron.service                            enabled         enabled      

apparmor.service                           enabled         enabled      

apport-autoreport.service                  static          enabled      

apport-forward@.service                    static          enabled

Объяснение каждого типа состояния будет слишком длинным и не рассматривается в этой статье.

Список всех системных сервисов, которые будут запускаться при каждой загрузке автоматически

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

systemctl list-unit-files --type=service --state=enabled

Вы путаете с включенным состоянием? Это нормально. Многие новые пользователи путают включенную системную службу с запущенной службой.

Однако включенная служба systemd означает, что служба будет активирована автоматически при загрузке системы.

UNIT FILE                                  STATE   VENDOR PRESET

accounts-daemon.service                    enabled enabled      

anacron.service                            enabled enabled      

apparmor.service                           enabled enabled      

autovt@.service                            enabled enabled      

avahi-daemon.service                       enabled enabled      

binfmt-support.service                     enabled enabled      

bluetooth.service                          enabled enabled      

console-setup.service                      enabled enabled      

containerd.service                         enabled enabled      

cron.service                               enabled enabled      

cups-browsed.service                       enabled enabled      

cups.service                               enabled enabled      

dbus-fi.w1.wpa_supplicant1.service         enabled enabled      

Вы замечаете предустановку поставщика? Это также присутствовало в предыдущем примере.

Предустановка поставщика определяет автоматическое поведение модуля systemd при установке программы.

Предположим, вы установили новую программу XYZ. В этом XYZ есть служба systemd под названием xyz.service с включенной предустановкой поставщика. Это означает, что после установки программы, при загрузке системы, этот xyz.service будет активирован автоматически во время загрузки.

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

sudo systemd enable xyz.service

 

Отобразить состояние определенного сервиса systemd

До сих пор вы видели различные способы листинга услуг. Но ничто не фокусируется на одном сервисе.

Вы можете получить подробную информацию о сервисе systemd, используя подкоманду systemctl status. Завершение вкладки работает с этой командой.

systemctl status <service_name>

Вот пример со службой сетевого менеджера:

abhishek@itsfoss:~$ systemctl status NetworkManager.service 

● NetworkManager.service - Network Manager

     Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)

     Active: active (running) since Thu 2020-08-02 12:41:22 IST; 6h 3min ago

       Docs: man:NetworkManager(8)

   Main PID: 711 (NetworkManager)

      Tasks: 3 (limit: 9157)

     Memory: 14.2M

     CGroup: /system.slice/NetworkManager.service

             └─711 /usr/sbin/NetworkManager --no-daemon



Aug 02 12.42:50 itsfoss NetworkManager[711]: <info>  [1595472170.7159] device (wlp58s0): Activation: successful, device activated.

Aug 02 12.42:50 itsfoss NetworkManager[711]: <info>  [1595472170.7179] manager: startup complete

Aug 02 12.42:51 itsfoss NetworkManager[711]: <info>  [1595472171.5592] manager: NetworkManager state is now CONNECTED_GLOBAL

Aug 02 12.42:52 itsfoss NetworkManager[711]: <info>  [1595472172.7973] dhcp6 (wlp58s0): activation: beginning transaction (timeout in 45 seconds)

Aug 02 12.42:52 itsfoss NetworkManager[711]: <info>  [1595472172.8017] policy: set 'JioFi3_215810' (wlp58s0) as default for IPv6 routing and DNS

Aug 02 12.42:52 itsfoss NetworkManager[711]: <info>  [1595472172.8058] dhcp6 (wlp58s0): option dhcp6_name_servers   => 'fe80::a8dc:79ff:fe1b:57fe'

Aug 02 12.42:52 itsfoss NetworkManager[711]: <info>  [1595472172.8059] dhcp6 (wlp58s0): state changed unknown -> bound

Aug 02 12.42:59 itsfoss NetworkManager[711]: <info>  [1595472179.9251] agent-manager: agent[bdd71d4a66098713,:1.84/org.gnome.Shell.NetworkAgent/1>

Aug 02 12:42:10 itsfoss NetworkManager[711]: <info>  [1595483290.7874] manager: NetworkManager state is now CONNECTED_SITE

Aug 02 12:42:11 itsfoss NetworkManager[711]: <info>  [1595483291.5893] manager: NetworkManager state is now CONNECTED_GLOBAL

 

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

Если вы хотите проверить, активен ли сервис в сценарии оболочки, вы можете использовать подкоманду is-active. Выход для активного.

systemctl is-active application.service

Аналогично, если вы хотите проверить, включена ли служба (настроена ли она на автоматический запуск во время загрузки), вы можете использовать подкоманду is-enabled. Выход для включенного сервиса.

systemctl is-enabled application.service

Вывод

Мы думаем, что теперь у вас есть лучшее понимание перечисления сервисов systemd. Мы надеемся, что вы узнали немного нового о командах systemd и systemctl.

Не стесняйтесь оставлять свои отзывы, вопросы или предложения в разделе комментариев.

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!