durata esecuzione di un processo bash

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

durata esecuzione di un processo bash

Messaggio 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?

Avatar utente
JohnnyMnemonic
Staff
Staff
Messaggi: 2733
Iscritto il: dom 5 set 2004, 0:00
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos
Località: Bologna
Contatta:

Re: durata esecuzione di un processo bash

Messaggio da JohnnyMnemonic »

Anteponi time al comando che devi eseguire

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Re: durata esecuzione di un processo bash

Messaggio 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....

Avatar utente
JohnnyMnemonic
Staff
Staff
Messaggi: 2733
Iscritto il: dom 5 set 2004, 0:00
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos
Località: Bologna
Contatta:

Re: durata esecuzione di un processo bash

Messaggio da JohnnyMnemonic »

Io mi riferisco a:

Codice: Seleziona tutto

man 1 time

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2924
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: durata esecuzione di un processo bash

Messaggio 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.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: durata esecuzione di un processo bash

Messaggio da Mario Vanoni »

man time
si riferisce a /usr/bin/time

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

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2924
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: durata esecuzione di un processo bash

Messaggio 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.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: durata esecuzione di un processo bash

Messaggio 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 ...

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2924
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: durata esecuzione di un processo bash

Messaggio 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 :)

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Re: durata esecuzione di un processo bash

Messaggio 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...?

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: durata esecuzione di un processo bash

Messaggio 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]
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: durata esecuzione di un processo bash

Messaggio 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

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2924
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: durata esecuzione di un processo bash

Messaggio 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 [[ ]]

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Re: durata esecuzione di un processo bash

Messaggio 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?

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2924
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: durata esecuzione di un processo bash

Messaggio 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

Rispondi