Debian базираните дистрибуции използват Sys-V при стартиране на системата за изпълнение на команди. Sys-V е система от нива в които трябва да зареди операционната система. В Debian и Ubuntu само шел (без десктоп) е второ ниво. По принцип нивата на изпълнения са:
0 спиране на системата
1 еднопотребителски режим
2 до 5 многопотребителски режим
6 рестартиране на системата
Ако искам да добавя нов скрипт когато системата зарежда първо трябва да го поставя в директорията /etc/init.d/. Много от скриптовете вече се намират в тази директория и аз ще създам един много прост такъв който е разделен на две части изпълнявайки секция старт и секция стоп ….
#!/bin/bash case "$1" in start) echo -n "Starting services:" ;; stop) echo -n "Stopping services:" ;; restart) echo -n "Restarting services:" ;; status) echo -n "Status services:" ;; *) echo "Usage: /etc/init.d/test {start|stop|restart|status}" exit 1 esac exit 0 |
След като сме създали файла трябва да го направим изпълним с командата:
chmod 755 /etc/init.d/test |
След което трябва да го добавя в символните връзки на системата за да се зарежда този скрипт на всяко едно ниво update-rc.d
root@srv:~# update-rc.d test defaults Adding system startup for /etc/init.d/test ... /etc/rc0.d/K20test -> ../init.d/test /etc/rc1.d/K20test -> ../init.d/test /etc/rc6.d/K20test -> ../init.d/test /etc/rc2.d/S20test -> ../init.d/test /etc/rc3.d/S20test -> ../init.d/test /etc/rc4.d/S20test -> ../init.d/test /etc/rc5.d/S20test -> ../init.d/test |
Самият скрипт при заредена система може да се стартира и спира по следния начин:
/etc/init.d/test start /etc/init.d/test stop |
А ако искам да премахна скрипта да не се стартира при зареждане на системата трябва да изпълня
root@srv:/etc/rc2.d# update-rc.d -f test remove update-rc.d: /etc/init.d/test exists during rc.d purge (continuing) Removing any system startup links for /etc/init.d/test ... /etc/rc0.d/K20test /etc/rc1.d/K20test /etc/rc2.d/S20test /etc/rc3.d/S20test /etc/rc4.d/S20test /etc/rc5.d/S20test /etc/rc6.d/K20test |
Разбира се в скрипта могат да се добавят още секции като monitor|force-reload|status и други.
Човек, дори и да знае много, подробностите винаги се позабравят. Статията помогна много бързо да се схваната и припомнят тези подробности и детайли!
Благодаря много!!! 🙂