Bootstrap

实战派分享:Linux服务器管理不得不学的顶级常用命令

在Linux服务器的日常运维与管理中,精通一系列常用命令成为了不可或缺的技能。这些命令如同一把把钥匙,能够解锁服务器的潜能,助您深度洞察系统状态,从而更加高效地执行维护任务,同时有效预防潜在问题。本文精心编纂,旨在全面剖析从文件基本操作到高级系统管理层面的诸多命令,每一细节均深入浅出,旨在助力读者不仅知其然,更知其所以然,使这些工具成为您管理Linux服务器的得力助手。在这里插入图片描述

一、文件与目录核心命令

1. 列出目录内容的利器——ls

ls,作为Linux系统中最频繁使用的命令之一,其主要功能在于揭示目录内部的乾坤。无论是浏览当前目录下的文件与文件夹,还是窥探指定路径下的内容,ls都能轻松胜任。

ls

基础用法:ls 直接执行,将展示当前目录下的所有可见文件与目录。

长格式显示:ls -l 会以详细的列表形式展示内容,包括文件权限、所有者、大小、最后修改时间等关键信息。

隐藏文件现身:ls -a 能够显示所有文件,包括那些以.开头的隐藏文件,这些文件通常用于存储配置信息或系统级的隐藏资源。

人性化的文件大小:ls -h 将-h选项与-l结合使用(ls -lh),可以将文件大小以KB、MB等更易于理解的单位显示,使大小信息一目了然。

2. 目录切换的便捷工具——cd

cd(change directory)命令是用户在Linux系统中穿梭于不同目录之间的桥梁。无论是深入到文件系统的各个角落,还是快速返回至熟悉的起点,cd都能助您一臂之力。

cd /path/to/directory

直接跳转:通过指定完整路径(如cd /path/to/directory),可直达目标目录。

回到起点:cd ~ 或 cd; 或简单的 cd 命令能将您带回到自己的主目录,即家的温暖。

记忆回溯:cd -会带您回到上一次所在的目录,如同按下时间的倒退键。

逐级上升:cd …则是向上移动一级目录的快捷方式,适合逐层探索或退出深层目录结构。

3. 知晓所在之处的钥匙——pwd

pwd(print working directory)命令的作用如同其名,它能够打印出当前工作目录的完整路径。无论是初入Linux的新手,还是经验丰富的系统管理员,在复杂的文件系统中迷失方向时,pwd都是找回方向的得力助手。

pwd

4. 创建新空间的魔法——mkdir

mkdir 命令是Linux中创建新目录的魔法棒。只需简单地指定一个新目录的名称,mkdir 就会为您在当前工作目录下创建这个目录。

mkdir new_directory

基础用法:mkdir new_directory 会在当前目录下创建名为new_directory的新目录。

递归创建:mkdir -p /path/to/directory 允许您一次性创建多级目录,如果父目录不存在,mkdir 会自动为您创建它们,确保路径的完整性。

5. 清理空目录的助手——rmdir

与mkdir相对,rmdir命令专门用于删除空目录。若目录非空,则无法直接删除,此时可使用rm -r命令代替。

rmdir directory_name

删除空目录:rmdir directory_name 会删除名为directory_name的空目录。

6. 文件与目录的终结者——rm

rm命令强大而危险,用于删除文件或目录。由于删除操作不可恢复,使用时务必谨慎。

rm file_name

删除文件:rm file_name 会删除指定的文件。

递归删除:rm -r directory_name 会递归地删除目录及其内部的所有文件和子目录。

强制删除:rm -f file_name 会强制删除文件,不会询问确认,适用于脚本或自动化任务中。

7. 复制文件与目录的镜像——cp

cp命令是Linux中的复制大师,无论是单个文件还是整个目录,都能轻松复制。

cp source_file destination_file

复制文件:cp source_file destination_file 会将source_file复制到destination_file指定的位置。

递归复制目录:cp -r source_directory destination_directory 会递归地复制source_directory到destination_directory指定的位置,包括目录内的所有文件和子目录。

8. 移动与重命名的多面手——mv

mv命令是Linux中用于移动文件或目录,以及重命名文件或目录的瑞士军刀。

mv old_name new_name

重命名:mv old_name new_name 会将文件或目录从old_name重命名为new_name。

