Frage: Ich versuche, die Ausgabe des top-Befehls zu erfassen in eine Datei. Wenn ich top> output.txt ausführe, enthält die Datei output.txt viele Junk-Zeichen. Was ist die beste Methode, um die Ausgabe des obersten Befehls in einer lesbaren Textdatei zu erfassen?
Antwort: Verwenden Sie die Stapelmodus-Operationsoption des obersten Befehls ( -b ), um die Ausgabe des obersten Befehls in einer Datei zu erfassen.
Wenn Sie versuchen, die Ausgabe des obersten Befehls wie unten gezeigt in eine Textdatei umzuleiten, werden Sie feststellen, dass die Ausgabedatei viele Junk-Zeichen enthält.
Wenn Sie versuchen, die Ausgabedatei mit dem Befehl less anzuzeigen, werden Sie feststellen, dass die Ausgabedatei mit vielen Junk-Zeichen erstellt wurde.
$ top -n 1 > top-output.txt $ less top-output.txt "top-output.txt" may be a binary file. See it anyway?
Hinweis: Option -n 1 gibt an, dass nur eine Iteration des obersten Befehls ausgeführt werden soll.
Um dieses Problem zu vermeiden und eine lesbare Ausgabe des Top-Befehls zu erhalten, verwenden Sie die Option -b im Top-Befehl. Führen Sie den obersten Befehl im Stapelmodus aus, wie unten gezeigt.
$ top -n 1 -b > top-output.txt $ less top-output.txt top - 16:56:36 up 246 days, 11:14, 3 users, load average: 0.00, 0.00, 0.00 Tasks: 168 total, 1 running, 167 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 8306856k total, 7940744k used, 366112k free, 285136k buffers Swap: 8385920k total, 104k used, 8385816k free, 7391824k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 15 0 2064 592 512 S 0.0 0.0 0:02.24 init 2 root RT -5 0 0 0 S 0.0 0.0 0:00.47 migration/0 3 root 35 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 5 root RT -5 0 0 0 S 0.0 0.0 0:00.61 migration/1
Über die Option -b und -n von der oberen Befehls-Manpage:
-b : Batch mode operation Starts top in "Batch mode", which could be useful for sending out- put from top to other programs or to a file. In this mode, top will not accept input and runs until the iterations limit youâve set with the â-nâ command-line option or until killed. -n : Number of iterations limit as: -n number Specifies the maximum number of iterations, or frames, top should produce before ending.
Sie können diese Methode auch verwenden, um die Ausgabe des Befehls top an ein anderes Programm umzuleiten, wie unten gezeigt.
$ top -n1 -b | head top - 16:58:36 up 246 days, 11:14, 3 users, load average: 0.00, 0.00, 0.00 Tasks: 169 total, 1 running, 168 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 8306856k total, 7941612k used, 365244k free, 285144k buffers Swap: 8385920k total, 104k used, 8385816k free, 7392088k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 15 0 2064 592 512 S 0.0 0.0 0:02.24 init 2 root RT -5 0 0 0 S 0.0 0.0 0:00.47 migration/0 3 root 39 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0