Ознайомтеся з Linux: Каталог /etc/init.d

Якщо ви використовуєте Linux, ви, швидше за все, чули про каталог init.d. Але що саме робить цей каталог? Зрештою, це одне, але це робить одне для всієї вашої системи, тому init.d дуже важливий. Каталог init.d містить ряд сценаріїв запуску / зупинки для різних служб у вашій системі. З цього каталогу керується все, від acpid до x11-common . Звичайно, це не так просто.

Якщо ви подивитеся на каталог / etc, ви знайдете каталоги, що знаходяться у формі rc # .d (де # - це число, яке відображає певний рівень ініціалізації - від 0 до 6). У кожному з цих каталогів є ряд інших сценаріїв, які керують процесами. Ці сценарії починатимуться з "K" або "S". Усі сценарії "K" виконуються перед сценаріями "S". І залежно від місця розташування скриптів буде визначати, коли сценарії ініціюються. Між каталогами системні служби працюють разом, як добре змащена машина. Але бувають випадки, коли вам потрібно запустити чи зупинити процес чисто і без використання команд kill або killall. Саме тут вам стане в нагоді каталог /etc/init.d .

Тепер, якщо ви використовуєте дистрибутив на зразок Fedora, ви можете знайти цей каталог у /etc/rc.d/init.d . Незалежно від місця, він служить одній і тій же цілі.

Щоб керувати будь-яким із скриптів в init.d вручну, ви повинні мати root (або sudo) доступ. Кожен скрипт буде виконуватися як команда, а структура команди буде мати вигляд:

/etc/init.d/command ВАРІАНТ

Де команда є фактичною командою для запуску, а OPTION може бути одним із наступних:

  • почати
  • Стоп
  • перезавантажити
  • перезапустити
  • перезавантаження

Найчастіше ви будете використовувати або пуск, зупинку, або перезапуск. Отже, якщо ви хочете зупинити свою мережу, ви можете випустити команду:

/etc/init.d/networking зупинка

Або якщо ви внесете зміни в свою мережу і вам потрібно перезапустити її, ви можете зробити це за допомогою наступної команди:

/etc/init.d/networking перезапуск

Деякі з найбільш поширених сценаріїв init у цьому каталозі:

  • мережа
  • самба
  • apache2
  • ftpd
  • sshd
  • голубець
  • mysql

Звичайно, у вашому каталозі можуть бути частіше використовувані сценарії - це залежить від того, що ви встановили. Наведений вище список взятий з установки Ubuntu Server 8.10, тому стандартна інсталляція на робочому столі мала б кілька менших сценаріїв мережевого типу.

А як щодо /etc/rc.local

Є третій варіант, який я досить часто використовував. Цей параметр - сценарій /etc/rc.local . Цей файл запускається після запуску всіх інших скриптів рівня init, тому безпечно ставити різні команди, які ви хочете видати при запуску. Багато разів я розміщую в цьому сценарії інструкції з монтажу таких речей, як nfs. Це також гарне місце для розміщення сценаріїв "усунення несправностей". Наприклад, одного разу у мене з'явилася машина, яка, чомусь, самба, здавалося, не хотіла запускати. Навіть afer перевірити, щоб переконатися, що демон Samba був налаштований на ініціалізацію при завантаженні. Тож замість того, щоб витрачати весь цей час наперед, я просто розмістив лінію:

/etc/init.d/samba start

у сценарії /etc/rc.local і Самба працював як шарм. Врешті-решт я повернусь і з цим проблемою зняти біду.

Фінальні думки

Linux гнучкий. Linux є таким гнучким, що існує майже неминуче безліч способів вирішити одну проблему. Запуск системної послуги є одним із таких питань. За допомогою системи /etc/init.d (а також /etc/rc.local ) ви можете бути впевнені, що ваша послуга почнеться.