|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour
Existe t-il une commande Unix permettant de savoir si le script en cours d'exécution est executé en batch ou en intéractif ? J'aimerais la chose suivante : dès le moment où un script est exécuté manuellement il faut alors qu'il soit remplacé par un batch. Je sais qu'il existe le & pour le soumettre directement : c'est juste une convivialité supplémentaire afin d'éviter que plusieurs personnes soumettent en même temps un script merci |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
2006-03-6, 07:36(-08), Marbolito:
> Bonjour > > Existe t-il une commande Unix permettant de savoir si le script en > cours d'exécution est executé en batch ou en intéractif ? Qu'est-ce que tu entends par la, et comment fais-tu toi-meme la difference? > J'aimerais la chose suivante : dès le moment où un script est > exécuté manuellement il faut alors qu'il soit remplacé par un batch. Qu'est-ce que tu entends par "par un batch" et par "manuellement"? Par opposition a quoi? > Je sais qu'il existe le & pour le soumettre directement : c'est juste > une convivialité supplémentaire afin d'éviter que plusieurs > personnes soumettent en même temps un script [...] Je ne te suis pas. Si tu veux verifier que l'entree standard est un terminal, tu peux faire [ -t 0 ], si tu veux verifier que le shell executant le script is attaché a un terminal: (: >> /dev/tty) 2> /dev/null Tu peux mettre tout le contenu de ton script dans: #! /bin/sh - ( # tout le contenu de ton script ) & si tu veux que le script s'execute en background. Tu peux utiliser setsid or start-stop-daemon (ou nohup), si tu veux que le script s'execute en background sans etre lié a une quelconque session de login. Si tu veux empecher l'execution concurrente de deux instances du meme script, tu peux utiliser les des mechanism de verouillage, ou start-stop-daemon. Note que ni start-stop-daemon ni setsid ne sont des commandes standard. -- Stéphane |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Marbolito a écrit :
> Bonjour > > Existe t-il une commande Unix permettant de savoir si le script en > cours d'exécution est executé en batch ou en intéractif ? > > J'aimerais la chose suivante : dès le moment où un script est > exécuté manuellement il faut alors qu'il soit remplacé par un batch. > Je sais qu'il existe le & pour le soumettre directement : c'est juste > une convivialité supplémentaire afin d'éviter que plusieurs > personnes soumettent en même temps un script > > merci > Extrait de /etc/bash.bashrc d'une Debian Sarge # If running interactively, then: if [ "$PS1" ]; then A+ Chris |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Chris <chris@sra.fr> writes:
> Marbolito a écrit : >> Bonjour >> Existe t-il une commande Unix permettant de savoir si le script en >> cours d'exécution est executé en batch ou en intéractif ? >> J'aimerais la chose suivante : dès le moment où un script est >> exécuté manuellement il faut alors qu'il soit remplacé par un batch. >> Je sais qu'il existe le & pour le soumettre directement : c'est juste >> une convivialité supplémentaire afin d'éviter que plusieurs >> personnes soumettent en même temps un script merci >> > > Extrait de /etc/bash.bashrc d'une Debian Sarge > > # If running interactively, then: > if [ "$PS1" ]; then As always, first: man bash An interactive shell is one started without non-option arguments and without the -c option whose standard input and error are both connected to terminals (as determined by isatty(3)), or one started with the -i option. PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state. I would rather test $- for i, because any careless initialization file could set PS1 even for non-interactive shells. case "$-" in *i*) echo "interactif" ;; *) echo "batch" ;; esac -- __Pascal Bourguignon__ http://www.informatimago.com/ ATTENTION: Despite any other listing of product contents found herein, the consumer is advised that, in actuality, this product consists of 99.9999999999% empty space. |
|
![]() |
| Outils de la discussion | |
|
|