web-dev-qa-db-fra.com

Pourquoi y a-t-il des liens symboliques de départ 'S' dans rc0.d (shutdown) et rc6.d (reboot)?

Démarrer les liens symboliques 'S' à l'arrêt et redémarrer les niveaux d'exécution?

Pourquoi y a-t-il des liens symboliques de démarrage 'S00-S99' dans rc0.d et rc6.d? Ubuntu 13.04 listing:

$ ls -l /etc/init.d/rc6.d

lrwxrwxrwx 1 root root  29 Oct 30 12:05 K10unattended-upgrades -> ../init.d/unattended-upgrades
lrwxrwxrwx 1 root root  20 Apr  4 15:07 K21postgresql -> ../init.d/postgresql
-rw-r--r-- 1 root root 351 Jan 30 04:58 README
lrwxrwxrwx 1 root root  18 Mar  6  2011 S20sendsigs -> ../init.d/sendsigs
lrwxrwxrwx 1 root root  17 Mar  6  2011 S30urandom -> ../init.d/urandom
lrwxrwxrwx 1 root root  22 Mar  6  2011 S31umountnfs.sh -> ../init.d/umountnfs.sh
lrwxrwxrwx 1 root root  20 Oct  7  2012 S35networking -> ../init.d/networking
lrwxrwxrwx 1 root root  18 Mar  6  2011 S40umountfs -> ../init.d/umountfs
lrwxrwxrwx 1 root root  20 Mar  6  2011 S60umountroot -> ../init.d/umountroot
lrwxrwxrwx 1 root root  16 Mar  6  2011 S90reboot -> ../init.d/reboot

Comme vous pouvez le constater, les deux premiers scripts sont des scripts 'K' (kill), ce à quoi nous nous attendions dans les niveaux d'exécution rc0 et rc6. Cependant, les sept prochains scripts sont des scripts 'de démarrage'.

J'ai lu le script /etc/init.d/rc et je l'ai compris pour les niveaux d'exécution 0 et 6 $ ACTION est codé en dur pour stop donc, même les scripts de démarrage 'S' reçoivent la commande 'stop':

case "$runlevel" in
0|6)
  ACTION=stop
  # Count down from 0 to -100 and use the entire bar
  first_step=0
  progress_size=100
  step_change=-1
  ;;

Encore une fois, ma question est la suivante: pourquoi même s’embêter avec les scripts "S00 - S99" dans les niveaux d’arrêt et de redémarrage? Pourquoi ne sont-ils pas tous des liens symboliques 'K00 - K99'?

3
Saad Malik

Je me demandais la même chose. Voir ma question à Quels arguments sont passés aux scripts d'initialisation lors de l'arrêt .

La raison en est que tous les scripts de rc0.d sont d'abord appelés avec start, puis de nouveau avec stop. De cette façon, vous pouvez ordonner l'exécution des scripts d'arrêt définitifs indépendamment de tout autre script d'arrêt à exécuter pendant l'arrêt.

1
LiKao