2010-10-27 34 views
4

Je veux savoir combien de temps un programme s'exécute, j'ai donc essayé "/ usr/bin/time ./program>/dev/null". Mais bientôt j'ai trouvé qu'il affiche la sortie du programme sur stderr. J'ai essayé "/ usr/bin/temps ./program>/dev/null 2> & 1" alors, mais la sortie/usr/bin/time n'apparaît pas. Donc, ma question est, comment ignorer la sortie du programme, et garder la sortie de l'heure.Comment ignorer la sortie du programme lors de l'utilisation de/usr/bin/time?

Merci beaucoup.

Répondre

7

Utilisez le drapeau -o pour envoyer la sortie de l'heure à autre chose, puis stderr. Par exemple, si vous voulez toujours à l'écran:

/usr/bin/time -o /dev/tty ./program >/dev/null 2>&1 

Ou, si vous voulez une sortie sur stdout très mal:

/usr/bin/time sh -c './program >/dev/null 2>&1' 

ou similaire. Cependant, maintenant vous mesurez également le temps de la coquille pour commencer le processus, ce qui peut ou peut ne pas être un problème.

+0

Merci, mais je suis en utilisant un autre script python pour lire la sortie pour savoir combien de temps cela prend. Puis-je utiliser cette commande? –

+0

Oui, voir la réponse éditée. –

+1

Vous pouvez rediriger la sortie vers un canal et faire lire votre autre programme. Ou votre autre script peut-il simplement démarrer une minuterie, exécuter le programme, puis lire le minuteur à la fin du programme? – TMN

1

(Impossible de commenter)

Il pourrait être plus agréable d'utiliser un sous-shell:

/usr/bin/time (./program > /dev/null 2>&1) 2>&1 

Ou mieux encore une construction composée:

/usr/bin/time { ./program > /dev/null 2>&1; } 2>&1