Запознайте се с 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/ мрежа за спиране

Или ако направите промяна в мрежата си и трябва да я рестартирате, можете да направите това със следната команда:

/etc/init.d/networking рестартиране

Някои от по-често срещаните скриптове на init в тази директория са:

  • мрежи
  • самба
  • apache2
  • FTPD
  • SSHD
  • гълъбарник
  • MySQL

Разбира се, че във вашата директория може да има по-често използвани скриптове - зависи от това какво сте инсталирали. Горният списък е взет от инсталация на Ubuntu Server 8.10, така че стандартната инсталация на десктоп ще има няколко по-малко скриптове от мрежов тип.

Но какво да кажем за /etc/rc.local

Има трети вариант, който доста често използвах. Тази опция е /etc/rc.local скрипта. Този файл се стартира, след като всички други скриптове на ниво init са стартирани, така че е безопасно да поставите различни команди, които искате да сте издали при стартиране. Много пъти ще поставя инструкции за монтаж за неща като nfs в този скрипт. Това също е добро място за поставяне на скриптове за „отстраняване на неизправности“. Например, след като имах машина, която по някаква причина самба сякаш не искаше да стартира. Дори афер проверка, за да се уверите, че демонът Samba е настроен да се инициализира при зареждане. Така че вместо да прекарвам цялото си време напред с това, просто поставих линията:

/etc/init.d/samba start

в сценария /etc/rc.local и Самба работеше като чар. В крайна сметка щях да се върна и да затрудня проблемите си.

Заключителни мисли

Linux е гъвкав. Linux е толкова гъвкав, че има почти неизбежно множество начини за решаване на един проблем. Стартирането на системна услуга е един такъв проблем. С помощта на системата /etc/init.d (както и /etc/rc.local ) можете да бъдете сигурни, че услугата ще започне.