Hinweis: Diese Lösung funktioniert nur mit dem cfq-Scheduler, wie hier erläutert . Sie sollten überprüfen, welche verwendet wird, indem Sie ausstellen
cat /sys/block/sda/queue/scheduler
und ändern Sie es gegebenenfalls.
Wenn ich das richtig verstanden habe, möchten Sie, dass ionice
jedes Mal, wenn Sie einen Befehl starten, eine Einstellung angewendet wird. Sie können es so machen:
echo 'ionice -c 3 /usr/bin/VirtualBox "$@"' > VirtualBox
chmod a+x VirtualBox
sudo mv VirtualBox /usr/local/bin/
Der erste Befehl erstellt eine Datei VirtualBox
mit dem Text in einfachen Anführungszeichen als Inhalt. Dies sollte den vollständigen Pfad zum Programm haben, denn wenn man es nur angibt VirtualBox
, kann es als die gerade erstellte Datei interpretiert und eine "Schleife" erstellt werden.
Der zweite Befehl macht es ausführbar und der dritte verschiebt diese neue Datei in einen Ordner, der sich vor dem Ordner "system" bin befindet /usr/bin
, sodass unsere neue Datei anstelle des Originals ausgeführt wird. Der Teil "$ @" enthält alle Argumente, mit denen der Befehl aufgerufen wurde, sodass sie an den realen VirtualBox-Befehl weitergeleitet werden.
Entsprechend der Antwort ("Ja") auf diese Super-User-Frage erben Kinderprozesse Ionice-Prioritäten von ihren Eltern? Wie überprüfen Sie die E / A-Priorität eines laufenden Prozesses? sollte es für ionice
den übergeordneten Prozess wie folgt ausreichen :
ionice -c 3 VirtualBox
Auf der ionice
Manpage stehen folgende Werte für E / A-Planungsklassen zur Verfügung:
- 0 für keine
- 1 für Echtzeit
- 2 für Bestleistung
- 3 für Leerlauf (im obigen Beispiel verwendet)
Ein Nummern- oder Klassenname kann verwendet werden.
Die -n level
Option gilt auch für Echtzeit- und Best-Effort-Klassen mit 0-7 als gültigen Daten (Prioritätsstufen).