Forum Linux.général Commande nohup pour un script qui demande une information avant lancement.

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
10
sept.
2017

Bonjour à toutes et à tous,

Je veux lancer la commande suivante sur mon petit linux.
# nohup python3.6 script.py

Le soucis c'est que le script demande au lancement le nombre d'occurrences (nombre de fois qu'il doit s’exécuter)
Hors avec la commande nohup il ne me pose pas la question….

Auriez vous une idée ?

Merci pour votre aide !

Saïd

  • # Modifier le script ...

    Posté par  . Évalué à 5.

    … pour lui paser le nombre de fois qu'il doit s'exécter en paramètre.

  • # man nohup

    Posté par  . Évalué à 0.

    …
    NOM
           nohup - Exécuter une commande en la rendant insensible aux déconnexions, avec une sortie hors terminal
    …
    

    La demande sera (peut-être, en fonction du script) redirigée vers le fichier nohup.out

  • # En cherchant un peu ....

    Posté par  . Évalué à 3.

    j'ai trouvé le module pexpect qui pourrait t'aider. Il te suffira d'écrire un script python qui appelle ton script en simulant une entrée sur le terminal.

    Voir la doc pour plus d'infos (je n'ai jamais utilisé ce module). Sinon dans l'absolu, il ne faut jamais écrire un script qui demande des valeurs en interactif sans lui laisser la possiblilité de prendre les valeurs d'une autre façon (fichier de conf, paramètres en ligne de commande).

  • # tmux

    Posté par  (site web personnel) . Évalué à 3.

    Tu ouvres un tmux (il faut installer tmux)

    Là, tu vas pouvoir lancer ta commande.
    Et si la connexion se ferme, le tmux lui reste actif.

    Je te laisse regarder tmux, en moins de 5 minutes tu connaîtras les raccourcis claviers de base.

    Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

  • # screen

    Posté par  . Évalué à 4.

    similaire à tmux,
    tu lances screen -RdS un_nom_pour_toi

    puis dedans tu lances la commande, sans le nohup
    tu reponds à la question
    puis tu "detaches" le screen (Ctrl+a+d il me semble)

    et tu reviens dessus plus tard, en refaisant le screen -RdS un_nom_pour_toi

  • # dtach

    Posté par  . Évalué à 1.

    Sinon, essaie setsid :

    setsid ./monscript.sh < input.txt
    • [^] # Re: dtach

      Posté par  . Évalué à 1.

      ne pas oublier & à la fin bien évidemment.

  • # manque de précisions.

    Posté par  (Mastodon) . Évalué à 3.

    Ce serait plus simple si on connaissait la raison de lancer ce script avec nohup.

    Si le but c'est de lancer le script en interactif de façon sporadique mais de survivre à une déconnection et ne pas avoir à gérer l'output je dirais que le plus simple c'est de le lancer normalement dans bash, choisir le nombre d'occurences et ensuite d'utiliser la commande interne de bash disown pour le détacher de son parent.

    Si le but c'est de le lancer de façon non interactive le plus simple reste de modifier le script python pour soit prendre le nombre d'occurences en argument, soit la fixer dans une variable.

  • # je persiste

    Posté par  . Évalué à 1.

    Comme je le disais dans mon précédent message => je reformule (car vu le 0, je suppose que ça n'a pas été bien compris)
    tout dépend de ce que fait ce script et comment il le fait.
    Il peut tout aussi bien avoir été créé de façon à détecter s'il est exécuté dans un environnement interactif ou non,
    dans ce cas, je suppose qu'il ne retournera rien sur son flux stdout
    Sinon, le flux stdout de python3.6 sera redirigé dans le fichier nohup.out étant donné que la commande nohup précédait le lancement de son interpréteur de commandes.

    Bien sûr, en fonction de ce que fait le script et comment il le fait il devrait être possible de lui faire prendre en compte une liste de paramètres

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.