Grundlegende Anwendung von lsof und Wiederherstellung versehentlich gelöschter Dateien

Einführung

Der vollständige Name von lsof lautet „geöffnete Dateien auflisten“, einfach „yum install lsof“. In der Linux-Umgebung ist alles eine Datei, Geräte sind Dateien, Verzeichnisse sind Dateien und sogar Sockets sind Dateien.

Grundlegende Verwendung des Befehls lsof

  • Alle Optionen in lsof sind Filterbedingungen
  • lsof -a stellt den Verbindungsoperator „and“ dar und alle Bedingungen sind erfüllt. Der Standardwert ist „or“, z. B lsof -a -u root -d txt
  • Die Zeichenfolge lsof -c zeigt alle geöffneten Dateien von Prozessen an, die bestimmte Zeichen in der Spalte BEFEHL enthalten. Sie wird häufig verwendet, um den Namen und die Anzahl der von einer Anwendung geöffneten Dateien zu ermitteln, z lsof -c mysqld
  • lsof -u Benutzername zeigt vom Benutzerprozess geöffnete Dateien an
  • lsof +d /DIR/ zeigt Dateien an, die von Prozessen im Verzeichnis geöffnet wurden
  • lsof +D /DIR/ Dasselbe wie oben, es werden jedoch alle Verzeichnisse unter dem Verzeichnis durchsucht, was relativ lange dauert
  • lsof -i wird basierend auf IPv46, Format: [proto][@host|addr][:svc_list|port_list], wie lsof -i [email protected]:3306, gefiltert, aber das Protokoll, der Host und der Port sind hier nicht unbedingt erforderlich alle begrenzt. Beispielsweise ist es üblich, Prozesse basierend auf Portslsof -i :3306 oder lsof -i:3306 ohne Leerzeichen zu finden

Verwenden Sie lsof, um gelöschte Dateien wiederherzustellen

Diese Wiederherstellungsmethode ist an Bedingungen geknüpft. Es wird erwartet, dass die Datei von einem Programm verwendet wird, bevor sie gelöscht wird.

Simulieren Sie einen Prozess zum Öffnen von /ect/my.cnf. Hiervim /etc/my.cnf können Sie sehen, dass es sich bei dem, was tatsächlich geöffnet wird, um eine temporäre Kopie handelt

[root@node-126 ~]# lsof |grep my.cnf
vim       20844                    root    4u      REG              253,0     12288   33554509 /etc/.my.cnf.swp

Nachdem der Hauptteil versehentlich gelöscht wurderm -rf /etc/my.cnf, kann er über temporäre Dateien wiederhergestellt werden. Beachten Sie, dass die Datei binär ist und mit dem Befehl strings geöffnet werden muss. Bis auf die ersten Zeilen handelt es sich um den ursprünglichen Dateiinhalt, der wiederhergestellt werden soll.

[root@node-126 etc]# strings  /etc/.my.cnf.swp 
b0VIM 7.4
root
node-126
/etc/my.cnf
3210
#"! 
pid-file=/var/run/mysqld/mysqld.pid
log-error=/var/log/mysqld.log
symbolic-links=0
# Disabling symbolic-links is recommended to prevent assorted security risks
socket=/var/lib/mysql/mysql.sock
datadir=/var/lib/mysql
# read_rnd_buffer_size = 2M
# sort_buffer_size = 2M
# join_buffer_size = 128M
# Adjust sizes as needed, experiment to find the optimal values.
# The server defaults are faster for transactions and fast SELECTs.
# Remove leading # to set options mainly useful for reporting servers.
# log_bin
# changes to the binary log between backups.
# Remove leading # to turn on a very important data integrity option: logging
# innodb_buffer_pool_size = 128M
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# Remove leading # and set to the amount of RAM for the most important data
[mysqld]
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# For advice on how to change settings please see

Es kann auch basierend auf FD wiederhergestellt werdenstrings /proc/20844/fd/4, 20844 ist die PID zum Öffnen der Datei, 4 ist FD

[root@node-126 ~]# lsof |grep my.cnf
vim       20844                    root    4u      REG              253,0     12288   33554509 /etc/.my.cnf.swp

おすすめ

転載: blog.csdn.net/qq_39506978/article/details/133235262