前言 对长期使用的shell脚本产生了一丢丢的兴趣, 前来进行一些笔记来记录学习过程, 仅此而已;
查找文本 以grep程序查找文本(以UNIX的专业术语来说,是匹配文本(matching text)是相当方便的。在POSIX系统上,grep可以在两种正则表达式风格中选择一种,或是执行简单的字符串匹配。传统上,有三种程序,可以用来查找整个文本文件:
grep 最早的文本匹配程序。使用POSIX定义的基本正则表达式(Basic Regular Expression,BRE)。
egrep egrep扩展式grep(Extended grep),这个程序使用扩展正则表达式(Extended Regular Expression,ERE)——这是一套功能更强大的正则表达式,使用它的代价就是会耗掉更多的运算资源。以现在的系统而言,在性能影响上几乎没有太大的差别。
fgrep 快速grep(Fast grep)。这个版本匹配固定字符串而非正则表达式,它使用优化的算法,能更有效地匹配固定字符串。最初的版本,也是唯一可以并行(in parallel)地匹配多个字符串的版本;也就是说,grep与egrep只能匹配单个正则表达式;而fgrep使用不同的算法,却能匹配多个字符串,有效地测试每个输入行里,是否有匹配的查找字符串。
这里重点说一下怎么用grep来查找或者输出关键信息的, 另外千万不要用下面这种方式来输出文件
grep "if" -r ./ >> res .txt
这种方式会导致同时匹配res.txt中的结果,会在短时间内导致res.txt文件特别大,如果两分钟不管的话,等着内存爆炸吧~, 下面说一下这个指令的使用, 其参数选项如下
- a --text - A <显示行数> --after-context=<显示行数> - b --byte-offset - B<显示行数> --before-context=<显示行数> - c --count - C<显示行数> --context=<显示行数>或-<显示行数> - d<进行动作> --directories=<动作> - e<范本样式> --regexp=<范本样式> - E --extended-regexp - f<范本文件> --file=<规则文件> - F --fixed-regexp - G --basic-regexp - h --no-filename - H --with-filename - i --ignore-case - l --file-with-matches - L --files-without-match - n --line-number - P --perl-regexp - q --quiet或--silent - R/-r --recursive - s --no-messages - v --revert-match - V --version - w --word-regexp - x --line-regexp - y - o - m <num> --max-count=<num>
常用的正则表达式如下
^ # 锚定行的开始 如:'^grep' 匹配所有以grep开头的行。 $ # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。 . # 匹配一个非换行符的字符 如:'gr.p' 匹配gr后接一个任意字符,然后是p。 * # 匹配零个或多个先前字符 如:'*grep' 匹配所有一个或多个空格后紧跟grep的行。 .* # 一起用代表任意字符。 [] # 匹配一个指定范围内的字符,如'[Gg]rep' 匹配Grep和grep。 [^] # 匹配一个不在指定范围内的字符,如:'[^A-Z]rep' 匹配不包含 A-Z 中的字母开头,紧跟 rep 的行 \(..\) # 标记匹配字符,如'\(love\)' ,love被标记为1。 \< # 锚定单词的开始,如:'\<grep' 匹配包含以grep开头的单词的行。 \> # 锚定单词的结束,如'grep\>' 匹配包含以grep结尾的单词的行。 x\{m\} # 重复字符x,m次,如:'0\{5\}' 匹配包含5个o的行。 x\{m,\} # 重复字符x,至少m次,如:'o\{5,\}' 匹配至少有5个o的行。 x\{m,n\} # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}' 匹配5--10个o的行。 \w # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p' 匹配以G后跟零个或多个文字或数字字符,然后是p。 \W # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。 \b # 单词锁定符,如: '\bgrep\b' 只匹配grep。
修改权限的用法 权限:1、r 2、W 3. X
比如rw的值为4+2=6
用法比较简单,比如 chmod 722 test.txt
系统服务管理 在现代Linux系统中,systemd是主流的服务管理系统,通过systemctl命令可以方便地管理各种系统服务和开机自启动项。
systemctl 服务管理 基本服务操作 sudo systemctl start <服务名>sudo systemctl stop <服务名>sudo systemctl restart <服务名>sudo systemctl reload <服务名>systemctl status <服务名> systemctl is-active <服务名> systemctl is-enabled <服务名>
开机自启动管理 sudo systemctl enable <服务名>sudo systemctl disable <服务名>sudo systemctl enable --now <服务名>sudo systemctl disable --now <服务名>systemctl list-unit-files --type =service --state=enabled systemctl --failed
查看系统服务 systemctl list-units --type =service systemctl list-units --type =service --state=running systemctl list-unit-files --type =service systemctl show <服务名> journalctl -u <服务名> journalctl -u <服务名> -f systemctl list-dependencies <服务名>
systemctl 常用参数 --user --system --all --failed --type =TYPE --state=STATE -l, --full -n, --lines=N -f, --follow --no-pager
常见系统服务示例 sudo systemctl restart NetworkManagersudo systemctl enable sshsudo systemctl start sshsudo systemctl status ufwsudo systemctl enable ufwsudo systemctl restart apache2sudo systemctl reload nginxsudo systemctl start mysqlsudo systemctl enable postgresqlsudo systemctl enable dockersudo systemctl start docker
进程管理 进程管理是Linux系统管理的重要组成部分,包括查看进程状态、终止进程、监控系统负载等操作。
进程查看命令 ps 命令详解 ps ps aux ps auxf ps -ef --forest ps -u username ps -p PID ps aux --sort =-%cpu ps aux --sort =-%mem ps -eo pid,ppid,cmd,%mem,%cpu --sort =-%mem ps aux | head -1; ps aux | tail -n +2 | sort -nr -k3
ps 常用参数组合
系统监控命令 top / htop 实时监控 top top -u username htop htop -t
top 交互式快捷键
进程终止命令 kill 命令详解 kill PIDkill -9 PIDkill -KILL PIDkill -TERM PID kill -HUP PID kill -INT PID kill -QUIT PID kill -TERM -PIDkillall process_name killall -9 process_name pkill process_name pkill -f "pattern" pkill -u username
常见信号类型 信号编号 信号名称 描述 1 SIGHUP 挂断信号,通常用于重新加载配置 2 SIGINT 中断信号(Ctrl+C) 3 SIGQUIT 退出信号(Ctrl+\) 9 SIGKILL 强制终止信号(无法被忽略) 15 SIGTERM 正常终止信号(默认) 18 SIGCONT 继续执行被暂停的进程 19 SIGSTOP 暂停进程 20 SIGTSTP 终端暂停信号(Ctrl+Z)
后台进程管理 command &jobs fg %jobidbg %jobidnohup command &screen -S session_name tmux new -s session_name
系统负载监控 uptime w free -h iostat 2 vmstat 2 sar -u 2 lsof -i :port_number netstat -tulpn | grep :port_number
文件系统操作 文件系统操作是日常Linux使用中最基础也最重要的技能,包括文件查找、复制移动、权限管理等。
文件列表和查看 ls 命令详解 ls ls -lls -als -lals -ltls -ltrls -lSls -lhls -Rls --color=autols -d */ls -1 | wc -l
ls 参数详解 -a, --all -l -h, --human-readable -t -r, --reverse -S -R, --recursive --color=auto -i, --inode -d, --directory -1 -F, --classify
文件查找命令 find 命令详解 find /path -name "filename" find /path -iname "filename" find /path -type f find /path -type d find /path -type l find /path -size +100M find /path -size -10k find /path -size 50M find /path -mtime -7 find /path -mtime +30 find /path -atime -1 find /path -perm 755 find /path -perm -644 find /path -name "*.log" -type f -size +1M find /path -name "*.tmp" -exec rm {} \; find /path -name "*.log" -exec ls -lh {} \; find /path -empty find /path -user username find /path -group groupname
locate 命令 locate filename locate -i filename locate -n 10 filename sudo updatedblocate -r "pattern"
文件操作命令 复制操作 (cp) cp source destinationcp -r source_dir destination_dircp -p source destinationcp -f source destinationcp -i source destinationcp -l source destinationcp -s source destinationcp -v source destinationcp -rp source_dir destination_dir
移动/重命名操作 (mv) mv source destinationmv -i source destinationmv -f source destinationmv -v source destinationfor file in *.txt; do mv "$file " "${file%.txt} .bak" ; done
删除操作 (rm) rm filenamerm file1 file2 file3rm -i filenamerm -f filenamerm -r directoryrm -rf directoryrm -v filenametrash filename
文件权限管理 chmod 权限修改 chmod 755 filename chmod 644 filename chmod 600 filename chmod 777 filename chmod u+x filename chmod g-w filename chmod o+r filename chmod a+x filename chmod -R 755 directory
chown 所有者修改 chown username filenamechown username:groupname filenamechown :groupname filenamechown -R username:groupname directorychown -v username filename
文件链接 ln source_file hard_linkln -s source_file symbolic_linkln -s /path/to/directory link_nameln -sf source_file link_namels -l link_namereadlink link_name
网络管理 网络管理包括网络连接状态查看、网络配置、网络故障诊断以及网络共享等功能。
网络状态查看 netstat 网络连接查看 netstat -a netstat -t netstat -u netstat -l netstat -n netstat -p netstat -tulpn netstat -tulpn | grep :80 netstat -tulpn | grep :22 netstat -r
ss 命令(更现代的替代) ss -a ss -t ss -l ss -p ss -tulpn ss -tulpn | grep :80 ss -s
网络接口管理 ip addr show ifconfig ip addr show eth0 ifconfig eth0 sudo ip link set eth0 upsudo ifconfig eth0 upsudo ip link set eth0 downsudo ifconfig eth0 downsudo ip addr add 192.168.1.100/24 dev eth0sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0sudo ip addr del 192.168.1.100/24 dev eth0
WiFi 网络管理 NetworkManager 命令行工具 nmcli radio wifi nmcli radio wifi on nmcli radio wifi off nmcli dev wifi nmcli dev wifi connect "SSID" password "password" nmcli dev wifi connect "SSID" password "password" hidden yes nmcli con show nmcli con delete "SSID" nmcli con show "SSID"
传统 WiFi 工具 sudo iwlist scaniwconfig sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
网络热点共享 通过本地笔记本共享WiFi网络 方法一:使用 hostapd 和 dnsmasq sudo apt updatesudo apt install hostapd dnsmasqsudo tee /etc/hostapd/hostapd.conf << EOF interface=wlan0 driver=nl80211 ssid=MyHotspot hw_mode=g channel=7 wmm_enabled=0 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=YourPassword wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP EOF sudo tee /etc/dnsmasq.conf << EOF interface=wlan0 dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h EOF sudo ip addr add 192.168.4.1/24 dev wlan0sudo sysctl net.ipv4.ip_forward=1echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.confsudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEsudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPTsudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPTsudo systemctl start hostapdsudo systemctl start dnsmasq
方法二:使用 NetworkManager 创建热点 nmcli dev wifi hotspot ifname wlan0 ssid MyHotspot password "YourPassword" nmcli con add type wifi ifname wlan0 con-name MyHotspot autoconnect yes ssid MyHotspot nmcli con modify MyHotspot 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared nmcli con modify MyHotspot wifi-sec.key-mgmt wpa-psk nmcli con modify MyHotspot wifi-sec.psk "YourPassword" nmcli con up MyHotspot nmcli con down MyHotspot nmcli con delete MyHotspot
方法三:使用 create_ap 工具 git clone https://github.com/oblique/create_ap cd create_apsudo make installsudo create_ap wlan0 eth0 MyHotspot YourPasswordsudo create_ap -n wlan0 MyHotspot YourPasswordsudo create_ap --stop wlan0
网络诊断工具 连通性测试 ping -c 4 google.com ping -c 4 8.8.8.8 ping google.com ping6 google.com ping -I eth0 google.com
路由跟踪 traceroute google.com tracepath google.com traceroute6 google.com
域名解析 nslookup google.com dig google.com dig google.com A dig google.com AAAA dig google.com MX nslookup 8.8.8.8 dig -x 8.8.8.8
网络下载工具 wget https://example.com/file.zip wget -b https://example.com/file.zip wget -c https://example.com/file.zip curl -O https://example.com/file.zip curl -# -O https://example.com/file.zip curl -X POST -d "data=value" https://api.example.com curl -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com
网络监控 iftop nethogs nload iftop -i eth0
系统信息查看 系统信息查看命令帮助了解系统硬件配置、运行状态、资源使用情况等关键信息。
系统基本信息 系统信息查看 uname -auname -suname -runame -muname -puname -iuname -ohostname uname -n
系统版本信息 cat /etc/os-releaselsb_release -a cat /etc/issuecat /etc/debian_version cat /etc/redhat-release cat /proc/version
硬件信息查看 CPU 信息 lscpu cat /proc/cpuinfonproc cat /proc/loadavgtop htop
内存信息 free free -h free -m free -g cat /proc/meminfovmstat vmstat 2
磁盘和存储信息 df df -hdf -Tdf -idu -h /path/to/directorydu -sh .du -h --max-depth=1du -h | sort -hrlsblk lsblk -T lsblk -f fdisk -l
PCI 和 USB 设备 lspci lspci -v lsusb lsusb -v lshw lshw -short
系统运行状态 系统运行时间和负载
进程和资源使用 ps aux ps aux --sort =-%cpu | head ps aux --sort =-%mem | head top htop sar -u 1 5 sar -r 1 5 sar -d 1 5
网络接口状态 ip addr show ifconfig cat /proc/net/devip route show route -n
环境变量和系统配置 环境变量 env printenv echo $PATH echo $HOME echo $USER export VAR_NAME=valueecho $SHELL echo $0
系统限制和配置 ulimit -aulimit -nulimit -usysctl -a sysctl kernel.version sysctl vm.swappiness mount cat /proc/mounts
系统服务和启动信息 启动信息 dmesg dmesg | tail dmesg -T journalctl -b cat /var/log/kern.logcat /var/log/messages
系统运行级别 runlevel systemctl get-default systemctl list-units --type =service --state=running systemctl list-unit-files --type =service --state=enabled
定时任务管理 定时任务允许系统在指定时间自动执行命令或脚本,是系统自动化管理的重要工具。
Cron 定时任务 crontab 基本操作 crontab -e crontab -l crontab -r sudo crontab -e -u usernamesudo crontab -l -u usernamecrontab filename systemctl status cron systemctl status crond
Cron 时间格式
常用 Cron 示例 * * * * * /path/to/command 0 * * * * /path/to/command 0 2 * * * /path/to/command 0 3 * * 1 /path/to/command 0 4 1 * * /path/to/command */5 * * * * /path/to/command 30 * * * * /path/to/command 0 9-17 * * * /path/to/command 0 9 * * 1-5 /path/to/command 0 9,17 * * 1-5 /path/to/command 0 0 1 1 * /path/to/command
特殊时间关键词 @reboot /path/to/command @yearly /path/to/command @monthly /path/to/command @weekly /path/to/command @daily /path/to/command @hourly /path/to/command
Cron 环境变量和输出 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin SHELL=/bin/bash HOME=/root MAILTO=user@example.com MAILTO="" 0 2 * * * /path/to/script.sh >> /var/log/script.log 2>&1 0 2 * * * /path/to/script.sh 2>> /var/log/script.error.log 0 2 * * * /path/to/script.sh > /dev/null 2>&1
At 命令 - 一次性定时任务 at 基本用法 at 14:30 at> /path/to/command at> <Ctrl+D> at 14:30 tomorrow at 14:30 monday at 14:30 2024-12-25 at now + 5 minutes at now + 1 hour at now + 2 days at 14:30 < script.sh atq at -l atrm job_number at -r job_number at -c job_number
batch 命令 batch batch> /path/to/command batch> <Ctrl+D> batch < script.sh
系统级定时任务 系统crontab文件 cat /etc/crontab0 2 * * * root /path/to/command ls /etc/cron.d/ ls /etc/cron.hourly/ ls /etc/cron.daily/ ls /etc/cron.weekly/ ls /etc/cron.monthly/
系统任务目录使用 sudo vim /etc/cron.daily/backup-scriptsudo chmod +x /etc/cron.daily/backup-scriptsudo vim /etc/cron.hourly/log-cleanupsudo chmod +x /etc/cron.hourly/log-cleanupsudo vim /etc/cron.d/custom-task
Systemd Timer systemd timer 基本概念 systemctl list-timers systemctl list-timers --all sudo systemctl start timer-name.timersudo systemctl enable timer-name.timersudo systemctl stop timer-name.timersystemctl status timer-name.timer
创建自定义 systemd timer [Unit] Description=My Custom Task Wants=my-task.timer [Service] Type=oneshot ExecStart=/path/to/my-script.sh [Install] WantedBy=multi-user.target [Unit] Description=Run my-task every 30 minutes Requires=my-task.service [Timer] OnCalendar=*:0/30 Persistent=true [Install] WantedBy=timers.target sudo systemctl daemon-reloadsudo systemctl enable my-task.timersudo systemctl start my-task.timer
Systemd timer 时间格式 OnCalendar=*-*-* 02:00:00 OnCalendar=Mon *-*-* 09:00:00 OnCalendar=*-01-01 00:00:00 OnCalendar=hourly OnCalendar=daily OnCalendar=weekly OnCalendar=monthly OnCalendar=*:0/15
定时任务调试和监控 查看cron日志 tail -f /var/log/crontail -f /var/log/syslog | grep cronsudo vim /etc/rsyslog.d/50-default.confsudo systemctl restart rsyslog
调试定时任务 sudo run-parts /etc/cron.daily/* * * * * /path/to/script.sh >> /var/log/myscript.log 2>&1 echo "$(date) : Starting task" >> /var/log/myscript.log
环境变量和包管理 环境变量管理和软件包管理是Linux系统管理中的核心技能,涉及系统配置和软件安装维护。
环境变量管理 查看和设置环境变量 env printenv echo $PATH echo $HOME echo $USER printenv PATHexport VAR_NAME="value" VAR_NAME="value" unset VAR_NAMEecho ${VAR_NAME:-"not set"}
PATH 环境变量管理 echo $PATH export PATH="/new/path:$PATH " export PATH="$PATH :/new/path" echo 'export PATH="$PATH:/new/path"' >> ~/.bashrcecho 'export PATH="$PATH:/new/path"' >> ~/.zshrcsource ~/.bashrcsource ~/.zshrcsudo vim /etc/environment
配置文件管理 ~/.bashrc ~/.zshrc ~/.profile ~/.bash_profile ~/.bash_logout /etc/profile /etc/bash.bashrc /etc/environment vim ~/.bashrc source ~/.bashrc. ~/.bashrc echo $SHELL echo $0
常用环境变量 HOME USER SHELL PWD OLDPWD PATH LD_LIBRARY_PATH MANPATH EDITOR BROWSER LANG LC_ALL TZ export EDITOR=vimexport BROWSER=firefoxexport LANG=zh_CN.UTF-8
Debian/Ubuntu 包管理 (APT) 基本包管理操作 sudo apt updatesudo apt upgradesudo apt full-upgradesudo apt dist-upgradesudo apt install package_namesudo apt install package1 package2 package3sudo apt install package_name=versionsudo apt install --reinstall package_namesudo apt remove package_namesudo apt purge package_namesudo apt autoremovesudo apt autocleansudo apt clean
软件包查询 apt search keyword apt-cache search keyword apt show package_name apt-cache show package_name apt list --installed apt-cache depends package_name apt-cache rdepends package_name apt list --upgradable dpkg -L package_name dpkg -S /path/to/file apt-file search filename
APT 源管理 cat /etc/apt/sources.listls /etc/apt/sources.list.d/sudo add-apt-repository ppa:user/repositorysudo add-apt-repository --remove ppa:user/repositorywget -qO - https://example.com/key.gpg | sudo apt-key add - apt-key list
Red Hat/CentOS 包管理 (YUM/DNF) YUM 基本操作 sudo yum check-updatesudo yum updatesudo yum install package_namesudo yum remove package_nameyum search keyword yum info package_name yum list installed sudo yum clean all
DNF 操作(Fedora/新版CentOS) sudo dnf check-updatesudo dnf updatesudo dnf install package_namesudo dnf remove package_namednf search keyword dnf info package_name dnf list installed
Arch Linux 包管理 (Pacman) sudo pacman -Syusudo pacman -S package_namesudo pacman -R package_namesudo pacman -Rs package_namepacman -Ss keyword pacman -Si package_name pacman -Q pacman -Qi package_name sudo pacman -Sc
通用软件安装方法 从源码编译安装 wget https://example.com/software.tar.gz tar -xzf software.tar.gz cd software/./configure --prefix=/usr/local make sudo make installsudo make uninstall
使用 Snap 包 sudo apt install snapdsnap find keyword sudo snap install package_namesnap list sudo snap refresh package_namesudo snap remove package_name
使用 Flatpak sudo apt install flatpakflatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak search keyword flatpak install flathub app_id flatpak run app_id flatpak list flatpak update flatpak uninstall app_id
AppImage 应用 wget https://example.com/app.AppImage chmod +x app.AppImage./app.AppImage ./app.AppImage --appimage-extract
开发工具和语言包管理 Python 包管理 pip install package_name pip install --user package_name pip uninstall package_name pip list pip search keyword pip show package_name python -m venv venv_name source venv_name/bin/activatedeactivate pip freeze > requirements.txt pip install -r requirements.txt
Node.js 包管理 npm install package_name npm install -g package_name npm uninstall package_name npm list npm search keyword npm info package_name yarn add package_name yarn remove package_name yarn global add package_name yarn list
其他语言包管理 gem install package_name gem uninstall package_name gem list go get package_name go mod tidy cargo install package_name cargo uninstall package_name
日志查看和磁盘管理 系统日志和磁盘管理是Linux系统维护的重要组成部分,帮助监控系统运行状态和管理存储资源。
系统日志查看 journalctl - systemd 日志查看 journalctl journalctl -f journalctl --follow journalctl -u service_name journalctl -u ssh.service journalctl --since "2024-01-01" journalctl --since "2024-01-01 10:00:00" journalctl --since yesterday journalctl --since "1 hour ago" journalctl --since "2024-01-01" --until "2024-01-02" journalctl -b journalctl -b -1 journalctl -p err journalctl -p warning journalctl -p info journalctl -k journalctl -n 50 journalctl --lines=50 journalctl -o json journalctl --disk-usage sudo journalctl --rotatesudo journalctl --vacuum-time=2weekssudo journalctl --vacuum-size=500M
传统日志文件 /var/log/syslog /var/log/messages /var/log/kern.log /var/log/auth.log /var/log/secure /var/log/boot.log /var/log/cron.log /var/log/maillog /var/log/apache2/ /var/log/nginx/ tail -f /var/log/sysloghead -n 100 /var/log/auth.logless /var/log/messages grep "error" /var/log/syslog grep -i "failed" /var/log/auth.log tail -f /var/log/syslog /var/log/auth.logzcat /var/log/syslog.1.gz zgrep "error" /var/log/syslog.*.gz
日志分析工具 awk '/error/ {print $1, $2, $3, $NF}' /var/log/syslog grep -c "error" /var/log/syslog awk '$0 ~ /Jan 01/ {print}' /var/log/syslog awk '{print $1, $2, $3}' /var/log/auth.log sed -n '100,200p' /var/log/syslog
磁盘和文件系统管理 磁盘使用情况查看 df -hdf -h /homedf -Tdf -idu -h /path/to/directorydu -sh .du -h --max-depth=1du -h | sort -hrfind /path -type f -size +100M -ls find /path -type f -size +1G -exec ls -lh {} \; find /path -type f | wc -l find /path -type d | wc -l
磁盘分区管理 fdisk -l lsblk lsblk -f parted -l blkid sudo fdisk /dev/sdasudo parted /dev/sdasudo parted /dev/sda mklabel gptsudo parted /dev/sda mkpart primary ext4 1MiB 1GiBsudo parted /dev/sda rm 1sudo fdisk -l /dev/sda
文件系统操作 sudo mkfs.ext4 /dev/sda1sudo mkfs.xfs /dev/sda1sudo mkfs.btrfs /dev/sda1sudo fsck /dev/sda1sudo fsck.ext4 /dev/sda1sudo fsck -f /dev/sda1sudo fsck -y /dev/sda1sudo tune2fs -l /dev/sda1sudo dumpe2fs /dev/sda1 | head sudo tune2fs -c 30 /dev/sda1 sudo tune2fs -L "MyDisk" /dev/sda1
挂载和卸载 sudo mount /dev/sda1 /mnt/mydisksudo mount -t ext4 /dev/sda1 /mnt/mydisksudo mount -o ro /dev/sda1 /mnt/mydisksudo umount /dev/sda1sudo umount /mnt/mydisksudo umount -f /mnt/mydisksudo umount -l /mnt/mydisk mount df -hfindmnt findmnt /home
自动挂载配置 sudo vim /etc/fstab/dev/sda1 /home ext4 defaults 0 2 defaults ro rw noexec nosuid nodev auto noauto user nouser sudo mount -asudo mount -o remount,ro /home
压缩和归档 tar 归档工具 tar -cf archive.tar file1 file2 directory/ tar -czf archive.tar.gz file1 file2 directory/ tar -cjf archive.tar.bz2 file1 file2 directory/ tar -cJf archive.tar.xz file1 file2 directory/ tar -xf archive.tar tar -xzf archive.tar.gz tar -xjf archive.tar.bz2 tar -xJf archive.tar.xz tar -tf archive.tar tar -tzf archive.tar.gz tar -xf archive.tar -C /path/to/directory tar -rf archive.tar newfile tar -xvf archive.tar
其他压缩工具 gzip file.txt gunzip file.txt.gz zcat file.txt.gz zip archive.zip file1 file2 directory/ unzip archive.zip unzip -l archive.zip unzip archive.zip -d /path/to/directory 7z a archive.7z file1 file2 directory/ 7z x archive.7z 7z l archive.7z
存储设备管理 USB和移动设备 lsusb lsblk sudo fdisk -lsudo mount /dev/sdb1 /mnt/usbsudo umount /dev/sdb1sudo eject /dev/sdb1sudo blkid
RAID管理 cat /proc/mdstatsudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1sudo mdadm --detail /dev/md0sudo mdadm --stop /dev/md0sudo mdadm --monitor --scan
LVM管理 sudo pvssudo pvdisplaysudo vgssudo vgdisplaysudo lvssudo lvdisplaysudo pvcreate /dev/sda1sudo vgcreate myvg /dev/sda1sudo lvcreate -L 10G -n mylv myvgsudo lvextend -L +5G /dev/myvg/mylvsudo resize2fs /dev/myvg/mylv