Създаване на скрипт изпълняващ се при зареждане – Debian базирани дистрибуции …
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 и други.