Linux常用命令指南

Linux查看磁盘空间命令(df、du)

1、df

df以磁盘分区为单位查看文件系统,可以获取硬盘占用了多少空间,目前还剩下多少空间等信息:

df

image.png

使用df -h 命令来查看磁盘信息,-h选项为根据大小适当显示:

df -h

显示的内容参数含义

内容参数

含义

Filesystem

文件系统

Size

分区大小

1k-blocks

单位是1KB(使用df查看)

uesd

已用容量

Avail

还可用的容量

Use%

已用百分比

Mounted on

挂载点

2、du

du(disk usage),含义为显示磁盘空间的使用情况,用于查看当前目录大小

#查看当前目录大小
du -sh
#返回该目录/文件的大小
du -sh [目录/文件]

#查看当前文件夹下的所有文件大小(包含子文件夹)
du -h
#查看指定文件夹下的所有文件大小(包含子文件夹)
du -h [目录/文件]
#返回当前文件夹的总M数
du -sm
#放回当前文件夹/文件的总M数
du -sm [目录/文件]

du常用参数列表

参数

含义

-s

对每个Names参数只给出占用的数据块总数

-a

递归地显示指定目录中各文件及子目录中各文件占用的数据块数

-b

以字节为单位列出磁盘空间使用情况(系统默认以k字节为单位)

-k

以1024字节为单位列出磁盘空间使用情况

-c

最后再加上一个总计(系统默认设置)

-l

计算所有的文件大小,对硬链接文件,则计算多次

-x

跳过在不同文件系统上的目录不予统计

-h

以K,M,G为单位,提高信息的可读性

注:若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。

Linux 查看端口占用情况

1、lsof

lsof(list open files)是一个列出当前系统打开文件的工具。

lsof 查看端口占用语法格式:

lsof -i:端口号

实例

查看服务器 22 端口的占用情况:

# lsof -i:8000
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nodejs  26993 root   10u  IPv4 37999514      0t0  TCP *:8000 (LISTEN)

可以看到 8000 端口已经被轻 nodejs 服务占用。

lsof -i 需要 root 用户的权限来执行,如下图:

更多 lsof 的命令如下:

lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件

2、netstat

netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。

netstat 查看端口占用语法格式:

netstat -tunlp | grep 端口号
  • -t (tcp) 仅显示tcp相关选项

  • -u (udp)仅显示udp相关选项

  • -n 拒绝显示别名,能显示数字的全部转化为数字

  • -l 仅列出在Listen(监听)的服务状态

  • -p 显示建立相关链接的程序名

例如查看 8000 端口的情况,使用以下命令:

# netstat -tunlp | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      26993/nodejs   

3、kill

在查到端口占用的进程后,如果你要杀掉对应的进程可以使用 kill 命令:

kill -9 PID

如上实例,我们看到 8000 端口对应的 PID 为 26993,使用以下命令杀死进程:

kill -9 26993

4. 使用 ss 命令

ss 命令也用于查看网络套接字信息,功能类似于 netstat,但更快速和高效。

要查看特定端口是否处于监听状态,输入以下命令:

ss -tuln | grep 端口号

将 "端口号" 替换为你要检查的端口号。该命令会列出所有已监听的端口,并使用 grep 过滤出指定端口号的信息。

5. 使用 nc 命令(需要安装)

nc 命令(也称为 netcat)是一个网络工具,它可以用来在终端上进行网络通信。

要检查特定端口是否开放,可以使用 nc 命令尝试连接到该端口:

nc -zv IP地址 端口号

将 "IP地址" 替换为要检查的目标 IP 地址,将 "端口号" 替换为要检查的目标端口号。

如果端口开放,你将看到类似以下的输出:

Connection to IP地址 端口号 port [tcp/*] succeeded!

如果端口未开放,你将看到类似以下的输出:

nc: connect to IP地址 端口号 (tcp) failed: Connection refused

请注意,nc 命令可能需要先安装,你可以使用包管理器来安装它。

sudo apt install netcat #Debian/Ubuntu

sudo yum install nc #CentOS/RHEL

Linux 查看本机 IP 地址命令

1. 使用 ifconfig 命令

ifconfig 命令可以显示网络接口的信息,包括 IP 地址。

ifconfig

在输出中,找到你想要查看的网络接口(通常是 eth0 或 enpXsX)并查找 "inet" 字段,后面跟着的就是对应接口的 IP 地址。

2. 使用 ip 命令

ip 命令也可以用来查看网络接口信息,包括 IP 地址。

ip addr show

在输出中,找到你想要查看的网络接口并查找 "inet" 字段,后面跟着的就是对应接口的 IP 地址。

3. 使用 hostname 命令

hostname 命令用于查看本机的主机名。

hostname -I

该命令会显示本机当前连接到网络的 IP 地址。

4. 使用 curl 或 wget 命令和外部服务

你还可以使用 curl 或 wget 命令结合外部服务来查看本机的公共 IP 地址。

使用 curl 命令:

curl ifconfig.me

使用 wget 命令:

wget -qO- ifconfig.me

这些命令会从外部服务获取你的公共 IP 地址。

注意事项:

  1. 使用这些命令,你可能需要管理员权限(可以使用 sudo)。

  2. 如果你的系统中没有安装某些命令(如 ifconfig、curl 或 wget),你可能需要安装它们。

Linux 关机命令

1. 使用 shutdown 命令

shutdown 命令允许你在预定的时间将系统关机,并向所有用户发送通知。

要立即关机,可以执行以下命令:

sudo shutdown -h now
  • sudo: 以管理员权限运行命令,因为关机需要特殊权限。

  • -h: 表示关机。

  • now: 表示立即执行关机操作。

如果有其他用户登录系统,shutdown 命令会发送一条通知消息,并在一段时间后执行关机。

2. 使用 poweroff 命令

poweroff 命令是直接关机的一种方法,没有倒计时或通知。

要立即关机,只需执行以下命令:

sudo poweroff
  • sudo: 以管理员权限运行命令,因为关机需要特殊权限。

  • poweroff: 直接执行关机操作,没有倒计时或通知。

3. 关机前的延迟

如果你希望在关机前有一个延迟,允许其他用户保存工作和退出登录,可以在 shutdown 命令中使用 -t 参数。

例如,要在 5 分钟后关机,可以执行以下命令:

sudo shutdown -h +5

这会向所有用户发送关机通知,并在 5 分钟后执行关机操作。

Linux 重启命令

1. 使用 reboot 命令

reboot 命令用于立即重启系统。要想重启系统,只需执行以下命令:

sudo reboot
  • sudo: 以管理员权限运行命令,因为重启操作需要特殊权限。

  • reboot: 表示立即执行重启操作。

系统会发送重启信号,然后重启。

2. 使用 shutdown 命令

shutdown 命令允许你在预定的时间将系统关机或重启,并向所有用户发送通知。要立即重启系统,可以执行以下命令:

sudo shutdown -r now
  • sudo: 以管理员权限运行命令,因为重启操作需要特殊权限。

  • -r: 表示重启。

  • now: 表示立即执行重启操作。

如果有其他用户登录系统,shutdown 命令会发送一条通知消息,并在一段时间后执行重启。

3. 关闭前的延迟

如果你希望在重启前有一个延迟,允许其他用户保存工作和退出登录,可以在 shutdown 命令中使用 -t 参数。

sudo shutdown -r +5

这会向所有用户发送重启通知,并在 5 分钟后执行重启操作。

4. 使用 init 命令重启

在 Linux 系统中,init 是第一个被内核调用的进程,它的 PID(进程 ID)始终为 1。如果你想使用这个命令来重启,你可以这样做:

init 6

在这个命令中,数字 6 是一个运行级别,代表重启。

Linux 查看系统版本

查看 Linux 发行版

打开你的终端,输入以下命令:

cat /etc/os-release

cat 是 concatenate 的缩写,我们这里用它来读取 /etc/os-release 这个文件。这个文件中包含了你系统的名字和版本号等信息。

查看 Linux 内核版本

uname -r

这里的 uname 命令是 unix name 的缩写,-r 参数的意思是 release。所以,这个命令会告诉你你的内核版本。

Linux 查看内存使用情况

1. 使用 free 命令

free 命令可以显示系统的内存和交换空间使用情况。打开终端并输入以下命令:

free -h

这个命令会显示系统的总内存、已用内存、空闲内存以及 swap(交换空间)的信息。而 -h 选项则是让这些信息以人类可读的方式(如 K,M,G)显示出来。

2. 使用 top 命令

top 命令可以实时显示系统的性能统计信息,包括内存使用情况。在终端中输入以下命令:

top

在 top 命令的输出中,你可以看到系统的内存使用情况,包括总内存、已用内存、可用内存等信息。按下 q 键可以退出 top 命令。

3. 使用 htop 命令(需要安装)

htop 是 top 命令的一个增强版本,它提供了更直观的用户界面和更多的功能。如果系统上没有安装 htop,你可以先使用包管理器安装它。在终端中输入以下命令安装 htop:

sudo apt install htop   # For Debian/Ubuntu

sudo yum install htop   # For CentOS/RHEL

安装完成后,可以输入以下命令启动 htop:

htop

htop 将显示类似于 top 命令的实时性能统计信息,但界面更加友好。如下图所示:

4. 使用 vmstat 命令查看内存使用情况

vmstat 命令能提供关于系统内存,进程,中断,页面等信息。你可以使用下面的命令来查看内存的信息:

vmstat -s

输出中,你会看到关于内存使用的详细数据,包括总内存、可用内存、已用内存、缓冲区和缓存的内存等。

5. 使用 /proc/meminfo 文件

Linux 系统将内存信息存储在 /proc/meminfo 文件中。你可以使用 cat 命令或 grep 命令来查看该文件的内容。

cat /proc/meminfo

或者只查看特定信息,比如可用内存:

grep MemAvailable /proc/meminfo

Linux 查看进程命令

1. 使用 ps 命令

ps 命令用于查看当前用户的进程信息。在默认情况下,ps 命令将显示当前终端窗口中运行的进程。在终端中输入以下命令:

ps

ps 命令将显示当前用户的进程信息,包括进程 ID (PID)、进程状态、CPU 使用率、内存使用量等。

2. 使用 top 命令

top 命令用于实时显示系统的性能统计信息,包括正在运行的进程和它们的资源占用情况。在终端中输入以下命令:

top

top 命令将以实时更新的方式显示系统进程列表和各个进程的资源占用情况。按下 q 键可以退出 top 命令。

3. 使用 htop 命令(需要安装)

htop 是 top 命令的一个增强版本,它提供了更直观的用户界面和更多的功能。如果系统上没有安装 htop,你可以先使用包管理器安装它。在终端中输入以下命令安装 htop:

sudo apt install htop   # Debian/Ubuntu 系统

sudo yum install htop   # CentOS/RHEL 系统

安装完成后,可以输入以下命令启动 htop:

htop

htop 将以类似 top 命令的实时性能统计信息显示方式,但界面更加友好。

4. 使用 pgrep 和 ps 命令组合查找进程

如果你知道进程的名称,也可以使用 pgrep 和 ps 命令组合来查找指定名称的进程。

例如,要查找名称为 "my_process" 的进程,可以执行以下命令:

pgrep my_process

然后,使用 ps 命令来查看进程的详细信息:

ps -p 进程ID

将 "进程ID" 替换为 pgrep 命令输出的进程 ID。

Linux 挂载磁盘

1. 查看可用磁盘设备

在挂载磁盘之前,首先需要查看系统中可用的磁盘设备。你可以使用 lsblk 命令来查看当前系统中的磁盘设备列表。

lsblk

该命令将显示所有磁盘设备及其分区信息。

2. 创建挂载点

在挂载磁盘之前,你需要选择一个目录作为挂载点,用于访问磁盘中的文件。通常,你可以在 /mnt 或 /media 目录下创建一个新目录作为挂载点。

sudo mkdir /mnt/my_disk

上面的命令将在 /mnt 目录下创建一个名为 "my_disk" 的目录,用于挂载磁盘。

3. 挂载磁盘

使用 mount 命令来挂载磁盘到指定的挂载点。

sudo mount /dev/sdX /mnt/my_disk

将 /dev/sdX 替换为要挂载的磁盘设备名称,例如 /dev/sda 或 /dev/sdb,而 /mnt/my_disk 是你在上一步中创建的挂载点。

4. 查看挂载结果

成功挂载后,你可以使用 df 命令查看挂载结果。

df -h

该命令将显示已挂载的文件系统和它们的使用情况,包括挂载点和已挂载的磁盘设备。

5. 设置开机自动挂载(可选)

如果你希望在系统重启后仍然保持磁盘的挂载状态,可以将挂载信息添加到 /etc/fstab 文件中。

sudo nano /etc/fstab

在打开的文件中添加类似以下的行:

/dev/sdX /mnt/my_disk ext4 defaults 0 0

保存文件后,该磁盘将在每次系统启动时自动挂载到指定的挂载点。

注意:在进行挂载磁盘等操作时,请确保你了解磁盘的正确设备名称,以免错误地挂载到错误的设备上,导致数据丢失或其他问题。

Linux 查看 CPU 信息

1. 使用 lscpu 命令

lscpu 命令用于显示 CPU 的详细信息,包括 CPU 型号、核心数、线程数等。在终端中输入以下命令:

lscpu

2. 使用 /proc/cpuinfo 文件

Linux 系统将 CPU 信息存储在 /proc/cpuinfo 文件中。你可以使用 cat 命令或 grep 命令来查看该文件的内容。

cat /proc/cpuinfo

或者只查看特定信息,比如 CPU 型号:

grep "model name" /proc/cpuinfo

3. 使用 top 命令

top

4. 使用 htop 命令(需要安装)

htop

htop 将显示类似于 top 命令的实时性能统计信息。

Linux 修改用户密码

1. 使用 passwd 命令

要修改用户密码,你可以使用 passwd 命令,并提供要更改密码的用户名。

sudo passwd 用户名

请将 "用户名" 替换为要修改密码的用户的实际用户名。执行命令后,系统会要求你输入新的密码两次进行确认。请注意,在输入密码时,不会显示任何字符或星号,这是正常的安全特性。

2. 使用 passwd 命令直接修改当前用户密码

如果你是当前登录用户,并且想要修改自己的密码,可以直接输入 passwd 命令而无需提供用户名。

passwd

执行命令后,系统会要求你输入当前用户的旧密码,然后再输入新的密码两次进行确认。

3. 用户密码策略

在大多数 Linux 发行版中,用户密码会受到一定的策略限制,如密码长度、复杂性要求等。如果新密码不符合要求,系统会提示你更改为符合要求的密码。

成功修改密码后,系统将会显示一个确认消息。

请确保你有足够的权限(通常需要管理员权限,可以使用 sudo 命令)来修改其他用户的密码。

Linux 创建用户

使用 useradd 命令创建新用户

在 Linux 系统中,我们可以使用 useradd 命令来创建新用户。打开你的终端,键入下面的命令:

sudo useradd -m 新用户名

这里,-m 选项会为新用户在 /home 目录下创建一个新的家目录,而 新用户名 就是你想要创建的新用户的用户名。

接下来,你可能会希望给新用户设置一个密码,你可以使用 passwd 命令:

sudo passwd 新用户名

然后,根据提示输入新密码两次。

使用 adduser 命令创建新用户

在某些基于 Debian 的 Linux 发行版中,你可能会找到一个叫做 adduser 的命令。它实际上是 useradd 的一个友好版本,更方便你进行交互式操作。

sudo adduser 新用户名

执行这个命令后,系统会自动引导你完成创建新用户的过程,包括设置密码、填写用户全名、房间号码、工作电话、家庭电话和其他信息(这些额外信息是可选的,如果不需要,可以直接按回车跳过)。

使用 usermod 命令添加用户到组

把新创建的用户添加到某个组,你可以使用 usermod 命令,加上 -aG 参数,例如:

sudo usermod -aG 组名 新用户名

这个命令会把新用户添加到指定的组中。

Linux 删除用户&用户组

删除用户

  1. 使用 userdel 命令删除用户账户:

sudo userdel 用户名

将 "用户名" 替换为要删除的用户的实际用户名。

  1. (可选) 使用 -r 参数同时删除用户的家目录:

sudo userdel -r 用户名

如果你想同时删除用户的家目录,请添加 -r 参数。这将删除用户的家目录及其内容。如果不带 -r 参数,则用户的家目录将保留在系统中。

请注意,在删除用户账户时要小心确认,因为该操作是不可逆的,且用户的数据将被永久删除。建议在执行该操作前备份用户的数据。

删除用户组

如果要删除用户组,可以使用 groupdel 命令。

sudo groupdel 组名

将 "组名" 替换为要删除的用户组的实际组名。

Linux 切换用户

1. 使用 su 命令

su 命令用于切换到其他用户账户,并且需要知道目标用户的密码。要切换到其他用户,可以在终端中输入以下命令:

su 目标用户名

将 "目标用户名" 替换为你想要切换到的用户的实际用户名。执行该命令后,系统会要求输入目标用户的密码。

如果你是系统管理员,也可以使用 su 命令切换到 root 超级用户账户:

su -

执行该命令后,系统会要求输入 root 用户的密码。

2. 使用 sudo 命令

sudo 命令允许授权用户以另一个用户的身份执行命令。它通常用于执行需要管理员权限的操作。要以其他用户的身份执行命令,可以在终端中输入以下命令:

sudo -u 目标用户名 要执行的命令

将 "目标用户名" 替换为你想要切换到的用户的实际用户名,而 "要执行的命令" 替换为你想要以该用户身份执行的实际命令。

注意事项

  1. 使用 su 命令需要知道目标用户的密码,而使用 sudo 命令需要知道当前用户(sudo 用户)的密码。

  2. 在切换到其他用户时,请小心执行命令,以免错误地操作其他用户的文件和设置。

Linux 防火墙

1. 查看 iptables 防火墙

iptables 是 Linux 中的经典防火墙工具,它可以用于设置和管理防火墙规则。要查看当前 iptables 防火墙的规则,可以使用以下命令:

sudo iptables -L

该命令将显示当前 iptables 防火墙的规则列表,包括输入、输出和转发规则。默认情况下,iptables 防火墙可能没有任何规则,因为默认策略可能是允许所有流量。

注意:使用 iptables 命令需要管理员权限(可以使用 sudo)。

2. 关闭 iptables 防火墙

要关闭 iptables 防火墙,可以执行以下命令:

sudo service iptables stop

或者:

sudo systemctl stop iptables

3. 查看 firewalld 防火墙

firewalld 是新一代的 Linux 防火墙管理工具,许多现代 Linux 发行版都默认使用它。要查看当前 firewalld 防火墙的规则,可以使用以下命令:

sudo firewall-cmd --list-all
或
sudo firewall-cmd --state

该命令将显示当前 firewalld 防火墙的规则列表,包括开放的端口、服务、区域等信息。

如果你想查看更详细的信息,可以使用以下命令:

sudo firewall-cmd --list-all --zone=public

将 "public" 替换为你想查看的区域名称。默认情况下,firewalld 可能具有不同的区域,例如 "public"、"internal"、"dmz" 等。

注意:使用 firewall-cmd 命令同样需要管理员权限(可以使用 sudo)。

2. 关闭 firewalld 防火墙

要关闭 firewalld 防火墙,可以执行以下命令:

sudo systemctl stop firewalld

为了确保防火墙在下次开机时也不会自动启动,你可以运行以下命令:

sudo systemctl disable firewalld

这样就会禁用 firewalld 服务,使其不会在启动时自动运行。

Linux 系统时间

查看系统时间

1. 使用 date 命令

date

该命令非常简单,直接运行即可。它将显示当前的系统时间和日期。

2. 使用 timedatectl 命令

timedatectl

timedatectl 命令是一个系统时间和日期管理器,可以显示更详细的时间信息,包括时区、夏令时设置等。

3. 注意事项:

  1. 查看系统时间不需要管理员权限。

  2. 确保你在执行命令时拥有足够的权限查看系统时间。

修改系统时间

1. 使用 date 命令修改系统时间

要临时修改系统时间,可以使用 date 命令,并以特定的格式设置日期和时间。

sudo date MMDDhhmm[[CC]YY][.ss]

sudo date 080212342023.56

其中,MM 表示月份,DD 表示日期,hh 表示小时,mm 表示分钟,CC 表示世纪,YY 表示年份,ss 表示秒数。

2. 使用 timedatectl 命令修改系统时间

sudo timedatectl set-time 'YYYY-MM-DD HH:MM:SS'

sudo timedatectl set-time '2023-08-02 12:34:56'

其中,YYYY-MM-DD 是年-月-日的日期格式,HH:MM:SS 是小时:分钟:秒的时间格式。

3. 注意事项:

  1. 修改系统时间需要管理员权限(可以使用 sudo)。

  2. 修改系统时间可能会影响系统和应用程序的正常运行,因此请谨慎操作。

  3. 修改系统时间是一种高级操作,建议在了解其影响和目的的情况下进行。

  4. 长期修改系统时间可能会导致与网络时间同步和其他时间相关功能的冲突。

时间校准

1. 使用 timedatectl 命令校准时间

sudo timedatectl set-ntp true

该命令将启用网络时间协议(NTP)来自动同步系统时间与网络时间。

2. 使用 NTP 服务器同步时间

NTP(网络时间协议)是一种用于同步计算机系统时间的协议。你可以配置系统使用 NTP 服务器来自动同步时间。

a. 安装 NTP 客户端

sudo apt-get install ntp  # Debian/Ubuntu

sudo yum install ntp  # CentOS/RHEL

b. 配置 NTP 服务器

编辑 NTP 客户端配置文件 /etc/ntp.conf,将其中的 NTP 服务器地址设置为你选择的 NTP 服务器。可以在 https://www.pool.ntp.org/zh/ 网站找到可用的 NTP 服务器列表。

sudo vi /etc/ntp.conf

找到类似以下行并进行编辑:

server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst

c. 启动 NTP 客户端

启动 NTP 客户端并将其设置为开机自启:

sudo systemctl start ntp
sudo systemctl enable ntp

修改时区

1. 查看当前时区

timedatectl

2. 列出可用的时区

timedatectl list-timezones

3. 修改时区

选择一个合适的时区,然后使用 timedatectl 命令设置系统的时区:

sudo timedatectl set-timezone 时区名称

将 "时区名称" 替换为你选择的时区名称,例如 "Asia/Shanghai" 表示中国上海时区。