Linux常用命令速查手册

linux常用命令整理。

Linux的目录结构遵循一种标准布局,关键目录包括:

  • / (根目录):所有目录的起点。
  • /bin:存放系统基本的二进制可执行文件。
  • /boot:启动加载程序和内核映像。
  • /dev:设备文件,代表硬件资源。
  • /etc:系统和应用程序的配置文件。
  • /home:普通用户的个人目录。
  • /lib, /lib64:系统库文件。
  • /media, /mnt:挂载外部设备或文件系统。
  • /opt:第三方软件安装目录。
  • /proc:虚拟文件系统,展示内核状态信息。
  • /root:超级用户(root)的主目录。
  • /run:运行时系统数据。
  • /sbin, /usr/sbin, /usr/local/sbin: 系统管理命令。
  • /srv:服务数据。
  • /sys:暴露内核参数的虚拟文件系统。
  • /tmp:临时文件存放处。
  • /usr:全局共享的只读数据。
  • /var:可变数据,如日志、数据库等。

Linux的文件权限体系确保了文件和目录的安全访问,分为读(r), 写(w), 执行(x)三类,针对所有者(u), 所属组(g), **其他人(o)**三个角色。

权限表示法

  • 数字表示法(如755):每位数字代表一种权限集合,r=4, w=2, x=1,无权限为0。因此,755意味着所有者有全部权限(4+2+1=7),组用户和其他用户只有读和执行权限(4+1=5)。
  • 符号表示法(如rwxr-xr-x):直观显示每种权限。

修改权限

  • chmod命令:如chmod 755 file.txt设定文件权限。
  • chown命令:更改文件所有者,如chown user:group file.txt
  • chgrp命令:更改文件所属组,如chgrp group file.txt

通过精细的权限管理,Linux系统能够有效地控制不同用户和进程对资源的访问权限,保证系统的安全性和稳定性。

文件和目录

Ls

  • 功能:列出目录内容。
  • 用法
    • ls:显示当前目录下的文件和目录。
    • ls -l:以长格式显示,包含权限、大小、修改日期等信息。
    • ls -a:显示包括隐藏文件(以.开头的文件)在内的所有文件。
    • ls -R:递归显示子目录内容。

Cd

  • 功能:切换当前工作目录。
  • 用法
    • cd /path/to/directory:切换到指定目录。
    • cd ..:返回上一级目录。
    • cd ~:回到用户家目录。
    • cd -:返回上一次所在的目录。

Pwd

  • 功能:显示当前工作目录的绝对路径。

Mkdir

  • 功能:创建新目录。
  • 用法
    • mkdir directory_name:创建单个目录。
    • mkdir -p dir1/dir2/dir3:递归创建多级目录,即使中间目录不存在。

Rmdir

  • 功能:删除空目录。
  • 用法rmdir directory_name

Rm

  • 功能:删除文件或目录。
  • 用法
    • rm file_name:删除文件。
    • rm -r directory_name:递归删除目录及其内容。
    • rm -f file_name:强制删除,不提示确认。
    • rm -rf directory_name:强制递归删除,极度危险,务必谨慎使用。

Touch

  • 功能:创建新文件或更新文件的时间戳。
  • 用法touch file_name

Cp

  • 功能:复制文件或目录。
  • 用法
    • cp source destination:复制文件或目录。
    • cp -r source_dir destination_dir:递归复制目录。

Mv

  • 功能:移动或重命名文件和目录。
  • 用法
    • mv old_name new_name:重命名文件或目录。
    • mv source destination:移动文件或目录。

Find

  • 功能:在文件系统中查找文件。
  • 用法
    • find /path -name pattern:根据名称查找文件。
    • find . -type f -mtime +7:查找当前目录下7天前被修改的文件。

Chmod

  • 功能:改变文件或目录的权限。
  • 用法
    • chmod 755 file_name:设置文件权限为所有者可读写执行,组用户和其他用户可读执行。
    • chmod u+x,g-w,o=r file_name:分别修改所有者、组用户和其他用户的权限。

