2016-07-11 17 views
0

Ich versuche, Vmstat alle 20 Sekunden über ein Bash-Skript auszuführen und die Ergebnisse für mehrere Stunden in eine Datei auszugeben. Mein Skript sieht wie folgt aus:Vmstat schreibt seine Ausgabe nicht in die Datei

#!/bin/bash 
vmstat 20 1000 | ./timestamp.pl >> vmstat.txt 

timestamp.pl Skript sieht wie folgt aus:

#!/usr/bin/perl 

while(<>){ 
print localtime() . "$_ ";} 

ich timestamp.pl nenne Zeitstempel von vmstat Ausgabe in jeder Zeile einzufügen. Das Skript läuft etwa eine Stunde lang auf SunOS und ich sehe keinen Eintrag in der Datei vmstat.txt. Irgendwelche Ideen, warum ist dies oder eine Möglichkeit, es zu verbessern, so dass es die Ausgabe in die vmstat.txt-Datei schreibt?

+1

kann nicht reproduzieren dieses Problem. Funktioniert gut mit Solaris 11. – Cyrus

+0

sehen Sie, ob Ihr System "unbuffer" hat, wenn ja, fügen Sie das der "vmstat" Zeile voran. Oder sehen Sie, ob Sie ein 'stdbuf' verwenden können, um wie stdbuf -o0 program | zu lesen/zu schreiben stdbuf -i0 Skript'. Viel Glück. – shellter

+0

@Cyrus, das System ist Solaris 10. – user1471980

Antwort

2

Entweder genügend Zeit warten, bis die Perl-Ausgabe gespült werden (das Skript wird nach etwa 5h30min Ende) oder Pufferung in Ihrem Perl-Skript deaktivieren, indem Sie diese Zeile vor der Schleife:

$|++;