移动文件:mv file_name /path/to/destination/ 会将文件移动到指定的目录中。

9. 触碰文件的魔法——touch

touch命令在Linux中扮演着多重角色,既可以用来创建新的空文件,也可以用来更新现有文件的时间戳。

touch file_name

创建空文件:touch file_name 会创建一个名为file_name的新空文件。

更新时间戳:如果文件已存在,touch命令会更新该文件的访问和修改时间戳,使其看起来像是刚刚被修改过一样。

二、文件内容查看与编辑命令

1.连接并显示文件内容——cat

cat 命令是Linux中查看文件内容的得力助手,尤其适用于快速浏览小文件。它的基本功能是将文件内容连续输出到标准输出设备(通常是屏幕)。

cat file_name

查看文件内容:cat file_name 会显示指定文件的全部内容。

合并文件:通过将多个文件名作为参数传递给cat,并使用重定向操作符(>),可以将这些文件的内容合并到一个新文件中。例如,cat file1 file2 > merged_file 会将file1和file2的内容合并到merged_file中。

显示行号:cat -n file_name 会在输出中显示每行的行号,便于用户追踪和引用。

2.分页查看文件内容——less和more

当文件内容过多,一屏无法完全显示时,less和more命令便派上了用场。它们允许用户分页查看文件内容。

less file_name

less命令:相比more,less提供了更多的功能和灵活性。使用less file_name进入文件浏览模式后,用户可以使用上下箭头键滚动文件,按q键退出。less还支持搜索、跳转等多种操作。

more命令:more命令则较为简单,它逐页显示文件内容,用户可以通过空格键翻页,按b键回滚到上一页,按q键退出。

3. 查看文件的头部或尾部内容——head和tail

head和tail命令分别用于快速查看文件的前几行和最后几行内容,是处理日志文件或大型文本文件时的常用工具。

head -n 10 file_name

head命令:head -n 10 file_name 会显示文件的前10行。如果不指定行数(-n选项后无参数),则默认显示前10行。

tail命令:tail -n 10 file_name 会显示文件的最后10行。

而tail -f file_name则是实时查看文件内容的利器,它会持续监控文件,并在文件内容更新时立即显示新增的部分,非常适合用于监控日志文件。

4. 文件编辑器——nano和vim

nano 和 vim 是Linux系统中两款广受欢迎的文本编辑器。nano 是一个易于使用的编辑器,适合新手,而 vim 则功能强大,适合高级用户。

nano file_name

vim file_name:打开文件进行编辑。

nano编辑器:以易用性著称,适合初学者。在nano中,用户可以像使用其他图形界面编辑器一样进行编辑。完成编辑后,按Ctrl+O保存文件,再按Ctrl+X退出编辑器。

vim编辑器:虽然学习曲线较陡,但一旦掌握,其强大的功能和灵活性将让用户爱不释手。vim是一种模式编辑器,用户需要在不同的模式之间切换以完成编辑任务。在普通模式下,按i进入插入模式,编辑完成后按Esc返回,然后输入:wq保存并退出编辑器。

三、权限与用户管理命令

1.修改文件权限——chmod

chmod 命令是Linux中调整文件或目录权限的关键工具。它允许你设定哪些用户(所有者、所属组、其他用户)可以对文件或目录进行读(r=4)、写(w=2)、执行(x=1)操作。

chmod 755 file_name

数字模式:如 chmod 755 file_name,这里7(4+2+1)代表所有者有读、写、执行权限,5(4+0+1)代表所属组有读和执行权限,而另一个5同样代表其他用户有读和执行权限。

符号模式:chmod u+x file_name 表示给文件所有者增加执行权限。这里的u代表用户(user),+代表增加权限,x代表执行权限。

递归修改:chmod -R 755 directory_name 会递归地修改指定目录及其内所有文件和子目录的权限。

2.修改文件所有者——chown

chown 命令用于更改文件或目录的所有者和所属组。这是管理文件和目录访问权限的重要一步。

chown owner_name file_name

基本用法:chown owner_name file_name 更改文件的所有者。chown owner_name:group_name file_name 同时更改所有者和所属组。

递归更改:chown -R owner_name:group_name directory_name 递归地更改目录及其内所有文件和子目录的所有者和所属组。

3. 修改用户密码——passwd

passwd 命令用于修改用户密码。无论是当前用户还是管理员为其他用户修改密码,passwd都是必不可少的工具。

passwd

修改当前用户密码:直接输入passwd后按提示操作。

为其他用户修改密码:passwd user_name,但通常需要管理员权限。

4. 添加与删除用户——useradd和userdel

useradd 命令用于创建新用户,而 userdel 则用于删除用户。

useradd new_user

useradd:用于创建新用户。useradd new_user 创建新用户,但可能不分配主目录或默认Shell。useradd -m -s /bin/bash new_user 则会创建新用户,并为其分配主目录和设置/bin/bash为默认Shell。

userdel:用于删除用户。userdel user_name 删除用户,但通常不会删除用户的家目录。使用userdel -r user_name会递归删除用户及其家目录。

5.修改用户信息——usermod

usermod 命令允许你修改现有用户的信息,如所属组、登录名或家目录等。

usermod -aG group_name user_name

修改所属组:usermod -aG group_name user_name 将用户添加到指定组中,-a选项表示追加,不会移除用户已属于的其他组。

更改用户名:usermod -l new_user_name old_user_name 更改用户的登录名。

更改家目录:usermod -d /new/home/dir user_name 更改用户的家目录。注意,这不会移动旧家目录的内容到新位置。

6.显示用户所属的组——groups

groups 命令用于显示指定用户所属的所有组。

groups user_name

不带参数时,显示当前用户所属的组。

显示指定用户所属的所有组:当您想要查看某个特定用户属于哪些组时,可以使用 groups user_name 命令。这里,user_name 是您想要查询的用户的用户名。执行此命令后,系统会列出该用户所属的所有组名,每个组名之间通常会用空格分隔。

显示当前用户所属的组:如果您没有为 groups 命令提供任何参数,那么它将默认显示当前登录用户所属的所有组。这对于快速检查您自己的组权限非常有用。

四、进程管理命令

1.显示进程状态——ps

ps 命令用于显示当前系统运行的进程状态。

ps aux

ps -ef:显示详细的进程信息。

ps aux | grep process_name:过滤并显示特定进程。

2.实时显示进程状态——top和htop

top 和 htop 命令用于实时显示系统中各个进程的运行状态,其中 htop 是 top 的增强版,提供了更加友好的用户界面。

top

在 top 中,可以按 k 杀死进程,按 q 退出。

htop 提供了彩色显示和更丰富的交互功能。

3. 终止进程——kill和killall

kill 和 killall 命令用于终止进程。kill 根据进程ID(PID)终止进程,而 killall 则根据进程名终止所有匹配的进程。

kill PID

kill -9 PID:强制终止进程。

killall process_name:终止所有名为 process_name 的进程。

4.后台与前台进程控制——bg和fg

bg 和 fg 命令用于控制进程在后台或前台运行。

bg %1

fg %1:将后台作业调回前台。

jobs:列出所有后台作业。

5. 持续运行命令——nohup

nohup 命令用于在退出终端后继续运行进程,通常与 & 符号结合使用,以将命令放入后台运行。

nohup command & 

nohup 的输出默认保存在 nohup.out 文件中。

nohup 与 & 结合使用可以使命令在后台运行并且不会因为终端关闭而被终止。

五、网络管理命令

1.检查网络连通性——ping

ping 命令用于测试主机与目标主机之间的连通性。它通过发送ICMP请求包,并接收返回的应答包,来判断网络连接状态。

ping example.com

ping -c 4 example.com:只发送4个请求包。

ping -i 0.5 example.com:设置发送请求包的时间间隔为0.5秒。

2.网络接口配置——ifconfig和ip

ifconfig 命令用于显示和配置网络接口,然而在现代系统中,更推荐使用功能更强大的 ip 命令。

ifconfig

ifconfig eth0 up:启用网卡 eth0。

ip addr show:显示所有网络接口的IP地址信息。

ip link set eth0 up:启用网卡 eth0。

3.网络状态查看——netstat和ss

netstat 命令用于显示网络连接、路由表、接口统计等信息,而 ss 命令是 netstat 的现代替代品,提供了类似功能,但速度更快。

netstat -tuln

netstat -anp:显示所有连接及对应进程。

ss -tuln:显示所有监听的TCP和UDP端口。

4.路由追踪——traceroute

traceroute 命令用于追踪数据包到达目标主机所经过的路由。它能够帮助识别网络中的瓶颈。

traceroute example.com

traceroute -n example.com:以数字形式显示路由节点的IP地址。

在部分系统中,traceroute 可能被 tracepath 命令替代。

5. 文件下载与网络请求——wget和curl

wget 和 curl 都是用于网络请求的命令行工具,常用于文件下载和与API进行交互。

wget http://example.com/file.zip

wget -c http://example.com/file.zip:断点续传下载文件。

curl -O http://example.com/file.zip:下载文件并保存为原始文件名。

curl -I http://example.com:获取HTTP头信息。

6.文件远程传输——scp和rsync

scp 命令用于通过SSH协议在本地与远程主机之间传输文件。rsync 命令则提供了更加高效的同步功能,支持增量传输。

scp local_file user@remote_host:/path/to/destination/

scp -r directory user@remote_host:/path/to/destination/:递归传输目录。

rsync -avz local_dir user@remote_host:/path/to/destination/:增量同步目录,并压缩传输数据。

7. 文件传输协议——ftp和sftp

ftp 和 sftp 命令用于通过FTP协议传输文件。sftp 是通过SSH的安全传输方式。

ftp remote_host

put local_file:上传文件到远程主机。

get remote_file:从远程主机下载文件。

sftp user@remote_host:启动安全文件传输会话。

六、磁盘与文件系统管理命令

1.查看磁盘空间使用情况——df

df 命令用于显示文件系统的磁盘空间使用情况。

df -h

df -h:以人类可读的格式显示磁盘空间使用情况。

df -T:显示文件系统类型。

2.查看目录或文件占用空间——du

du 命令用于显示目录或文件占用的磁盘空间。

du -sh directory_name

du -h --max-depth=1 /path/to/directory:显示目录下每个子目录占用的空间。

du -a:包括文件在内的详细显示。

3.磁盘分区工具——fdisk和parted

fdisk 和 parted 命令用于管理磁盘分区。fdisk 适用于MBR分区表,而 parted 则支持GPT和MBR两种分区表格式。

fdisk /dev/sda

fdisk -l:列出所有磁盘及其分区表。

parted /dev/sda:进入 parted 交互模式,进行磁盘分区操作。

4.创建文件系统——mkfs

mkfs 命令用于在分区上创建文件系统。

mkfs.ext4 /dev/sda1

mkfs -t ext4 /dev/sda1:指定文件系统类型为ext4。

mkfs.xfs /dev/sda1:创建XFS文件系统。

5.挂载与卸载文件系统——mount和umount

mount 命令用于将文件系统挂载到指定的挂载点,而 umount 命令则用于卸载已挂载的文件系统。

mount /dev/sda1 /mnt

mount -a:挂载所有在/etc/fstab中定义的文件系统。

umount /mnt:卸载挂载在 /mnt 的文件系统。

6.文件系统检查——fsck

fsck 命令用于检查和修复文件系统中的错误。

fsck /dev/sda1

fsck -y /dev/sda1:自动修复发现的错误。

fsck -n /dev/sda1:只检测错误,不进行修复。

7. NFS网络文件系统——mount和unmount

在使用NFS(Network File System)时,可以使用 mount 命令将远程的NFS共享挂载到本地系统。

mount -t nfs remote_host:/path/to/share /mnt/nfs

umount /mnt/nfs:卸载NFS挂载点。

七、系统监控与优化命令

1.查看系统运行时间——uptime

uptime 命令用于显示系统的运行时间、当前时间、登录用户数以及系统的平均负载。

uptime

输出格式:当前时间、系统运行时间、当前登录用户数、平均负载(分别是1分钟、5分钟、15分钟的平均值)。

2.查看内存使用情况——free

free 命令用于显示系统的内存和交换分区的使用情况。

free -h

free -h:以人类可读的格式显示内存使用情况。

free -m:以MB为单位显示内存使用情况。

3.系统性能监控——vmstat

vmstat 命令用于报告虚拟内存、进程、CPU活动等信息,是系统性能监控的重要工具。

vmstat 2 5

vmstat 后的两个参数分别表示采样间隔(2秒)和采样次数(5次)。

输出信息包括内存使用、进程、CPU使用等重要指标。

4.磁盘I/O监控——iostat

iostat 命令用于监控系统的磁盘I/O使用情况,包括CPU使用情况和磁盘读写速率。

iostat -x 2 5

-x 参数提供了详细的扩展统计信息。

后面的参数表示每隔2秒采样一次,共采样5次。

5. 系统活动报告——sar

sar 命令是一个功能强大的系统活动监控工具,可以报告CPU、内存、磁盘、网络等多方面的系统活动信息。

sar -u 1 5

sar -u:报告CPU使用情况。

sar -r:报告内存使用情况。

sar -r 1 5

sar -n DEV:报告网络接口的流量数据。

sar -d:报告磁盘设备的I/O使用情况。

6. 实时系统监控——top和htop

top 和 htop 命令提供了一个实时的系统监控界面,显示了系统进程、CPU、内存使用情况等重要信息。htop 是 top 的增强版,提供了更友好的界面和更多的功能。

top

top -o %CPU:按CPU使用率排序显示进程。

htop:启动 htop 界面,可使用方向键、F键进行操作。

F5:在 htop 中切换树形视图,显示进程的父子关系。

7. 高级系统监控工具——atop

atop 命令是一个高级的系统和进程监控工具,可以持续记录系统的资源使用情况,包括CPU、内存、磁盘、网络等。

atop

atop -r:读取之前的记录文件进行分析。

atop -c:显示每个进程的详细资源使用情况。

8.轻量级系统监控——glances

glances 命令是一个跨平台的系统监控工具,支持显示CPU、内存、磁盘、网络等多种资源使用情况,并提供简洁的界面。

glances

glances -t 2:设置刷新间隔为2秒。

glances -s:启动为服务器模式,可以通过网络访问。

9.系统性能监控——nmon

nmon 命令是一个综合的系统性能监控工具,支持监控CPU、内存、网络、磁盘等多种系统资源。

nmon

按 c:显示CPU使用情况。

按 m:显示内存使用情况。

按 d:显示磁盘I/O情况。

按 q:退出 nmon 界面。

10.磁盘I/O监控——iotop

iotop 命令用于实时显示进程的磁盘I/O使用情况,类似于 top 命令。

iotop

iotop -o:只显示正在执行I/O操作的进程。

iotop -P:按进程显示总I/O使用情况。

11.系统调用跟踪——strace

strace 命令用于跟踪进程的系统调用,是调试和分析程序行为的重要工具。

strace -p PID

strace -c ls:统计 ls 命令执行期间的系统调用次数和时间。

strace -e open ls:只跟踪 ls 命令中与 open 系统调用相关的操作。

12.综合系统资源监控——dstat

dstat 命令集成了 vmstat、iostat、netstat 等命令的功能,能够实时显示CPU、磁盘、网络、内存等多方面的资源使用情况。

dstat

dstat -cdngy:显示CPU、磁盘、网络、页面交换和系统负载的统计信息。

dstat --top-cpu:显示占用CPU最多的进程。

13. 网络流量抓取——tcpdump

tcpdump 命令用于抓取和分析网络数据包,是网络故障排除和安全分析的重要工具。

tcpdump -i eth0

tcpdump -i eth0 port 80:抓取接口 eth0 上的HTTP流量。

tcpdump -w file.pcap:将抓取的数据包保存到文件 file.pcap 中,以供之后分析。

14.实时网络流量监控——iftop

iftop 命令用于实时显示网络接口的流量情况,类似于 top 命令,但专注于网络流量。

iftop -i eth0

iftop -n:以数字形式显示IP地址。

iftop -P:显示端口信息。

15.网络流量统计——vnstat

vnstat 命令用于记录和显示网络接口的流量统计信息,可以长时间监控网络流量,并生成报告。

vnstat -i eth0

vnstat -h:显示人类可读的流量统计信息。

vnstat -d:显示每日的流量统计。

八、日志管理命令

1.查看文件内容——tail和head

tail 和 head 命令用于查看文件的开头或结尾部分内容,常用于日志文件的查看。

tail -f /var/log/syslog

tail -n 20 /var/log/syslog:查看文件的最后20行。

head -n 20 /var/log/syslog:查看文件的前20行。

2.分页查看文件内容——less和more

less 和 more 命令用于分页查看文件内容。less 提供了更丰富的功能,支持向前和向后翻页。

