Ich musste convert
mit vielen Bildern gleichzeitig laufen . Der Befehl hat eine Weile gedauert, aber das stört mich nicht.
Das Problem ist, dass dieser Befehl meinen Computer unbrauchbar machte, während der Befehl ausgeführt wurde (für ungefähr 15 Minuten).
Ist es also möglich, den Befehl zu drosseln, indem Ressourcen (Prozessor und Speicher) direkt über die Befehlszeile auf den Befehl beschränkt werden? Dies kann nur funktionieren, wenn ich vor dem Drücken etwas zur selben Zeile hinzufüge, Enterda der Computer nach dem Start des Vorgangs so langsam wird, dass es beispielsweise unmöglich ist, auf "Systemmonitor" umzuschalten und die Priorität zu verringern.
Bearbeiten: Top- und Iotop-Ergebnisse
Ich konnte laufen top
und sudo iotop >iotop.txt
während einer dieser convert Operationen zu tun. (Die erzeugte Datei iotop.txt ist schwer zu lesen.)
Ergebnisse von oben:
PID BENUTZER PR NI VIRT RES SHR S% CPU% MEM ZEIT + BEFEHL 14275 Benutzername 20 0 4043m 3,0 g 1448 D 7,0 80,4 0: 16,45 konvertieren
Ergebnisse von iotop:
[? 1049h [1; 24r (B [m [4l [? 7h [? 1h = [39; 49m [? 25l [39; 49m) (B [m [H [2JTotal DISK READ: 1269,04 K / s | Total DISK WRITE : [59G0,00 B / s (B [0; 7 m TID PRIO USER DISK READ DISK WRITE SWAPIN (B [0; 1; 7 m IO>) (B [0; 7 m BEFEHL [3; 2H (B [m2516 be / 4 Benutzername 350,08 K / s 0,00 B / s 0,00% 0,00% Zeitgeist-Datahub 7394 be / 4 Benutzername 568,88 K / s 0,00 B / s 77,41% 0,00% --rendere ~ .530483991 [5; 1H14275 Leerlaufbenutzername 350,08 K / s 0,00 B / s 37,49% 0,00% konvertieren S ~ f test.pdf [6 ; 2H2048 be / 4 root [6; 24H0,00 B / s 0,00 B / s 0,00% 0,00% [kworker / 3: 2] [5G1 be / 4 root [7; 24H0,00 B / s 0,00 B / s 0,00% 0,00% init
Darüber hinaus kehrt der Computer auch nach Beendigung des Vorgangs nicht zur vorherigen Leistung zurück. Ich fand einen Weg, dies zu umgehen, sudo swapoff -a
indem ich rannte, gefolgt vonsudo swapon -a
convert *.tif bla.pdf
führe jeweils nur EINEN Prozess aus, aber die Eingabe besteht aus einer ganzen Reihe von TIF-Bildern. Es ist eine Möglichkeit, ein PDF aus einer Reihe von Bildern zu erstellen, die gut funktionieren, aber meinen PC ersticken.find . -iname '*.tif' | xargs -I% convert % %.pdf
stattfind . -iname '*.pdf' | xargs -I% convert % %.pdf
. Es war auch schneller! Vielen Dank.-exec
und-execdir
Optionen für zu wissenfind
. In Ihrem Fallxargs
würde ich anstelle von verwenden:find -iname '*.tif' -execdir convert {} {}.pdf ';'
man nice
und wenn Sie eine E / A-Drosselung benötigenman ionice
.Schauen wir uns einige einfache Beispiele an.
Drosselung der CPU-Auslastung:
Nach Ihrer Beschreibung ist die CPU-Auslastung hier jedoch mit ziemlicher Sicherheit nicht Ihr eigentliches Problem. Wahrscheinlicher ist, dass Sie ernsthafte E / A-Konflikte haben.
Verwendung der Drosselscheibe:
-c2
ist "beste Anstrengung" und-n7
ist die niedrigste "beste Anstrengung" Priorität. Dadurch wird der Job gedrosselt, um die E / A-Priorität niedriger als bei den meisten anderen Dingen im System zu senken.-c3
(keine Prioritätsstufe erforderlich) bedeutet "Nur Leerlauf". Jobs, die-c3
NUR für die Leerlaufplanung vorgesehen sind, haben praktisch keine Auswirkungen auf das System - möglicherweise jedoch eine erheblich längere Ausführungszeit für Ihren Job, je nachdem, wie beschäftigt der Rest des Systems ist.quelle
nice
in einen Konvertierungsbefehl integrieren ? Wenn ich nichts falsch mache, funktioniert es gut, wenn Prozesse bereits ausgeführt werden.nice -n 20
nächste Mal versuchen .iotop
während Sie den Prozess ausführen? Normalerweise hat ein einzelner Prozess, der viel CPU verbraucht, nur sehr geringe Auswirkungen auf die Benutzerfreundlichkeit des Systems. Ein Prozess, der die Festplatte überlastet, kann jedoch SEHR schnell zum Stillstand kommen - insbesondere, wenn Sie ein herkömmliches Laufwerk und keine SSD verwenden.convert blah.gif blah.jpg & iotop
dassiotop
es sofort ausgelöst wird, sobald Sie Ihrenconvert
Job begonnen haben.Hier ist ein ziemlich guter Artikel über die Verwendung eines Programms, das aufgerufen wird
cpulimit
, um die CPU-Auslastung eines Prozesses zu begrenzen:http://maketecheasier.com/limit-cpu-usage-of-any-process-in-linux/2010/09/22
Das Problem ist, wie Sie sagten, die PID des
convert
Prozesses zu finden, nachdem er gestartet wurde.convert
Wenn Sie nach dem Start noch Befehle in das Terminal eingeben könnenps aux | grep convert
, können Sie die PID ermitteln und dannsudo cpulimit -p PID -l CPU%
mit der Drosselung beginnen.Wenn das Starten
convert
auch Ihr Terminal blockiert, zeigt Ihnen der Artikel, wie Siecpulimit
als Hintergrunddämon ausgeführt werden können, der Prozesse über eine bestimmte CPU-Auslastung automatisch überwacht und drosselt. Viel Glück!quelle
nice
Befehl primitiv .cpulimit
begrenzt den Prozess auf einen bestimmten Prozentsatz der CPU-Auslastung, unabhängig davon, ob etwas anderes die CPU-Zeit benötigt oder nicht;nice
Im Gegensatz dazu werden Prioritätsstufen (insgesamt 40!) festgelegt, mit denen eine Aufgabe über (oder unter) anderen Aufgaben priorisiert werden kann.