Усъвършенстван софтуерен контрол 1
Разширено управление на софтуера на FreeBSD, част 1
FreeBSD поддържа много различни софтуерни продукти. Повечето от тях са достъпни като изходен код, така че могат да бъдат изградени като оригинален FreeBSD софтуер. И благодарение на интелигентната организация на FreeBSD, той може да изпълнява и програми от много други операционни системи. Нека да видим как това може да се приложи. Фокусът ще бъде върху популярния пакет за съвместимост с Linux, който позволява на Linux програмите да работят на FreeBSD без модификация.
Освен това, за да стартирате програми по време на зареждане и да ги спрете при изключване на системата, скриптовете за стартиране и изключване трябва да бъдат редактирани и пресъздадени. Тук ще разгледаме как да внедрим и управляваме такива системи на FreeBSD.
Също така тук ще бъде разгледана работата на системи с множество процесори и тяхното взаимодействие със софтуера. Докато множество процесори могат да добавят много мощност към системата, те няма да направят нищо добро, ако програмите не са правилно конфигурирани.
Стартиране и спиране на скриптове.
Основните програми на FreeBSD се стартират с /
но допълнителните програми се изпълняват от отделни скриптове, които се инсталират от система от "портове" и пакети. Въпреки това, когато инсталирате своя собствена програма, трябва да създадете скрипт, който контролира как се стартира и спира. За да промените начина на стартиране на съществуващ пакет, трябва да разберете как работят скриптовете за стартиране и спиране.
контролирайте процеса на стартиране на основната система. По време на първоначалното зареждане скриптовете за стартиране на FreeBSD проверяват няколко директории и изпълняват всички допълнителни командни скриптове, които намерят.
Скриптовете за стартиране и изключване най-често се намират в директорията /usr/local/etc/rc.d, но може да се намират и в /usr/XllR6/etc/rc.d по подразбиране.
Тези директории са зададени в /etc/defaults/rc.conf и могат да се променят в /etc/rc.conf.
Допълнителни директории на скриптове могат да се добавят с помощта на променливата local_startup в rc.conf.
Когато търси командни скриптове, системата ще проверява тези директории за файлове, чиито имена завършват на ".sh".
Ако системата намери такъв файл, той се третира като команден скрипт и се изпълнява с аргумента start. Когато е спряна, системата FreeBSD изпълнява същите скриптове с аргумента stop. Очаква се скриптовете да приемат тези аргументи и да изпълняват подходящите действия.
Типичен сценарий за стартиране
Помислете за типичен стартиращ скрипт, snmpd.sh. Той е част от пакета net-snmp, който ще бъде разгледан след малко. Засега е достатъчно да знаете, че този скрипт стартира SNMP сървъра при зареждане и спира този демон при изключване на системата. Ето го скрипта:
в ако ! PREFIX=$(expr $0 : "(L -)/etc/rc.d/$(базово име $0)$"); then echo "SO: Не може да се определи ПРЕФИКСЪТ" >&2 изход 1
® случай "$1" в началото)
[ -x $ < PREFIX>/sbin/snmpd ] && $< PREFIX>/sbin/snmpd && ехо -n 'snmpd'
killall snmpd && ехо -n 'snmpd'
echo "Използване: базово име $0" < стартиране>" >&2 • •i
Редът #!/bin/sh (O) показва, че това е shell скрипт. Останалата част от файла (подобно на партиден файл в Windows) съдържа команди, които се изпълняват от скрипта.
Например, ако стартирате този скрипт като snmpd.sh start, той ще изпълни следната команда:
[ -X $/sbin/snmpd ] && $/sbin/snmpd&& ехо -n 'snmpd'
Това са стандартни команди на shell. Първо се проверява съществуването на програмата snmpd. Ако има такава програма, тя се изпълнява и показва името си. По същия начин, ако извикате скрипта с аргумента stop, той лесно ще убие всички snmpd процеси.
За да промените начина на стартиране на пакет, трябва да редактирате стартовия скрипт. Например, за да стартирате snmpd с аргумент -0, трябва да редактирате началния ред. Намерете частта от командата, която стартира snmpd и я променете:
[ -x $/sbin/snmpd ] && $/sbin/snmpd -0 && ехо -n 'snmpd'
Тези скриптове могат да се използват не само по време на стартиране и изключване, но и по време на работа на системата. Например, за да рестартирате демона snmpd и да го принудите да прочете отново своя конфигурационен файл, можете да изпълните следната команда: