Inhaltsverzeichnis
1 案例描述?
2 命令一(目录统计排序最佳命令)
3 命令二(最实用,目录和文件一起统计排序)
4 如何安全使用 rm 命令删除文件?
5 磁盘使用率报警,却查不到具体的大文件?
Heim Betrieb und Instandhaltung Betrieb und Wartung von Linux Häufig gestellte Fragen zu Linux-Interviews: Finden Sie große Dateien und löschen Sie sie sicher

Häufig gestellte Fragen zu Linux-Interviews: Finden Sie große Dateien und löschen Sie sie sicher

Mar 21, 2022 am 10:12 AM
linux 面试题

本篇文章给大家分享一个Linux 线上面试高频问题:如何查找大文件并安全地清除?,给大家分析分析,大家也可以对照着自己分析一下,希望对大家有所帮助!

Häufig gestellte Fragen zu Linux-Interviews: Finden Sie große Dateien und löschen Sie sie sicher

1 案例描述?

  • 服务线上环境,会出现一些磁盘使用率过高而告警的情况,可能是某个日志文件过大,没有及时清理回收,如何找到大目录和大文件?

  • 如何安全的清理大文件?

  • 如何使占用的磁盘空间快速释放掉?

2 命令一(目录统计排序最佳命令)

(这里以当前目录 ./ 为例,统计 top5)

【du -k --max-depth=1 ./ |sort -nr|head -n5】

[root@test-001 /]# du -k --max-depth=1 ./ |sort -nr|head -n5
137450839518./
6785876./data
2182577./usr
1830341./home
446856./var
//du -k # 显示目录或文件大小时,以 kB 为单位;
//du --max-depth=1 [目录] # 只显示指定目录下第一层目录(不含单个文件)的大小;
//sort -nr # 以行为单位,根据数字大小从大到小排序;
//head -n5 # 显示内容的开头 5 行,这里显示就是 top5 内容;
Nach dem Login kopieren

3 命令二(最实用,目录和文件一起统计排序)

(这里以当前目录 ./ 为例,统计 top5)

(1)命令详情和说明

【du -sk * ./ | sort -nr | head -n5 | awk -F'\t' '{if(1024 * 1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024 * 1024) {printf "%.2fT\t\t %s\n", $1/(1024 * 1024 * 1024), $2} else if(1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024) {printf "%.2fG\t\t %s\n", $1/(1024 * 1024), $2} else if (1024 * 1024 > $1 && $1 >= 1024) {printf "%.2fM\t\t %s\n", $1/1024, $2} else {printf "%sk\t\t %s\n", $1, $2}}' 】

[root@test-001 /]# du -sk * ./ | sort -nr | head -n5 | awk -F'\t' '{if(1024 * 1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024 * 1024) {printf "%.2fT\t\t %s\n", $1/(1024 * 1024 * 1024), $2} else if(1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024) {printf "%.2fG\t\t %s\n", $1/(1024 * 1024), $2} else if (1024 * 1024 > $1 && $1 >= 1024) {printf "%.2fM\t\t %s\n", $1/1024, $2} else {printf "%sk\t\t %s\n", $1, $2}}'
7.13G data
2.17G usr
1.75G home
447.04M var
408.50M run
//du -sk * # 显示当前目录下每个文件夹和文件的大小以KB为单位(最常用),s表示汇总,k是以KB为统计单位;
//./ #当前目录下
//sort -nr # 以行为单位,根据数字大小从大到小排序;
//awk -F'\t'# 以水平制表符进行分割,后面的程序就是进行换算单位,格式化输出成易懂的形式;
Nach dem Login kopieren

(2)du、head、sort、awk 详细说明参考已有文章附录

(3)Linux 中 printf 命令使用参考

// Linux 中 printf 命令使用参考
// https://www.linuxprobe.com/linux-printf-example.html
'{
    if(1024 * 1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024 * 1024) 
    {
        printf "%.2fT\t\t %s\n", $1/(1024 * 1024 * 1024), $2
    } 
    else if(1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024) 
    {
        printf "%.2fG\t\t %s\n", $1/(1024 * 1024), $2
    } 
    else if (1024 * 1024 > $1 && $1 >= 1024) 
    {
        printf "%.2fM\t\t %s\n", $1/1024, $2
    } 
    else 
    {
        printf "%sk\t\t %s\n", $1, $2
    }
}'
Nach dem Login kopieren

4 如何安全使用 rm 命令删除文件?

(1)rm 命令有哪些坑?

  • rm -rf / # 这个命令绝逼不能操作,删除根目录下的文件,就是系统中的所有文件都要被删除。如果是线上服务机器操作了,那就悲剧了!误操作了怎么办?赶快ctrl+c、ctrl+z 能保住多少是多少吧。

  • rm -rf / home/apps/logs/ # 这也是个天坑命令!目的是删除日志文。结果书写时“多了一个空格”的 bug,看懂了么?这就变成了 [rm -rf /] !

  • 埋藏隐患的日志清理 shell 脚本!脚本关键内容如下。

cd ${log_path}
rm -rf *
Nach dem Login kopieren
Nach dem Login kopieren

目的是:进入到日志目录,然后把日志都删除。隐患:当目录不存在时,悲剧就发生了!

(2)如何安全使用 rm 命令?

  • 在生产环境把 [rm -rf] 命令替换为 [mv],再写个脚本程序定期清理,模拟回收站的功能。

  • 把日志清理 shell 脚本,改用逻辑与 && 进行连接。

cd ${log_path}
rm -rf *
Nach dem Login kopieren
Nach dem Login kopieren

改用逻辑与 && 进行连接,合并成一句,前半句逻辑失败,后半句命令不执行:

```shell

cd ${log_path} && rm -rf *

完整的日志清理 shell 脚本如下:

 ```shell
#!/bin/bash
base_home="/home/apps"
log_path=${base_home}/logs
cd ${log_path} && rm -rf *
Nach dem Login kopieren

5 磁盘使用率报警,却查不到具体的大文件?

(1)问题情景

  • 1 磁盘使用率监控报警,进入机器可以 (df -h) 命令看到磁盘使用率确实超过了报警阀值。

  • 2 使用命令查看大目录,并进入到目录下 【du -sk * ./ | sort -nr | head -n5 | awk -F'\t' '{if(1024 * 1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024 * 1024) {printf "%.2fT\t\t %s\n", $1/(1024 * 1024 * 1024), $2} else if(1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024) {printf "%.2fG\t\t %s\n", $1/(1024 * 1024), $2} else if (1024 * 1024 > $1 && $1 >= 1024) {printf "%.2fM\t\t %s\n", $1/1024, $2} else {printf "%sk\t\t %s\n", $1, $2}}'

  • 3 依然没找到大文件,该怎么办呢?

(2)排查思路

  • 1 思考:是不是有文件已经被删除了,但进程还在占用该文件,进程未结束,空间未释放?

  • 2 使用「lsof |grep -i deleted」命令查看,能查看到已删除,空间没有释放的文件,包含文件大小,进程和服务名等信息。

Häufig gestellte Fragen zu Linux-Interviews: Finden Sie große Dateien und löschen Sie sie sicherlsof(List Open Files) 用于查看进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP),找回/恢复删除的文件。是十分方便的系统监视工具,因为 lsof 命令需要访问核心内存和各种文件,所以需要root 用户权限执行。

(3) Geben Sie den belegten Speicherplatz frei.

Starten Sie den Dienst, auf den der Prozess verweist, neu, und der belegte Speicherplatz wird freigegeben. Sie müssen während des Online-Produktionsbetriebs vorsichtig sein. Bewerten Sie nicht, ob für den Prozessdienst selbst ein Neustartbefehl vorhanden ist, und prüfen Sie, ob der Dienst neu gestartet werden kann.

(4) Anmerkungen Anhang

  • 1 Wenn eine Datei von einem Prozess verwendet wird und der Benutzer die Datei löscht, wird die Datei nur aus der Verzeichnisstruktur, nicht jedoch von der Festplatte gelöscht.

  • 2 Wenn der Prozess, der diese Datei verwendet, endet, wird die Datei tatsächlich von der Festplatte gelöscht und der belegte Speicherplatz wird freigegeben. Wenn Linux eine Datei öffnet, erstellt der Kernel eine Datei für jeden Prozess im Ordner /proc//proc/{nnnn}/fd/ ({ nnnn} (pid)“ Erstellen Sie einen Ordner, der nach seiner PID benannt ist, um prozessbezogene Informationen zu speichern, und sein Unterordner fd speichert den fd (fd: Dateideskriptor) aller vom Prozess geöffneten Dateien. /proc//proc/{nnnn}/fd/文件夹({nnnn} 为 pid)』建立一个以其 pid 为名的文件夹用来保存进程的相关信息,而其子文件夹 fd 保存的是该进程打开的全部文件的 fd(fd:file descriptor)。

  • 3 Ctrl + CCtrl + Z都是中断命令。Ctrl + C 是强制中断程序的执行,进程已经终止;Ctrl + Z 是将任务中止(暂停的意思),他仍然在进程中他只是维持挂起的状态。

6 生产环境常用的安全清理大文件命令

  • 生产环境安全清理大文件的诉求是什么?既要不影响服务的正常运行,又要让磁盘占用的空间快速释放掉(让文件消失掉不是我们的目的,我们的目的是快速释放掉占用的磁盘空间)。

  • 不要使用 「rm -rf xxx.log」;常用 「echo "" > xxx.log」。

  • 这里假设 xxx.log 为大文件,如这个 xxx.log 有几十个 GB,「echo "" > xxx.log」是用一个 ""

3 Strg + C und Strg + Z sind beide Interrupt-Befehle. Strg + C dient dazu, die Ausführung des Programms gewaltsam zu unterbrechen, und Strg + Z dient dazu, die Aufgabe abzubrechen (d. h. anzuhalten). noch im Prozess, und es bleibt einfach suspendiert.

    6 Häufig verwendete Befehle zum sicheren Bereinigen großer Dateien in Produktionsumgebungen
  • Was sind die Anforderungen für das sichere Bereinigen großer Dateien in der Produktion? Umgebungen? Es ist nicht nur notwendig, den normalen Betrieb des Dienstes nicht zu beeinträchtigen, sondern auch den belegten Speicherplatz schnell freizugeben (unser Ziel ist es nicht, die Dateien verschwinden zu lassen, unser Ziel ist es, den belegten Speicherplatz schnell freizugeben).

  • Verwenden Sie nicht „rm -rf xxx.log“, sondern häufig „echo „“ > xxx.log“.

  • Hier wird davon ausgegangen, dass xxx.log eine große Datei ist. Dieses xxx.log hat beispielsweise Dutzende GB. „echo „“ > xxx.log“ ist ein ""-Inhalt überschreibt den ursprünglichen Dateiinhalt, sodass sofort Speicherplatz freigegeben wird!

7 Zusammenfassung

🎜🎜fasst die häufig verwendeten Kombinationsbefehle zum Auffinden großer Verzeichnisse und großer Dateien zusammen (einschließlich du, head, sort, awk und anderen Befehlen); 🎜🎜🎜🎜 und wie man den rm-Befehl verwendet sicher; 🎜 🎜🎜🎜Außerdem erfahren Sie, wie Sie die Situation beheben können, in der der Festplattennutzungsalarm auftritt, die bestimmte große Datei jedoch nicht gefunden werden kann. 🎜🎜🎜🎜Abschließend wird auch der häufig verwendete Echo-Befehl erwähnt, um die Originaldatei sofort freizugeben der belegte Speicherplatz. 🎜🎜🎜🎜Verwandte Empfehlungen: „🎜Linux-Video-Tutorial🎜“🎜

Das obige ist der detaillierte Inhalt vonHäufig gestellte Fragen zu Linux-Interviews: Finden Sie große Dateien und löschen Sie sie sicher. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Computerkonfiguration ist für VSCODE erforderlich? Welche Computerkonfiguration ist für VSCODE erforderlich? Apr 15, 2025 pm 09:48 PM

VS Code system requirements: Operating system: Windows 10 and above, macOS 10.12 and above, Linux distribution processor: minimum 1.6 GHz, recommended 2.0 GHz and above memory: minimum 512 MB, recommended 4 GB and above storage space: minimum 250 MB, recommended 1 GB and above other requirements: stable network connection, Xorg/Wayland (Linux)

VSCODE kann die Erweiterung nicht installieren VSCODE kann die Erweiterung nicht installieren Apr 15, 2025 pm 07:18 PM

Die Gründe für die Installation von VS -Code -Erweiterungen können sein: Netzwerkinstabilität, unzureichende Berechtigungen, Systemkompatibilitätsprobleme, VS -Code -Version ist zu alt, Antiviren -Software oder Firewall -Interferenz. Durch Überprüfen von Netzwerkverbindungen, Berechtigungen, Protokolldateien, Aktualisierungen von VS -Code, Deaktivieren von Sicherheitssoftware und Neustart von Code oder Computern können Sie Probleme schrittweise beheben und beheben.

So führen Sie Java -Code in Notepad aus So führen Sie Java -Code in Notepad aus Apr 16, 2025 pm 07:39 PM

Obwohl Notepad den Java -Code nicht direkt ausführen kann, kann er durch Verwendung anderer Tools erreicht werden: Verwenden des Befehlszeilencompilers (JAVAC), um eine Bytecode -Datei (Dateiname.class) zu generieren. Verwenden Sie den Java Interpreter (Java), um Bytecode zu interpretieren, den Code auszuführen und das Ergebnis auszugeben.

Wofür ist VSCODE Wofür ist VSCODE? Wofür ist VSCODE Wofür ist VSCODE? Apr 15, 2025 pm 06:45 PM

VS Code ist der vollständige Name Visual Studio Code, der eine kostenlose und open-Source-plattformübergreifende Code-Editor und Entwicklungsumgebung von Microsoft ist. Es unterstützt eine breite Palette von Programmiersprachen und bietet Syntax -Hervorhebung, automatische Codebettel, Code -Snippets und intelligente Eingabeaufforderungen zur Verbesserung der Entwicklungseffizienz. Durch ein reiches Erweiterungs -Ökosystem können Benutzer bestimmte Bedürfnisse und Sprachen wie Debugger, Code -Formatierungs -Tools und Git -Integrationen erweitern. VS -Code enthält auch einen intuitiven Debugger, mit dem Fehler in Ihrem Code schnell gefunden und behoben werden können.

Kann VSCODE für MAC verwendet werden Kann VSCODE für MAC verwendet werden Apr 15, 2025 pm 07:36 PM

VS -Code ist auf Mac verfügbar. Es verfügt über leistungsstarke Erweiterungen, GIT -Integration, Terminal und Debugger und bietet auch eine Fülle von Setup -Optionen. Für besonders große Projekte oder hoch berufliche Entwicklung kann VS -Code jedoch Leistung oder funktionale Einschränkungen aufweisen.

So verwenden Sie VSCODE So verwenden Sie VSCODE Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCODE) ist ein plattformübergreifender, Open-Source-Editor und kostenloser Code-Editor, der von Microsoft entwickelt wurde. Es ist bekannt für seine leichte, Skalierbarkeit und Unterstützung für eine Vielzahl von Programmiersprachen. Um VSCODE zu installieren, besuchen Sie bitte die offizielle Website, um das Installateur herunterzuladen und auszuführen. Bei der Verwendung von VSCODE können Sie neue Projekte erstellen, Code bearbeiten, Code bearbeiten, Projekte navigieren, VSCODE erweitern und Einstellungen verwalten. VSCODE ist für Windows, MacOS und Linux verfügbar, unterstützt mehrere Programmiersprachen und bietet verschiedene Erweiterungen über den Marktplatz. Zu den Vorteilen zählen leicht, Skalierbarkeit, umfangreiche Sprachunterstützung, umfangreiche Funktionen und Versionen

Was ist der Hauptzweck von Linux? Was ist der Hauptzweck von Linux? Apr 16, 2025 am 12:19 AM

Zu den Hauptanwendungen von Linux gehören: 1. Server -Betriebssystem, 2. Eingebettes System, 3. Desktop -Betriebssystem, 4. Entwicklungs- und Testumgebung. Linux zeichnet sich in diesen Bereichen aus und bietet Stabilität, Sicherheits- und effiziente Entwicklungstools.

So überprüfen Sie die Lageradresse von Git So überprüfen Sie die Lageradresse von Git Apr 17, 2025 pm 01:54 PM

Um die Git -Repository -Adresse anzuzeigen, führen Sie die folgenden Schritte aus: 1. Öffnen Sie die Befehlszeile und navigieren Sie zum Repository -Verzeichnis; 2. Führen Sie den Befehl "git remote -v" aus; 3.. Zeigen Sie den Repository -Namen in der Ausgabe und der entsprechenden Adresse an.

See all articles