IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

[ SunOS ] Récupérer temps epoch et epoch fichier


Sujet :

Shell et commandes POSIX

  1. #1
    Membre à l'essai
    Femme Profil pro
    Consultant MOA
    Inscrit en
    Décembre 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant MOA

    Informations forums :
    Inscription : Décembre 2012
    Messages : 24
    Points : 17
    Points
    17
    Par défaut [ SunOS ] Récupérer temps epoch et epoch fichier
    Bonjour à tous

    Sous SunOS, je chercher à obtenir le temps epoch (en secondes donc) et le temps epoch d'un fichier.
    Avec une simple soustraction, je pourrais voir depuis combien de seconde le fichier est présent dans le répertoire.

    Seulement la commande date +%S ne marche pas sous SunOS Et pas moyen de trouver comment récupérer le temps epoch.

    Avez-vous une solution ?
    Merci d'avance

  2. #2
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Sous Linux, c'est Sous Solaris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nawk 'BEGIN{srand();print srand()}'
    ɹǝsn *sıɹɐlos*

  3. #3
    Membre à l'essai
    Femme Profil pro
    Consultant MOA
    Inscrit en
    Décembre 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant MOA

    Informations forums :
    Inscription : Décembre 2012
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Ca marche pour obtenir le temps epoch de maintenant
    Pour obtenir celui du fichier, j'ai été obligé d'utiliser du perl ...

    Ce qui me donne l'extrait de code suivant qui permet de calculer la difference

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Maintenant=$(nawk 'BEGIN{srand();print srand()}')
    for i in $(ls .)
    do
    	date_fichier=$(perl -e 'printf "%d\n" ,(stat($ARGV[0]))[9]' $i) 
    	decalage_en_seconde=$[$Maintenant - ${date_fichier}]
    	decalage_en_unite=$[$decalage_en_seconde / $Diviseur_pour_unite] #Permet de convertir les secondes dans l'unite souhaite
     
    	#Si le fichier est plus vieux que la limite, alors ...
    	if [ "$decalage_en_unite" -ge "$Temps_limite" ]; then
    		echo "$i present depuis $decalage_en_unite $Unite" # ...affichage du fichier
    	fi
    done

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 562
    Points : 19 397
    Points
    19 397
    Par défaut
    non, non.
    toujours pas for i in $(ls), ni for i in $(commande),
    mais bien for f in *
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Consultant MOA
    Inscrit en
    Décembre 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant MOA

    Informations forums :
    Inscription : Décembre 2012
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Heu, je ne comprends pas pourquoi for i in $(ls) est incorrect.
    j'ai besoin de ne prendre QUE les fichiers en *.dat, donc j'ai mis Dois-je mettre le résultat de ls dans une variable puis l’appeler dans le for pour que cela soit correct ?

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Citation Envoyé par laliemendez Voir le message
    Heu, je ne comprends pas pourquoi for i in $(ls) est incorrect.
    Cette question a été maintes fois traitées ici (faire une recherche sur les forums shell Linux et ici même).

    Deux raisons principales :
    1 - ça t'évites de faire appel à une commande externe inutilement, ce qu'il faut toujours faire autant que possible (c'est pas toujours possible mais souvent ce qu'on fait par automatisme avec une commande est possible en shell pur).

    2 - le parcours de la sortie d'une commande dans une boucle for se fait mot par mot. Donc si tu as un fichier ou répertoire composés d'espaces, il ne sera pas vu comme une valeur parcourue mais comme plusieurs (ce qui bien évidemment posera problème dans tes traitements).

    Avec "*" non, un fichier composé d'espaces reste une valeur parcourue

    Bon je reconnais que moi même j'avais tendance à le faire il y quelques années (jusqu'à ce que N_Bah me tape dessus ) mais depuis j'incite même mes collègues à faire ce geste

    Cordialement,
    Idriss

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 562
    Points : 19 397
    Points
    19 397
    Par défaut
    crée un fichier ainsi : touch mon\ fichier.dat, et relance ta commande, tu vas vite comprendre
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Consultant MOA
    Inscrit en
    Décembre 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant MOA

    Informations forums :
    Inscription : Décembre 2012
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Ok, je comprends les 2 points.
    Mais comment ne cibler que les fichiers en .dat ? Je crée une variable puis je fais appel dans le for ? Ou il y a une autre méthode ?

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 562
    Points : 19 397
    Points
    19 397
    Par défaut
    de toute façons, c'est le shell qui faisait le développement.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par laliemendez Voir le message
    Ca marche pour obtenir le temps epoch de maintenant
    Pour obtenir celui du fichier, j'ai été obligé d'utiliser du perl ...
    Bonjour.

    N'y a-t-il pas de 'stat' sous SunOs?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ stat -t file
    file 399 8 81ed 1002 1000 fd04 158781 1 0 0 1338535840 1313485925 1313485925 4096
    $ stat --format='%Y' file
    1313485925
    % man stat
    Sous SunOS, je chercher à obtenir le temps epoch (en secondes donc) et le temps epoch d'un fichier.
    Avec une simple soustraction, je pourrais voir depuis combien de seconde le fichier est présent dans le répertoire.
    Attention!
    Je ne suis pas sûr que cette méthode donne toujours le bon résultat!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    touch /tmp/foo
    rm -rf /tmp/tmp_dir
    sleep 5
    mkdir /tmp/tmp_dir
    mv /tmp/foo /tmp/tmp_dir/bar
    Il est probable (à vérifier) que ta méthode indique que le fichier 'bar' est présent dans le répertoire '/tmp/tmp_dir' depuis plus de temps que n'existe ce répertoire!

  11. #11
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    N'y a-t-il pas de 'stat' sous SunOs?
    Ce n'est pas une command POSIX mais GNU. Elle n'est fournie en standard qu'à partir de Solaris 11 (SunOS 5.11).
    ɹǝsn *sıɹɐlos*

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/12/2009, 18h06
  2. [XSL]récupérer une valeur de plusieurs fichiers XML
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/02/2006, 00h32
  3. Récupérer les infos sur un fichier audio
    Par Halleck dans le forum Windows
    Réponses: 13
    Dernier message: 17/04/2004, 18h39
  4. Récupérer l'icône d'un fichier quelle qu'il soit
    Par medicis dans le forum Composants VCL
    Réponses: 5
    Dernier message: 18/03/2003, 17h20
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo