Pagina 1 di 2

durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 15:10
da lennynero
Come da titolo: c'è un modo semplice per calcolare la durata di un processo bash? o devo per forza fare la differenza tra start e end di date?

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 15:13
da JohnnyMnemonic
Anteponi time al comando che devi eseguire

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 15:22
da lennynero
cioè dovrei dare

Codice: Seleziona tutto

# time comando.sh > durata.log
?
e se volessi farlo in uno script potrei dare:

Codice: Seleziona tutto

`time` comando.sh > durata.log
?

mi sa che ho già provato comunque ora ricontrollo

p.s. so che c'è una differenza tra il comando time e il comando bash time....

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 15:42
da JohnnyMnemonic
Io mi riferisco a:

Codice: Seleziona tutto

man 1 time

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 15:45
da 414N
lennynero ha scritto:cioè dovrei dare

Codice: Seleziona tutto

# time comando.sh > durata.log
?
e se volessi farlo in uno script potrei dare:

Codice: Seleziona tutto

`time` comando.sh > durata.log
?

mi sa che ho già provato comunque ora ricontrollo

p.s. so che c'è una differenza tra il comando time e il comando bash time....
No. Tutto ciò che compare dopo comando.sh riguarda solo comando.sh (sono i suoi argomenti), quindi con

Codice: Seleziona tutto

# time comando.sh > durata.log
ottieni solo la ridirezione dello standard output di comando.sh sul file durata.log. La durata dell'esecuzione di comando.sh continuerà ad essere stampata su standard error.
Se guardi la man page di time (almeno la sezione riguardante le opzioni), noterai le opzioni -a (append) e -o (overwrite):

Codice: Seleziona tutto

time -o durata.log comando.sh &>/dev/null
Con questo comando ottieni la durata dell'esecuzione di comando.sh (con standard output e standard error soppressi) stampata sul file durata.log.

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 15:56
da Mario Vanoni
man time
si riferisce a /usr/bin/time

con
time cmd
si usa il built-in della bash
man bash

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 16:12
da 414N
Mario Vanoni ha scritto:man time
si riferisce a /usr/bin/time

con
time cmd
si usa il built-in della bash
man bash
Da quel che ho visto nella man page di bash, la built-in si chiama times, non time.

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 16:20
da Mario Vanoni
414N ha scritto:
Mario Vanoni ha scritto:man time
si riferisce a /usr/bin/time

con
time cmd
si usa il built-in della bash
man bash
Da quel che ho visto nella man page di bash, la built-in si chiama times, non time.
time date
times date
/usr/bin/time date

man bash
If the time reserved word ...

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 16:24
da 414N
Mario Vanoni ha scritto: time date
times date
/usr/bin/time date

man bash
If the time reserved word ...
Ops, come non detto.
Grazie Mario :)

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 17:01
da lennynero
grazie 414N, ora mi volevo complicare un pò al vita: si potrebbe usare in qualche modo time in uno script A per calcolare la durata di A...?

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 17:09
da targzeta
lennynero ha scritto:grazie 414N, ora mi volevo complicare un pò al vita: si potrebbe usare in qualche modo time in uno script A per calcolare la durata di A...?

Codice: Seleziona tutto

time sh script_A
non capisco il perchè di questa domanda.

Spina

Offtopic: P.S. ora non sono su linux ma dal man di bash che ho trovato in internet sembrerebbe anche a me che la bash non abbia un comando interno chiamato 'time', se avete linux a portata di mano potreste postare l'output di

Codice: Seleziona tutto

type time
? Tanto per verificare.[/offtopic]

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 17:14
da d4z_c0nf
spina ha scritto:
lennynero ha scritto:grazie 414N, ora mi volevo complicare un pò al vita: si potrebbe usare in qualche modo time in uno script A per calcolare la durata di A...?

Codice: Seleziona tutto

time sh script_A
non capisco il perchè di questa domanda.

Spina

Offtopic: P.S. ora non sono su linux ma dal man di bash che ho trovato in internet sembrerebbe anche a me che la bash non abbia un comando interno chiamato 'time', se avete linux a portata di mano potreste postare l'output di

Codice: Seleziona tutto

type time
? Tanto per verificare.[/offtopic]
Offtopic: rock@localhost:~$ type time
time is a shell keyword


rock

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 17:15
da 414N

Codice: Seleziona tutto

type time
time is a shell keyword
Se cerchi all'interno della man page di bash il pezzo di frase suggerito da Mario ("If the time reserved word"), noterai che time è una parola riservata.
Come tale non compare nell'elenco dei built-in commands, ma nell'elenco delle reserved words.
Dal man di bash:

Codice: Seleziona tutto

RESERVED WORDS
       Reserved words are words that have a special meaning to  the  shell.   The
       following  words  are  recognized as reserved when unquoted and either the
       first word of a simple command (see SHELL GRAMMAR below) or the third word
       of a case or for command:

       !  case   do  done  elif else esac fi for function if in select then until
       while { } time [[ ]]

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 17:30
da lennynero
spina ha scritto:
lennynero ha scritto:grazie 414N, ora mi volevo complicare un pò al vita: si potrebbe usare in qualche modo time in uno script A per calcolare la durata di A...?
non capisco il perchè di questa domanda.
Supponiamo che io voglia fare uno script che fa delle cose e voglio che alla fine mi dica anche quanto ci ha impiegato senza doverlo lanciare con il comando

Codice: Seleziona tutto

/usr/bin/time -o file script.sh params
Sono troppo pigro?

Re: durata esecuzione di un processo bash

Inviato: lun 15 dic 2008, 17:38
da 414N
lennynero ha scritto:
spina ha scritto:
lennynero ha scritto:grazie 414N, ora mi volevo complicare un pò al vita: si potrebbe usare in qualche modo time in uno script A per calcolare la durata di A...?
non capisco il perchè di questa domanda.
Supponiamo che io voglia fare uno script che fa delle cose e voglio che alla fine mi dica anche quanto ci ha impiegato senza doverlo lanciare con il comando

Codice: Seleziona tutto

/usr/bin/time -o file script.sh params
Sono troppo pigro?
Delega questo compito ad uno script :D
In soldoni, crea uno script che lanci altri script (magari passati da riga di comando) col comando che hai riportato.
Una cosa del tipo

Codice: Seleziona tutto

#!/bin/bash
# $1 = comando da eseguire
# $2 = eventuali parametri

if ! [ -e "$1" ]
then
        echo "File $1 inesistente."
        exit 1
fi

/usr/bin/time -o "$1-time.log" "$1" $2