Команда для перечисления служб, которые запускаются при запуске?

144

Есть ли команда для вывода списка служб, которые запускаются при запуске? Я предполагаю, что это будет связано с разбором /etc/init.d/и различными /etc/rc.*каталогами.

Эрик Х
источник

Ответы:

104

Вы можете просто использовать команду initctl listоболочки для просмотра содержимого, /etc/initа не предлагаемой dbus-sendкоманды.

Скотт
источник
2
Это работает в Ubuntu 18.04? Я получаю "initctl: команда не найдена" (в bash)
Санджай Манохар
121

Быстрый ответ: это зависит от вашей initсистемы.

Длинный ответ: для текущих версий Ubuntu у вас, вероятно, есть сочетание Upstart и SystemV . Более новые версии Ubuntu после 15.04 «Vivid Vervet» (и других дистрибутивов Linux, таких как RHEL / CentOS 7) переходят на использование SystemD .

Выскочка

Чтобы перечислить все услуги:

initctl list

Чтобы вывести список всех сервисов Upstart и запустить initctl show-configих, эта строка может быть полезна:

initctl list | awk '{ print $1 }' | xargs -n1 initctl show-config

Система V

Чтобы перечислить все услуги:

service --status-all

ИЛИ ЖЕ:

# for init scripts:
ls /etc/init.d/

# for runlevel symlinks:
ls /etc/rc*.d/

Systemd

Чтобы перечислить все услуги:

systemctl list-unit-files --type=service

ИЛИ ЖЕ:

ls /lib/systemd/system/*.service /etc/systemd/system/*.service
TrinitronX
источник
9
Это должен быть принятый ответ.
Sjas
service --status-allНЕ показывает, включены ли службы для запуска при загрузке, по крайней мере, в Ubuntu 16. Показывает, запущены ли службы в настоящее время или нет.
Wildcard
1
Я должен был sudo service --status-allполучить все услуги, чтобы показать. Некоторые из них были скрыты, когда я работал только service --status-allпод учетной записью без полномочий root.
Великолепный
@Phlucious: Спасибо за упоминание этого. Я предположил , что это было хорошо известно , что эти команды обычно работают как корень ( systemctl, service, initctl...) , поскольку они, как правило , считаются команды системного администрирования.
TrinitronX
13

Каталоги /etc/init.dи /etc/rc.*были заменены upstartинструментом ' ' init '. Хотя сценарии в этих каталогах будут выполняться должным образом, новый метод запуска вещей в init определяется файлами в/etc/init/

Вы можете составить список всех заданий с выскочкой, выполнив запрос на выгрузку через dbus:

dbus-send --print-reply --system --dest=com.ubuntu.Upstart \
        /com/ubuntu/Upstart com.ubuntu.Upstart0_6.GetAllJobs

Возможно, вам придется изменить, 0_6чтобы отразить версию вашего выскочки. Эта команда работает с моей установкой Lucid.

Джереми Керр
источник
3
@Eric H: Не могли бы вы вместо этого установить правильный ответ initctl list- намного лучше, чем эта команда dbus. Я хотел бы оставить этот ответ здесь для справки (а не удалить его полностью), хотя.
Джереми Керр
12

Если вам нужно хорошее графическое представление сервисов и времени, которое требуется для загрузки, попробуйте:

apt-get install bootchart
Базз-DEE
источник
11

Я использую, initctl show-config <servicename>чтобы действительно получить информацию о том, когда / если ваш сервис запустится во время загрузки.

Вот так:

$ initctl show-config myservice
myservice
  start on runlevel [2345]
  stop on runlevel [!2345]

Или для NFS4 idmap-daemon:

$ initctl show-config idmapd
idmapd
  start on (local-filesystems or mounting TYPE=nfs4)
  stop on runlevel [06]

chkconfig предпочтительнее только в системах на базе RedHat imho.

CBmemnon
источник
1
Это правильный ответ. Я понятия не имею, почему все неправильные и неполные ответы так высоко оценены.
Cerin
1
Это работа для людей, использующих SysV, я согласен, что это хороший ответ, но он неполный.
Габриэль Нетто
9

12.04 мы могли использовать:

sudo apt-get install chkconfig
chkconfig --list

но он был удален в 12.10 .

Пример вывода:

acpi-support              0:off  1:off  2:on   3:on   4:on   5:on   6:off
acpid                     0:off  1:off  2:off  3:off  4:off  5:off  6:off
apparmor                  0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник
2
Не работает в Ubuntu. packages.ubuntu.com/…
AB
@AB спасибо, что дали мне знать! В наши дни комментаторы редко дают комментарии: это требует смелости и позволяет мне учиться. обновленный версией, в которой это работает.
Сиро Сантилли 事件 改造 中心 法轮功 六四 事件
Точно
0

Помимо системных сервисов и скриптов под:

/etc/init.d/
/ lib / systemd / system /
/ etc / systemd / system /

Возможно, есть и приложения AutoStart , например:

find / -name "*autostart*"

ls -1 "/etc/xdg/autostart" "/home/$USER/.config/autostart" "/usr/share/gdm/autostart"  "/usr/share/gnome/autostart"
Ноам Манос
источник
-2

Используя gawk:

ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}'

Пример вывода:

$ ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}' | egrep README
README 0,1,2,3,4,5,6,S
Карлос Алвсан
источник