Wie führe ich eine E / A-intensive Anwendung nur aus, wenn der Computer inaktiv ist?

7

Gibt es ein Tool, das angewiesen werden kann, bestimmte Prozesse anzuhalten, wenn der Benutzer eine Tastatur oder Maus verwendet, und diese in einer bestimmten Zeit fortzusetzen, nachdem der Benutzer die Interaktion mit dem Betriebssystem beendet hat?

Ich möchte so nervig behandeln mlocate update db, backuppc.

ps

09.2015 Ich denke, diese nützlichen Utils haben mich gestört, weil mein Ubuntu tatsächlich ein Server war, kein Desktop.

zuba
quelle

Antworten:

11

Verwenden Sie das ioniceDienstprogramm, um die E / A-Priorität eines Befehls auf Leerlauf zu setzen. Auf diese Weise wird Ihre Festplatte während der Arbeit nicht belastet, was Sie möglicherweise verlangsamt.

Die Syntax lautet:

ionice -c 3 command-name
  • -c 3Setzt die E / A-Priorität auf Leerlauf. Siehe man ionicefür weitere Informationen.
  • Vergessen Sie nicht, ein Präfix zu setzen, sudowenn der Befehl selbst sudo erfordert , zupdatedb
  • Sie können auch nicegleichzeitig die CPU-Priorität auf "Leerlauf" setzen, z

    sudo nice -19 ionice -c 3 aktualisiertb

Hinweis: Wenn die Anwendung über ausgeführt wird cron, sollten Sie auch in Betracht ziehen, die geplante Zeit so zu ändern, dass Sie Ihren Computer am wenigsten verwenden.

ish
quelle
Vielen Dank für diesen Rat! Das klingt vielversprechend. Ich werde ein paar Tests machen.
Zuba
1
Sollte nicht schön 19 statt -19 nehmen? sudo nice 19 ionice -c 3 aktualisiertb
zuba
Ich habe festgestellt, dass /etc/cron.daily/mlocate Updatedb.mlocate folgendermaßen ausführt: / usr / bin / ionice -c3 /usr/bin/updatedb.mlocate. Ist "-c3" der richtige Parameter? Mann sagt, es sollte "-c 3" sein
zuba
1
Nein, Sie müssen -dem Parameter nice ein a voranstellen . Nur root kann eine höhere Priorität zuweisen --20, dh ... , sagen wir :). Beides -c3 or -c 3ist in Ordnung.
ish
1
Verhindert dies auch, dass der Festplattenpuffer-Cache gefüllt wird?
Starbeamrainbowlabs