chownchgrp

  • 功能:改变文件或目录的所有者和所属组。
  • 用法
    • chown user:group file_name:更改文件的所有者和组。
    • chgrp group file_name:仅更改文件的组。

Ln

  • 功能:创建链接文件。
  • 用法
    • ln -s source_file link_name:创建软链接(符号链接)。
    • ln source_file target_file:创建硬链接。

Tar

  • 功能:打包、压缩或解压文件。
  • 用法
    • tar -cvf archive.tar file1 file2:创建tar包。
    • tar -xvf archive.tar:解压tar包。
    • tar -czvf archive.tar.gz file1 file2:创建gzip压缩的tar包。
    • tar -xzvf archive.tar.gz:解压gzip压缩的tar包。

zipunzip

  • 功能:压缩与解压缩文件或目录。
  • 用法
    • zip archive.zip file1 file2:压缩文件到zip格式。
    • unzip archive.zip:解压zip文件。

Du

  • 功能:估计文件和目录的空间使用情况。
  • 用法
    • du -h file:以人类可读的格式显示文件大小。
    • du -sh directory:显示目录的总大小。

Df

  • 功能:报告文件系统的磁盘空间使用情况。

这些命令是Linux系统管理中基础且强大的工具,熟练掌握它们对提高工作效率至关重要。

文件查看和编辑

Cat

  • 功能:快速查看文件内容,支持合并多个文件输出。
  • 用法:
    • cat file.txt:显示单个文件内容。
    • cat file1.txt file2.txt > combined.txt:合并两个文件内容到新文件。

Less

  • 功能:分页查看文件,支持上下滚动和搜索。
  • 用法:
    • less file.txt:打开文件,按Space键翻页,/keyword搜索,q退出。

More

  • 功能:分屏查看文件,只能向下翻页。
  • 用法:
    • more file.txt:逐屏显示文件内容,按空格翻页,q退出。

headtail

  • 功能:查看文件开头或结尾部分内容。
  • 用法:
    • head -n 10 file.txt:显示文件前10行。
    • tail -n 5 file.txt:显示文件最后5行。
    • tail -f log.txt:实时查看文件末尾追加的内容,常用于监控日志。

Grep

  • 功能:搜索文件中匹配特定模式的行。
  • 用法:
    • grep 'pattern' file.txt:搜索包含pattern的行。
    • grep -r 'search' /path/to/dir:递归搜索目录下所有文件。

Nano

  • 功能:简易的命令行文本编辑器,适合初学者。
  • 用法:
    • nano file.txt:打开或创建文件进行编辑,按Ctrl+O保存,Ctrl+X退出。

vivim

  • 功能:高级文本编辑器,支持语法高亮、插件等。
  • 用法:
    • vi file.txtvim file.txt:进入编辑模式,按i开始插入文本,:wq保存并退出,:q!不保存退出。

Ed

  • 功能:Linux中最简单的文本编辑器,非交互式。
  • 用法:
    • ed file.txt:进入ed编辑模式,使用命令进行编辑,如a追加文本,.结束编辑,w写入文件,q退出。

Sed

  • 功能:流编辑器,用于自动编辑一个或多个文件。
  • 用法:
    • sed 's/old/new/g' file.txt:将文件中所有old替换为new
    • sed -i '1d' file.txt:直接在原文件中删除第一行。

Awk

  • 功能:强大的文本分析工具,也可用于编辑。
  • 用法:
    • awk '{print $1}' file.txt:打印文件的每一行的第一列。
    • awk '{gsub(/old/, "new")}1' file.txt > newfile.txt:替换并输出到新文件。

网络管理

Ifconfig

  • 功能:查看和配置网络接口的IP地址、子网掩码、广播地址等。
  • 用法:
    • ifconfig:显示当前活动的网络接口信息。
    • ifconfig eth0:查看特定接口(如eth0)的详细信息。
    • ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up:配置IP地址、子网掩码并激活接口。

