Grep: /proc/sysrq-trigger: Input/output error
Ich bin auf der Suche nach einem Datei-system und die Nutzung von grep. Ich sehe, daß alles funktioniert, bis dieser Fehler angezeigt:
Grep: /proc/sysrq-trigger: Input/output error
Habe ich Informationen gefunden, die in verschiedenen Orten auf dem Netz, wo andere kommen über das gleiche problem, aber nirgendwo gibt es etwas, das funktionierte. Ich habe versucht, 2>/dev/null, das unterdrückt den Fehler, aber nicht 'überspringen der Datei' was ist wirklich, was ich hoffte, Sie würde es tun. Stattdessen nur Stoppt den Prozess (das ist ein find/sed-Prozess, die Nutzung grep). Ich denke, es ist ein Weg, Dateien zu spezifizieren, die für den Ausschluss der Verwendung von grep, aber ich bin der Hoffnung, dass es möglicherweise eine weitere stabile und elegante Lösung.
- So verwenden
find $whatever ! -wholename "/proc/sysrq-trigger"
? - Warum liest du die Dateien rekursiv in
/proc
überhaupt? Wir könnten in der Lage sein, um Ihnen zu helfen mehr, wenn Sie uns sagten, was Sie zu tun versuchen, allgemein. - mit der Suche nach Dateien mit einer bestimmten Zeichenfolge in der es dann löschen Sie den gesamten Inhalt der Datei.
- ein Interessantes detail: Sie können nicht löschen Sie die Dateien im
/proc
! Noch wichtiger: Sie sollten nicht Durcheinander mit Dateien in/proc
- Wie genau sind Sie auf der Suche?
- finden mystringhere -maxdepth 2 -type f -print0 | xargs -0 grep-i \"mystringhere\" -l | xargs sed-i '/./d'
- Sie tatsächlich liefern
mystringhere
zufind
? Das sollte nicht funktionieren! Nicht zu vergessen, dass das, was Sie tun können äußerst gefährlich werden... - EDIT: ugh, tut mir Leid, ich bin nämlich find / -maxdepth.. etc.., nicht übergeben Zeichenfolge zu finden, wie vorher gesagt. Ich verstehe die Risiken von dem, was ich Tue, danke - ich Tue dies in einem test-Distribution in einer VM, die ich jederzeit zurücksetzen lassen.
- lassen Sie uns weiter, diese Diskussion im chat
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt es so, als wenn Sie rekursiv suchen Ihre gesamte Dateisystem-Hierarchie. Das wird nicht funktionieren, wie erwartet, auf den meisten Systemen.
Unter Linux mindestens
/proc
und/sys
sind virtuelle Dateisysteme - Sie entsprechen nicht auf eine tatsächliche Datei auf der Festplatte. Die speziellen Dateien, die in/dev
sind auch nicht die tatsächlichen Dateien - Sie entsprechen einige der Geräte in Ihrem system, wie Festplatten, Eingabegeräte e.t.c. Ändern - und gelegentlich auch Lesen - Dateien unter jedem dieser Verzeichnisse sollte das nie passieren in einer unkontrollierten Art und Weise, da kann man crash der kernel, ruinieren Sie Ihre Dateisysteme und sogar zu dauerhaften Schäden an Ihrer hardware.Da Sie über
finden
, um die Suche durchzuführen, müssen Sie beschränken den Umfang Ihrer Suche:Explizite negiert
-path
Optionen:Verwenden Sie die
-prune
option:Verwenden Sie die
-xdev
option, um zu vermeiden, absteigend, um andere Dateisysteme komplett:Können Sie so viele
-path
- und/oder-prune
Optionen, wie Sie benötigen, um die Feinabstimmung der Leistung vonfind
. Ich empfehle jedoch, dass Sie die Prüfung der Ausgabe vor der übergabe an eine der späteren Phasen in der pipeline.EDIT:
Hier sind einige Beispiele von Schäden, die beim Zugriff auf bestimmte Dateien in eine unkontrollierte Art und Weise - in der Regel als
root
:Älteren Kernel zum Absturz bringen wenn
/proc/kcore
gelesen wurde, alsroot
. Ich glaube, dass dies nicht mehr geschieht, aber ich habe festgestellt das seit/proc/kcore
wurde am 2.4.x-kernel der Serie und es gelegentlich öffnet sich wieder, also ich bin nicht in der Stimmung, um wirklich testen Sie es...Lesen eines block-Gerät über die device-node in
/dev/
kann stark verlangsamen andere Operationen, die auf diesem Gerät, da es umgeht die VFS und verschiedene caches. Vorstellen, zum Beispiel, liest ein 6TB RAID 5 partion direkt, während andere Prozesse versuchen, um es richtig zu nutzen über das installierte Dateisystem. Mit-type f
imfind
sollten verhindern, dass dies geschieht.Da Sie erwähnten änderung, können Sie leicht backstein ein embedded-Gerät durch Bestechung die firmware, die ist zugänglich über
/dev/mtd*
. In einigen Fällen ist es unmöglich sich zu erholen von einer solchen Art von Korruption ohne einige ziemlich extreme Maßnahmen./proc/kcore
gelesen wurde - und es wäre ganz ärgerlich wenn etwas versucht zu Lesen, mein RAID-array-Gerät direkt (obwohl-type f
sollte Schutz gegen, dass mindestens)sed -i
schreibt normalerweise auf eine temporäre Datei, bevor Sie das original, das schützt undeletable Dateien, aber auch jede andere Methode haben könnte, leicht modifiziert die ursprünglichen was zu einer viel Schaden.grep-hat ein --exclude-dir=dir-option, die Sie verwenden können, um zu vermeiden, /proc und /sys
Verwendete ich einen Befehl wie diesen, vor kurzem, wo ich wusste nur den Namen eines Parameters, der erwartet, dass ich in irgendeiner config-Datei, aber hatte keine Ahnung über die Datei Pfad.