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

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This Post Has One Comment

  1. Somma

    Човек, дори и да знае много, подробностите винаги се позабравят. Статията помогна много бързо да се схваната и припомнят тези подробности и детайли!

    Благодаря много!!! 🙂