less /var/log/syslog

在 less 界面中,按 G 跳到文件末尾,按 g 跳到文件开头。

more 是 less 的简化版,只支持向前翻页。

3.文本搜索——grep

grep 命令用于在文件中搜索匹配的文本行,常用于从日志文件中提取关键信息。

grep "error" /var/log/syslog

grep -i “error” /var/log/syslog:忽略大小写进行搜索。

grep -r “error” /var/log/:递归搜索目录中的所有文件。

4.向系统日志发送消息——logger

logger 命令用于向系统日志发送自定义消息,常用于脚本或程序的调试。

logger "This is a test message"

logger -p local0.notice “Custom message”:指定日志级别发送消息。

logger -t myscript “Script started”:指定日志标签发送消息。

5. 日志轮换——logrotate

logrotate 是一个日志管理工具,用于自动轮换、压缩、删除和邮件通知日志文件。配置文件通常位于 /etc/logrotate.conf。

logrotate /etc/logrotate.conf

在这里插入代码片

logrotate -f /etc/logrotate.conf:强制执行日志轮换。

日志轮换配置可以控制日志文件的保存时间、压缩方式、存档数量等。

九、用户与权限管理命令

1.添加与删除用户——useradd和userdel

useradd 命令用于在系统中创建新用户,而 userdel 则用于删除用户。

useradd newuser

useradd -m newuser:为新用户创建主目录。

userdel -r olduser:删除用户并移除其主目录。

2.修改用户密码——passwd

passwd 命令用于修改用户的登录密码。管理员可以使用此命令为其他用户设置密码。

passwd username

passwd:不带参数执行时,为当前用户修改密码。

passwd -d username:删除用户的密码,允许无密码登录。

3.修改用户信息——usermod

usermod 命令用于修改用户的账户信息,如用户组、登录shell、主目录等。

usermod -aG sudo username

usermod -l newname oldname:修改用户名。

usermod -d /new/home/dir username:更改用户的主目录。

4.添加与删除用户组——groupadd和groupdel

groupadd 命令用于创建新的用户组,groupdel 命令则用于删除用户组。

groupadd newgroup

groupdel oldgroup:删除用户组。

gpasswd -a username newgroup:将用户添加到用户组。

5.文件权限管理——chown和chmod

chown 命令用于改变文件或目录的所有者和用户组,chmod 命令用于修改文件或目录的权限。

chown user:group filename

chown root:staff /path/to/file:将文件的所有者更改为 root,组更改为 staff。

chown -R user:group /path/to/directory:递归更改目录及其所有子文件和子目录的所有者和组。

chmod 755 filename

chmod u+x filename:为文件所有者添加执行权限。

chmod -R 755 /path/to/directory:递归修改目录及其内容的权限。

6.修改文件组——chgrp

chgrp 命令用于更改文件或目录的用户组,与 chown 相似,但专注于修改组而非所有者。

chgrp staff filename

chgrp -R staff /path/to/directory:递归更改目录及其内容的用户组。

7. 设置默认权限掩码——umask

umask 命令用于设置新建文件和目录的默认权限掩码,从而控制新文件的默认权限。

umask 022

umask 077:新建文件的默认权限为 600,目录的默认权限为 700。

通过在 ~/.bashrc 中添加 umask 设置,可以持久化配置。

8.提升权限——sudo和su

sudo 命令用于以超级用户(或其他用户)权限执行命令,而 su 命令则用于切换到其他用户。

sudo command

sudo -i:以超级用户身份打开一个交互式shell。

sudo -u username command:以指定用户身份执行命令。

su -

su username:切换到指定用户。

exit:退出当前用户,返回原来的shell。

9.查看用户信息——id和whoami

id 命令用于显示当前用户的UID、GID及所属组信息,而 whoami 命令则用于显示当前登录的用户名。

id

id username:显示指定用户的UID、GID及所属组信息。

whoami:显示当前用户的用户名。

10.查看用户登录记录——last和lastlog

last 命令用于显示系统最近的用户登录记录,而 lastlog 命令则用于显示所有用户的最近登录时间。

last

last -n 10:显示最近10次登录记录。

lastlog:显示所有用户的最近登录时间。

lastlog -u username:显示指定用户的最近登录时间。

;