在Linux服务器的管理和维护过程中,掌握一些常用的命令是非常必要的。这些命令不仅可以帮助你更好地了解和控制系统,还能提高工作效率,减少错误发生的概率。本文将详细介绍一些在Linux服务器上常用的命令,覆盖从基本的文件操作到高级的系统管理,力求内容全面,帮助读者深入理解每一个命令的用法和原理。
一、文件与目录操作命令
1. ls
—— 列出目录内容
ls
是最常用的命令之一,用于列出目录内容。它可以显示当前目录或指定目录下的文件和子目录。
ls
ls -l
:长格式列出文件,显示详细信息如权限、链接数、所有者、文件大小和修改时间。ls -a
:显示隐藏文件,即那些以.
开头的文件。ls -h
:与-l
结合,显示人类可读的文件大小,如1K
,234M
。
2. cd
—— 切换目录
cd
用于改变当前工作目录。
cd /path/to/directory
cd ~
或cd
:返回用户的主目录。cd -
:返回上一个工作目录。cd ..
:返回上一级目录。
3. pwd
—— 显示当前工作目录
pwd
(print working directory)用于显示当前的工作目录路径。
pwd
4. mkdir
—— 创建目录
mkdir
用于创建一个新的目录。
mkdir new_directory
mkdir -p /path/to/directory
:递归创建目录。如果父目录不存在,mkdir
会自动创建。
5. rmdir
—— 删除空目录
rmdir
只能删除空目录。如果目录不为空,可以使用 rm -r
。
rmdir directory_name
6. rm
—— 删除文件或目录
rm
用于删除文件或目录。删除操作不可恢复,因此要小心使用。
rm file_name
rm -r directory_name
:递归删除目录及其内容。rm -f file_name
:强制删除文件,无需确认提示。
7. cp
—— 复制文件或目录
cp
命令用于复制文件或目录。
cp source_file destination_file
cp -r source_directory destination_directory
:递归复制目录。
8. mv
—— 移动或重命名文件或目录
mv
命令用于移动或重命名文件或目录。
mv old_name new_name
mv file_name /path/to/destination/
:将文件移动到指定目录。
9. touch
—— 创建空文件或更新文件时间戳
touch
通常用于创建一个新的空文件,或者更新现有文件的时间戳。
touch file_name
二、文件内容查看与编辑命令
1. cat
—— 连接并显示文件内容
cat
是一个常用的命令,用于查看文件内容,尤其是小文件。
cat file_name
cat file1 file2 > merged_file
:将多个文件合并成一个文件。cat -n file_name
:显示行号。
2. less
和 more
—— 分页查看文件内容
less
和 more
用于分页查看文件内容。相比 more
,less
更加功能丰富。
less file_name
- 在
less
中,可以使用上下箭头键滚动文件,按q
退出。 more
命令则逐页显示内容,按空格键翻页。
3. head
和 tail
—— 查看文件的头部或尾部内容
head
和 tail
命令分别用于查看文件的前几行或最后几行内容。
head -n 10 file_name
head -n 10
:查看文件的前10行。tail -n 10 file_name
:查看文件的最后10行。tail -f file_name
:实时查看文件的更新内容,通常用于监控日志文件。
4. nano
和 vim
—— 文件编辑器
nano
和 vim
是两个常用的文本编辑器。nano
是一个易于使用的编辑器,适合新手,而 vim
则功能强大,适合高级用户。
nano file_name
vim file_name
:打开文件进行编辑。- 在
nano
中,按Ctrl+O
保存文件,Ctrl+X
退出编辑。 - 在
vim
中,按i
进入插入模式,编辑完成后按Esc
,输入:wq
保存并退出。
三、权限与用户管理命令
1. chmod
—— 修改文件权限
chmod
命令用于更改文件或目录的权限。权限由读(r)、写(w)、执行(x)组成,分别用数字4、2、1表示。
chmod 755 file_name
chmod u+x file_name
:给文件所有者增加执行权限。chmod -R 755 directory_name
:递归修改目录权限。
2. chown
—— 修改文件所有者
chown
命令用于更改文件或目录的所有者和所属组。
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 user_name
:为指定用户修改密码,必须有管理员权限。
4. useradd
和 userdel
—— 添加与删除用户
useradd
命令用于创建新用户,而 userdel
则用于删除用户。
useradd new_user
userdel user_name
:删除用户。useradd -m -s /bin/bash new_user
:创建用户并为其分配主目录和默认Shell。
5. usermod
—— 修改用户信息
usermod
命令用于修改现有用户的信息。
usermod -aG group_name user_name
usermod -l new_user_name old_user_name
:更改用户名。usermod -d /new/home/dir user_name
:更改用户的主目录。
6. groups
—— 显示用户所属的组
groups
命令用于显示指定用户所属的所有组。
groups user_name
- 不带参数时,显示当前用户所属的组。
四、进程管理命令
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. mount
和 unmount
—— NFS网络文件系统
在使用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. iostat
—— 磁盘I/O监控
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. iotop
—— 磁盘I/O监控
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
:显示指定用户的最近登录时间。