Ip

  • 功能:更现代的网络配置工具,替代ifconfig,功能更强大。
  • 用法:
    • ip addr show:显示所有网络接口的地址信息。
    • ip link set eth0 up/down:启用/禁用网络接口。
    • ip addr add 192.168.1.10/24 dev eth0:为接口添加IP地址。

Ping

  • 功能:发送ICMP回显请求,测试与另一台主机的连通性。
  • 用法:
    • ping google.com:测试与Google服务器的连接。
    • ping -c 4 google.com:发送4次ping请求后停止。

Traceroute

  • 功能:追踪数据包到目标主机的路由路径。
  • 用法:
    • traceroute google.com:显示到达google.com的路由节点。

Netstat

  • 功能:显示网络连接、路由表、网络接口统计等信息。
  • 用法:
    • netstat -tuln:显示监听中的TCP和UDP端口。
    • netstat -rn:查看路由表。

Ss

  • 功能:比netstat更高效的套接字统计工具。
  • 用法:
    • ss -t:显示TCP连接。
    • ss -l:显示监听状态的套接字。

Route

  • 功能:手动配置和查看路由表。
  • 用法:
    • route -n:显示路由表,不进行DNS解析。
    • route add default gw 192.168.1.1:设置默认网关。

iwconfig / iw

  • 功能:无线网络接口配置工具。
  • 用法:
    • iwconfig wlan0:查看无线接口信息。
    • iwlist wlan0 scan:扫描无线网络(使用iw命令在较新系统中)。

Nmcli

  • 功能:NetworkManager命令行工具,用于管理网络连接。
  • 用法:
    • nmcli device status:查看网络设备状态。
    • nmcli con up id "My WiFi":激活指定的网络连接。

Curl

  • 功能:命令行工具,用于传输数据,常用于HTTP请求。
  • 用法:
    • curl http://example.com:下载或获取网页内容。
    • curl -I http://example.com:仅获取HTTP头信息。

进程和任务

Ps

  • 功能:显示当前终端下的活跃进程状态。
  • 用法:
    • ps:显示当前终端下的简略进程信息。
    • ps aux:显示所有用户的进程详细信息。
    • ps -ef:显示所有进程的完整信息,包括父进程ID。

Top

  • 功能:实时显示系统中各个进程的资源占用情况。
  • 用法:
    • top:启动top,显示CPU、内存使用率及各进程资源占用。
    • 在top界面,可以按P排序CPU使用率,按M排序内存使用率,Q退出。

Htop

  • 功能:与top相似,但提供更友好的界面和交互体验(需先安装)。
  • 用法:
    • htop:启动htop,享受彩色界面和键盘导航。
    • 同样支持按资源使用排序,搜索进程,杀死进程等功能。

Pgrep

  • 功能:根据名称搜索并显示进程ID。
  • 用法:
    • pgrep sshd:查找名为sshd的进程ID。
    • pgrep -f pattern:查找执行命令中包含pattern的进程。

Pkill

  • 功能:根据名称发送信号给进程,常用来终止进程。
  • 用法:
    • pkill -9 sshd:发送SIGKILL信号(强制终止)给名为sshd的进程。
    • pkill -TERM myprocess:发送SIGTERM信号(正常终止)。

Kill

  • 功能:向指定进程发送信号。
  • 用法:
    • kill PID:默认发送SIGTERM信号终止进程,PID为进程ID。
    • kill -9 PID:发送SIGKILL信号强制终止进程。

Jobs

  • 功能:列出当前shell会话中的后台作业。
  • 用法:
    • jobs:显示后台作业的状态。

fgbg

  • 功能:将后台作业切换到前台或继续在后台运行。
  • 用法:
    • fg %1:将作业号为1的后台作业调至前台。
    • bg %2:将作业号为2的作业放回后台继续执行。

Nohup

  • 功能:让命令在后台运行,即使用户退出终端也不受影响。
  • 用法:
    • nohup command &:启动command并在后台运行,忽略挂断信号。

