PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > Détecter si un script est exécuté en intéractif ou en batch
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

Détecter si un script est exécuté en intéractif ou en batch

Réponse
 
LinkBack Outils de la discussion
Vieux 06/03/2006, 15h36   #1
Marbolito
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Détecter si un script est exécuté en intéractif ou en batch

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

  Réponse avec citation
Vieux 06/03/2006, 16h06   #2
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Détecter si un script estexécuté en intéractif ou en batch

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
  Réponse avec citation
Vieux 07/03/2006, 08h41   #3
Chris
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Détecter si un script est exécuté en intéractif ou en batch

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
  Réponse avec citation
Vieux 07/03/2006, 08h55   #4
Pascal Bourguignon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Détecter si un script est exécuté en intéractif ou en batch

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.
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 02h23.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,11528 seconds with 12 queries