J'ai créé un script pour démarrer un serveur (ma première question). Maintenant, je veux qu'il s'exécute au démarrage du système et démarre le serveur défini. Que dois-je faire pour que cela soit fait?
Mes découvertes me disent de mettre ce fichier dans la /etc/init.d
emplacement, et il sera exécuté au démarrage du système. Mais je ne suis pas capable de comprendre comment le premier argument sur le démarrage sera start
? Est-ce prédéfini quelque part à utiliser start
comme $1
? Si je veux avoir un cas startall
Cela va démarrer tous les serveurs dans le script, alors quelles sont les options que je peux gérer?
Mon script est comme ça:
#!/bin/bash
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 (start|stop|restart)"
;;
esac
linux
shell-script
centos-5
vijay.shad
la source
la source
Réponses:
/etc/init.d
est le répertoire de script dans lequel les scripts exécutables apparaissent. Toutefois, pour exécuter les scripts dans un ordre particulier après le démarrage de votre système, vous devez ajouter des fichiers au/etc/rc#.d
annuaire. Les entrées qui apparaissent ici indiquent à votre système dans quel ordre et à quel niveau d'exécution les scripts de/etc/init.d
devrait être exécuté. Le nombre après le rc indique le niveau d'exécution de la machine, selon ce tableau:http://en.wikipedia.org/wiki/Runlevel
Donc si vous avez:
Ensuite, vous avez besoin des fichiers (vides):
Le S signifie commencer et le K signifie tuer. Lorsque votre machine démarre, le système dit "Ah, je suis sur RunLevel 3, passons à rc3.d pour voir quels scripts de '/etc/init.d' doivent être exécutés et dans quel ordre." Dans ce cas, le système triera par «S», puis par le nombre après «S» et exécutera «/etc/init.d/importantscript start». Le 20 sert uniquement à des fins de commande ... votre script se déroulera derrière "S19" et devant "S21". Vous pouvez créer ces fichiers simplement en faisant:
sudo touch /etc/rc.d/rc3.d/S20importantscript
Voici un bon résumé aussi: http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts
la source
Vous n'avez pas à - et ne devriez pas - créer de fichiers dans
/etc/rc.d/rcN.d/
; ce que vous devriez faire à la place est de mettre un commentaire dans la lecture de votre script initoù
NNN
est l'ensemble des niveaux d'exécution dans lesquels vous voulez que le script soit actif (par exemple,345
s'il est actif dans les niveaux d'exécution3
,4
, et5
), etA
etB
sont les priorités de départ et d’arrêt. ensuitechkconfig --add foo
(en supposant que votre script est nomméfoo
) créera les fichiers dans/etc/rc.d/rcN.d/
avec les noms appropriés.Vous pouvez alors utiliser
service foo bar
envoyer lebar
message à votre script (par exemple,start
,stop
, peu importe - c'est là ton$1
vient de).la source
$ 1 est l'argument de ligne de commande transmis à votre script. Il s'agit de l'un des éléments suivants: démarrer, arrêter ou redémarrer. Dans openSUSE Je ne me souviens pas d’avoir eu la possibilité de passer d’autres arguments dans le script lors de l’utilisation de l’éditeur de niveaux d’exécution, donc je pense que ce sont probablement les seuls que vous devriez utiliser.
Je n'utilise pas CentOS moi-même, mais il semble que le programme pour contrôler ce qui est démarré à quel niveau d'exécution est Ntsysv .
la source