screentmux

  • 功能:终端复用器,允许多个会话在同一终端窗口中运行,即使断开连接也能恢复。
  • 用法:
    • screentmux:启动新的会话。
    • screen -rtmux attach:重新连接到之前的会话。

用户和权限

Useradd

  • 功能:创建新用户账户。
  • 用法:
    • useradd username:创建名为username的用户。
    • useradd -m -s /bin/bash username:创建用户并自动创建家目录,指定bash为默认shell。

Passwd

  • 功能:设置或修改用户密码。
  • 用法:
    • passwd username:为用户username设置密码。
    • passwd -l username:锁定用户账户。
    • passwd -u username:解锁用户账户。

Usermod

  • 功能:修改用户账户属性。
  • 用法:
    • usermod -l new_username old_username:更改用户名。
    • usermod -aG groupname username:将用户添加到指定用户组。

Userdel

  • 功能:删除用户账户。
  • 用法:
    • userdel username:删除用户账户,保留家目录。
    • userdel -r username:删除用户账户及其家目录。

Id

  • 功能:显示用户或用户组的身份信息。
  • 用法:
    • id username:显示指定用户的UID、GID及所属组。

Chmod

  • 功能:更改文件或目录的权限。
  • 用法:
    • chmod 755 file.txt:给予所有者读写执行权限,组用户和其他用户读执行权限。
    • chmod u+x,g-w,o-r file.txt:分别为所有者增加执行权限,组用户去掉写权限,其他用户去掉读权限。

Chown

  • 功能:更改文件或目录的所有者。
  • 用法:
    • chown username file.txt:将file.txt的所有者改为username
    • chown username:groupname file.txt:同时更改所有者和所属组。

Chgrp

  • 功能:更改文件或目录的所属组。
  • 用法:
    • chgrp groupname file.txt:将file.txt的所属组改为groupname

Umask

  • 功能:设置文件和目录的默认权限掩码。
  • 用法:
    • umask 022:设置默认创建的文件权限为644,目录权限为755。

Sudo

  • 功能:允许用户以其他用户(通常是root)的权限运行命令。
  • 用法:
    • sudo command:以root权限执行command。
    • sudo -u username command:以指定用户username的权限执行command。

Visudo

  • 功能:编辑sudoers文件,配置sudo权限。
  • 用法:
    • visudo:安全地编辑sudoers文件,添加或修改用户sudo权限。

压缩和解压

Tar

  • 功能:打包和压缩文件或目录。
  • 用法:
    • 打包不压缩:tar -cvf archive.tar file1 file2 dir1
    • 打包并用gzip压缩:tar -czvf archive.tar.gz file* dir*
    • 打包并用bzip2压缩:tar -cjvf archive.tar.bz2 file* dir*
    • 解压:tar -xvf archive.tartar -xzvf archive.tar.gztar -xjvf archive.tar.bz2

gzip / gunzip

  • 功能:压缩和解压缩单个文件。
  • 用法:
    • 压缩:gzip file.txt,生成file.txt.gz
    • 解压缩:gunzip file.txt.gzgzip -d file.txt.gz

bzip2 / bunzip2

  • 功能:高压缩比压缩和解压缩单个文件。
  • 用法:
    • 压缩:bzip2 file.txt,生成file.txt.bz2
    • 解压缩:bunzip2 file.txt.bz2bzip2 -d file.txt.bz2

zip / unzip

  • 功能:创建和解压缩.zip格式的文件。
  • 用法:
    • 压缩:zip archive.zip file1 file2 dir1
    • 解压缩:unzip archive.zip

rar / unrar

  • 功能:处理.rar格式的压缩文件,需先安装unrar工具。
  • 用法:
    • 压缩:rar a archive.rar file* dir*(需rar软件支持)。
    • 解压缩:unrar x archive.rar

