Comment exécuter d'autres commands dans un script de démarrage Linux après le démarrage d'un process

J'essaie d'écrire un script de démarrage qui exécute une application (MapProxy) après un redémarrage du server. Mon server exécute Ubuntu 11.04 Natty 64 bits.

Dans le script, exec python /$path/"config.py" & un python script exec python /$path/"config.py" & qui crée avec succès un fcgi.socket avec lequel le server Web peut communiquer. Cependant, j'ai besoin de faire fcgi.socket en écriture ou MapProxy ne fonctionnera pas, c'est-à-dire que j'ai besoin d'action sur un chmod.

Il semble qu'après avoir actionné la config.py, je perds le contrôle dans le script de démarrage – ça ne passe pas pour que le fcgi.socket puisse être écrit. Des idées?

 #! /bin/bash : exec python /$path/"config.py" & exec chmod o+w /$path/"fcgi.socket" & exit 0 

3 Solutions collect form web for “Comment exécuter d'autres commands dans un script de démarrage Linux après le démarrage d'un process”

Nouveau script:

 #! /bin/bash python /$path/"config.py" && chmod o+w /$path/"fcgi.socket" 

& envoie un process en background et exécute immédiatement le prochain process. && attend la valeur de return du dernier process et si elle est nulle, le process suivant est démarré.

En supprimant votre exit 0 , vous obtiendrez le code d'erreur de n'importe quel process exécuté en dernier dans le script. Il devrait être nul, mais cette façon de propagation si vous avez une erreur.

Retirez les symboles exec s et & . Cela défigure le traitement en arrière-plan afin que la prochaine command puisse s'exécuter immédiatement. En effet, vous modifiez les permissions sur un file qui n'existe pas encore, car il faut du time pour que votre première command s'exécute et crée le socket.

Le bit important que vous semblez manquer est ce que fait la partie exec . De l' help exec de bash: "Remplacez le shell par la command donnée". Lorsque vous dites exec python /$path/"config.py" votre script dit essentiellement" J'ai fini ici, laissez Python l'emporter à partir d'ici, exécutez ce script Python, et tout ce qu'il returnne est ce que je renvoie ". Donc, rien plus tard dans le script ne sera exécuté. Il n'est pas logique d'utiliser la sortie, sauf si c'est la dernière chose que votre script fait.

Vous avez "quitter 0" à la fin de ce script qui dit "mon script devrait se terminer comme si tout avait réussi, peu importe ce qui aurait pu échouer". Si c'est vraiment ce que vous voulez, alors vous ne voulez pas utiliser exec, puisque votre code de sortie de scripts sera le code de sortie de n'importe quel process que vous exécutez. Au lieu de cela, vous pourriez vouloir renvoyer un résultat d'échec réel de python ou de chmod si vous en obtenez un.

  • Comment puis-je m'inscrire au serveur Linux avec le serveur DNS Windows?
  • MySQL: autorise les connexions distantes et locales
  • Problèmes de presse user et key avec mastic
  • Puis-je exécuter Apache2 et Nginx sur le même server avec seulement 1 IP
  • Ubuntu 11.04 se verrouille de manière random
  • Comment réduire la consommation de memory de celeryd?
  • Comment requestr à apt-get de sauter toutes les étapes de configuration après l'installation?
  • Comment sécuriser une nouvelle installation du server OS
  • Lighttpd ne redémarre pas (l'adresse est déjà utilisée)
  • Existe-t-il un client de messagerie open source qui fonctionnera avec Exchange 2007?
  • Comment réécrire le sujet de messagerie dans postfix pour le courrier sortant si From contient une adresse spécifique?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.