在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:显示指定用户的最近登录时间。