高级用法与技巧

  • 查看压缩文件内容

    • tar tvf archive.tartar tzvf archive.tar.gz
  • 递归压缩/解压缩

    • 使用-r选项可以递归处理目录,但在tar命令中通常不需要显式指定,因为它默认处理目录结构。
  • 保留文件属性和权限

    • tar命令中使用-p选项可以保留文件的权限、所有权和时间戳。
  • 分卷压缩

    • 使用split命令配合tar可以创建分卷压缩文件,如tar cvzf - dir | split -d -b 100M - archive.tar.gz.

磁盘和文件系统

Df

  • 功能:报告文件系统的磁盘空间使用情况。
  • 用法:
    • df -h:以人类可读的格式显示磁盘空间(如KB、MB、GB)。
    • df -i:显示inode使用情况而非磁盘空间。

Du

  • 功能:估计文件和目录所占磁盘空间。
  • 用法:
    • du -h directory:显示指定目录的磁盘使用情况,以人类可读的格式。
    • du -sh * | sort -rh | head -n 5:找出当前目录下最大的5个文件或目录。
  • 参数
    • -s:表示汇总指定目录的大小,只显示总计,而不列出子目录的大小。
    • -h:以人类可读的方式显示文件大小(例如,K、M、G表示千字节、兆字节、吉字节)。

Fdisk

  • 功能:用于创建、删除、调整磁盘分区。
  • 用法:
    • fdisk /dev/sda:操作磁盘sda,需小心使用,可能影响数据。
    • 在fdisk交互模式下,输入m获取帮助,n创建新分区,d删除分区等。

Mkfs

  • 功能:创建文件系统。
  • 用法:
    • mkfs -t ext4 /dev/sdb1:在sdb1分区上创建ext4文件系统。

Mount

  • 功能:挂载文件系统。
  • 用法:
    • mount /dev/sdb1 /mnt/mydisk:将sdb1分区挂载到/mnt/mydisk目录下。
    • mount -o rw,remount /mnt/mydisk:重新挂载为可读写模式。

Umount

  • 功能:卸载已挂载的文件系统。
  • 用法:
    • umount /mnt/mydisk:卸载/mnt/mydisk目录下的文件系统。

Lsblk

  • 功能:列出所有可用或已挂载的块设备及其挂载点。
  • 用法:
    • lsblk:显示简要的块设备列表。
    • lsblk -f:显示包含文件系统类型和挂载点的详细信息。

Parted

  • 功能:一个更高级的分区编辑器,支持GPT和MBR分区表。
  • 用法:
    • parted /dev/sdc:进入交互模式,使用print查看分区,mklabel gpt创建GPT标签等。

Resize2fs

  • 功能:在线调整ext2、ext3、ext4文件系统的大小。
  • 用法:
    • resize2fs /dev/sdb1:自动调整文件系统大小到分区大小。
    • resize2fs /dev/sdb1 10G:将文件系统大小调整为10GB。

日志管理

Journalctl

  • 功能:查询和管理systemd日记(Journal)。
  • 用法:
    • journalctl:查看所有日志条目。
    • journalctl -u nginx.service:查看特定服务(如nginx)的日志。
    • journalctl -f:实时跟踪日志。
    • journalctl --since "1 hour ago":查看过去一小时内的日志。
    • journalctl -p err..crit:筛选错误和严重级别的日志。

Tail

  • 功能:查看文件末尾内容,常用于实时监控日志文件。
  • 用法:
    • tail -f /var/log/syslog:实时跟踪syslog文件的最新日志。
    • tail -n 100 /var/log/messages:查看messages文件的最后100行。

Less

  • 功能:分页查看文件内容,适用于浏览大日志文件。
  • 用法:
    • less /var/log/auth.log:分页查看认证相关的日志文件。
    • less中,可以使用/pattern搜索关键字,n跳到下一个匹配,N跳到上一个匹配,q退出。

Grep

  • 功能:搜索文件中包含指定模式的行。
  • 用法:
    • grep 'error' /var/log/syslog:搜索含有“error”的日志行。
    • grep -i 'warning' /var/log/messages:不区分大小写搜索“warning”。

