J'ai un script d'arrêt pour Oracle dans /etc/init.d dir sur commande « stop », il fait:Kill processus dans bash qui s'exécute plus de temps spécifié?
su oracle -c "lsnrctl stop >/dev/null"
su oracle -c "sqlplus sys/passwd as sysdba @/usr/local/PLATEX/scripts/orastop.sql >/dev/null"
.. Le problème est quand lsnrctl ou sqlplus ne répondent pas - dans ce cas, ce Le script "stop" ne se termine jamais et le serveur ne peut pas s'arrêter. La seule façon - est de "tuer - 9" cela.
Je voudrais réécrire le script de sorte qu'après 5min (par exemple) si la commande n'est pas terminée - il devrait être terminé.
Comment puis-je y parvenir? Pourriez-vous me donner un exemple? Je suis sous Linux RHEL 5.1 + bash.
Je ne voudrais pas écrire cela dans bash; Je chercherais un programme qui fasse ça pour toi. Nous avons un outil interne pour cela (qui est malheureusement fermé). – JesperE
Est-ce difficile à Bash? Pourquoi préférez-vous votre propre outil? Je pourrais écrire un outil perl, java, mais je pense que faire dans bash est plus simple et natif? – zmische
Eh bien, c'est plus facile à faire dans quelque chose où vous avez un accès direct à waitpid, qui prend en charge une valeur de délai d'attente en soi. Bash va bien, cependant, et je l'ai utilisé (littéralement pour exactement ce but) dans le passé. (Ancien employeur, pas d'accès continu aux scripts, et j'ai assez dormi depuis lors que je ne me souviendrai probablement pas de ce qui est spécifique au domaine et utile). –