Je cherche un script shell que je peux exécuter et qui exécutera un programme devant être exécuté pendant une durée infinie jusqu'à ce que je décide de le tuer.
Je suis déjà essayé nohup, écran, désavoué (dans Netcat / bin / sh Shell), mais ils ont tous échoué à faire le travail.
Le programme qui doit être exécuté a également besoin d’arguments.
EDIT: Les commentaires m'ont demandé de mentionner les problèmes avec les méthodes que j'ai essayées.
nohup: La fermeture de la fenêtre NetCat ferme également le processus
bg: Au début, NetCat indique: "Aucun contrôle de travail dans cette session"
désavoué: même résultat que nohup
écran: "Doit être connecté à un terminal"
Réponses:
Remplacez "bash foo.sh" par tout ce dont vous avez besoin pour exécuter. ne survivra pas aux redémarrages.
modifier: Vous pouvez imprimer des fichiers $$ dans un fichier dans la zone else, avant l'exécutable si vous souhaitez capturer le pid. Vous pouvez aussi juste passer de la sortie du PS à grep pour tuer en fonction du pid.
la source
Tout d'abord, un script shell ne peut empêcher certains processus (d'arrière-plan) de se terminer si le système d'exploitation décide de le tuer ou si le processus se termine. Cela dit, voici une suggestion sur la façon de redémarrer un service. C'est brutal, mais simple.
Créez un fichier "sémaphore" et utilisez-le pour rompre une boucle permanente qui redémarre un travail.
Source le fichier dans votre shell et exécutez les fonctions. Le script peut contenir des erreurs, mais l'idée devrait être utilisable.
la source