Logrotate

  • 功能:自动旋转、压缩和删除旧日志文件。
  • 用法:
    • 配置文件位于/etc/logrotate.conf/etc/logrotate.d/目录下。
    • 通过cron定时执行,一般每日运行一次。
    • 示例配置:/var/log/myapp.log { daily rotate 7 compress delaycompress missingok}

Syslog-Ng

  • 功能:高级系统日志守护进程,提供日志收集、过滤和转发功能。
  • 用法:
    • 配置文件通常位于/etc/syslog-ng/syslog-ng.conf
    • 需要手动配置以定义日志源、目的地和过滤规则。
    • 例如,配置远程日志服务器:destination d_network { tcp("remote.server.example" port(514)); };

Rsyslog

  • 功能:另一种流行的系统日志守护进程,支持复杂日志处理逻辑。
  • 用法:
    • 配置文件通常位于/etc/rsyslog.conf/etc/rsyslog.d/*.conf
    • 可以配置日志级别、行动(如写入文件、发送至远程服务器)。
    • 示例配置:*.* @remote.log.server:514,将所有日志发送到远程服务器。

系统信息

Uname

  • 功能:显示系统内核信息。
  • 用法:
    • uname -a:显示所有信息,包括内核名称、主机名、内核发行版本、硬件名称、硬件平台和操作系统名称。
    • uname -r:仅显示内核版本。

Hostname

  • 功能:显示或设置主机名。
  • 用法:
    • hostname:显示当前主机名。
    • hostnamectl set-hostname newhostname:设置新的主机名(需管理员权限)。

Uptime

  • 功能:显示系统运行时间和平均负载。
  • 用法:
    • uptime:显示系统已经运行的时间以及过去的1、5、15分钟的平均负载。

Top

  • 功能:实时显示系统进程状态和资源使用情况。
  • 用法:
    • top:启动top,查看CPU使用率、内存使用情况及各进程资源占用。

Free

  • 功能:显示系统内存使用情况。
  • 用法:
    • free -h:以人类可读的格式(如GB, MB)显示内存和交换空间使用情况。

Vmstat

  • 功能:报告虚拟内存统计信息、进程、内存、CPU活动等。
  • 用法:
    • vmstat:显示简要统计信息。
    • vmstat 5:每5秒更新一次统计信息。

Df

  • 功能:显示文件系统的磁盘空间使用情况。
  • 用法:
    • df -h:以易读格式展示磁盘空间使用情况。

Du

  • 功能:估算文件和目录的空间占用。
  • 用法:
    • du -sh /path/to/directory:显示指定目录的总磁盘使用量。

Lscpu

  • 功能:显示CPU体系结构信息。
  • 用法:
    • lscpu:提供CPU型号、核心数、线程数、频率等信息。

Inxi

  • 功能:提供详细的系统硬件信息(需先安装)。
  • 用法:
    • inxi -F:显示全面的系统硬件信息,包括CPU、内存、显卡、硬盘等。

Cat /Proc/Meminfo

  • 功能:查看内存详细信息。
  • 用法:
    • 直接执行即可查看内存总量、已用、空闲等详细信息。

Cat /Proc/Cpuinfo

  • 功能:查看CPU详细信息。
  • 用法:
    • 直接执行以获取CPU型号、核心数、频率等硬件信息。

系统管理

Systemctl

  • 功能:管理系统服务和系统状态。
  • 用法:
    • systemctl start nginx.service:启动nginx服务。
    • systemctl status sshd:查看sshd服务状态。

Service

  • 功能:在较老的系统中用于服务管理(已被systemctl取代)。
  • 用法:
    • service apache2 restart:重启apache2服务。

Shutdown

  • 功能:安排系统关机或重启。
  • 用法:
    • shutdown -h now:立即关机。
    • shutdown +30 "System will reboot in 30 minutes":30分钟后重启,并显示通知消息。