Ubunto命令


预计阅读时间:63 分钟

1.

  • source ~/.bashrc重新加载(执行)当前用户的 ~/.bashrc 配置文件,使最近的修改立即生效,而无需重新启动终端或注销登录。

2. rm:删除文件或目录

  • 参数:
    • -f 直接删除,不需要确认
    • -r 递归删除(用来删除目录)
    • -i删除前注意询问
    • -v显示步骤
    • -d只删除空目录
  • 常用操作:

    • rm 文件名 # 删除文件(询问确认)
    • rm -f a.txt # 删除文件(不询问)
    • rm -f *.txt # 删除以 txt 结尾的文件
    • rm -f a* # 删除以 a 开头的文件
    • rm -f ./-file # 删除以 - 开头的文件
    • rm -f a.txt b.txt # 同时删除多个文件(空格间隔)
    • rm -f .* # 删除隐藏文件

    • rm -r 目录 # 删除目录(询问确认)

    • rm -rf 目录 # 删除目录(不询问)
    • rm -rfv 目录 # 显示删除步骤
    • rm -df * # 只删除空目录

    3. clear:清空当前屏幕(不清空命令记录)与Ctrl+L的效果相同

    4. sudo ufw status:查看防火墙规则

    • sudo ufw 3030/allow:开放3030端口

    5. 用户操作

    • sudo adduser 新用户名:添加一个新用户
    • sudo deluser 用户名:删除用户
    • sudo usermod -aG sudo 用户名:把用户加到sudo组

adduseruseradd的区别:

  • useradd:是一个低级、基础的二进制命令。它只做最核心的事情。

  • adduser:是一个高级、友好的 Perl 脚本,它通过调用 useradd 等底层命令,提供了一个交互式的、全自动的用户创建流程。

useradd:增加用户

  • useradd [参数] [账户]
  • -u:用户的UID,是一组数字(不可为负值)。直接指定一个特定的UID给这个账号;
  • -g:用户组名,指定用户所属的组群,这个用户组的GID会被放到/etc/passwd文件的第四个字段内
  • -G:用户所属附加组群,指定这个账号还可以加入的用户组,这个参数会修改/etc/group内的相关数据;
  • -c:这个是/etc/passwd的第五列的说明内容,我们可以随便设置;
  • -d:指定主目录,不使用默认值(务必使用绝对路径);
  • -s:shell类型,指用户登录后使用的shell类型,若没有指定则默认是/bin/bash;
  • -e:账号失效日期,格式“YYYY-MM-DD”,此选项可写入shadow第八字段;
  • -f:后面接shadow的第七字段选项,指定密码是否会失效。

使用useradd [账户]这条命令新增账户的时候系统会帮我们规定很多默认值,主要为以下几项:

  • /etc/passwd文件中创建一行与账号相关的数据,包括创建UID、GID、主文件夹等;
  • /etc/shadow文件里面将此账号的密码相关参数填入,但是尚未有密码;
  • /etc/group文件里加入一个与账号名称一模一样的组名;
  • /home下面创建一个与账号同名的目录作为用户主文件夹,且权限为700。

新创建的用户默认是被锁定的,因为在/etc/shadow文件仅会有密码参数而没有加密过的密码数据,所以需要用passwd命令设置密码以后才能使用。

passwd:设置/修改用户密码

  • passwd [账户]
  • -S 账户:查看账户密码信息 text 第一列:返回值zhangsan为用户名; 第二列:密码状态,PS=密码设置,LK=密码锁定,NP=无密码; 第三列:该用户密码的最后修改时间; 第四列:最小时间,密码最小的生存期(天); 第五列:最大时间,密码最大的生存期(天); 第六列:警告时间,在密码失效前多少天用户开始收到警告提示; 第七列:失效时间,密码的失效时间(-1表示没有失效时间)。
  • -l:将/etc/shadow第二列前面加!使密码失效;
  • -u:与-l相对,接触密码的锁定;
  • -n:后面接天数,指多少天不可修改密码;
  • -x:后面接天数,指多少天内必须修改密码;
  • -w:后面接天数,指多少天后密码过期;
  • -i:后面接日期,指密码失效日期。

usermod:调整用户信息

  • usermod [参数] [账户]
  • -u:用户的UID,是一组数字(不可为负值)。改变特定的UID给这个账号;
  • -g:用户组名,指定用户所属的组群,修改/etc/passwd文件的第四个字段;
  • -G:用户所属附加组群,修改/etc/group内的相关数据;
  • -c:这个是/etc/passwd的第五列的说明内容,我们可以随便设置;
  • -d:指定主目录,修改的是/etc/passwd的第六列;
  • -s:后面接shell的实际文件,例如/bin/bash或/bin/csh等;
  • -e:账号失效日期,格式“YYYY-MM-DD”,此选项可修改shadow第八字段;
  • -f:后面接天数,为shadow的第七字段选项;
  • -L:暂时将用户的密码冻结,让他无法登陆,改的为/etc/shadow的密码;
  • -U:将/etc/shadow密码列的!去掉。解除用户密码锁定

userdel:删除用户

默认情况下,userdel命令只删除用户名,却不会删除用户的家目录,配合参数-r删除用户家目录,参数-f表示强制删除用户

  • userdel [参数] [账户]

groups:查看当前登录用户组内成员

groupadd:创建新的组

  • groupadd [参数] [组群名]
  • -g:为组群设置GID;
  • -r:创建系统组群。

groupmod:修改组的信息

  • groupmod [参数] [组群名]
  • -g:修改组群id
  • -n:修改组的名称

groupdel [组群名]:删除组

6. sudo reboot:重启主机

7. chmod:修改权限

8. shutdown:关机及重启

  • shutdown [参数] [时间],如图28所示:
    • -t [秒数]:送出警告信息和删除信息之间要延迟多少秒
    • -k:不是真的要关机,只是发出去警告信息
    • -r:在将系统的服务停掉后就重启
    • -h:将系统的服务停掉后,立即关机
    • -n:不经过init程序,直接以shutdown的功能来关机
    • -c:取消已经在进行的shutdown命令内容
    • -f:关机并开机之后,强制略过fsck的磁盘检查
    • -F:系统重启之后,强制进行fsck的磁盘检查

9. uname:查看系统相关信息

  • uname [参数]
  • -a:显示全部信息
  • -m:显示计算机硬件架构的名称
  • -r:显示操作系统的内核发行号
  • -s:显示操作系统的名称
  • -n:显示网络上的主机名称

10. 查看Linux系统发行版本

  • cat /etc/os-release
  • lsb_release -a

11.passwd:修改当前用户密码

  • sudo passwd root:新登录系统设置 root 密码

12.du:显示目录或文件的磁盘占用量

  • 命令语法:du [参数] [文件/目录]
  • -h:以KB、MB、GB直观的显示文件磁盘占用量。
  • -a:输出所有文件的磁盘用量,不仅仅是目录
  • -s:只显示指定目标的总用量摘要,而不是遍历子目录

显示内存使用量

13.date:显示和设置计算机系统的日期和时间

  • date [参数] [显示时间格式]
  • -s:设置系统时间。如:date -s 11:56:56
  • 注: 现在的大多数Linux系统默认启用了自动联网同步时间服务,如果想真正修改时间,需要先关闭它

14.文本内容显示

cat:文本内容显示(常配合grep命令等联合使用)

  • -a:显示行号(含空行)

more:分页显示文件内容,功能类似于cat命令。

  • 默认按空格键显示下一页内容,q 键退出
  • 回车加载下一行

less:可以回卷(鼠标滚轮)显示文本文件的内容,功能类似于more

head:显示文本的前若干行文件内容,若没有给出具体行数,默认设置为10行,可以自行设置显示行数

  • head [参数] [文件]
  • -n k:显示文本的前k行内容
  • -c k:显示文本的前k个字节的内容

tail:可查看文件末尾若干行内容,若没有给出具体行数,默认设置为10行,功能类似于head命令

  • tail [参数] [文件]
  • -n k:显示文本的前k行内容
  • -c k:显示文本的前k个字节的内容

15.文本内容处理

sort:对文件的数据进行排序,再输出

  • sort [参数] [文件]
  • -u:对排序后认为相同的行只保留一行
  • -r:逆序输出排序结果

comm:逐行比较两个已经排过序的文件,如果不加参数,默认合并输出两个文件的内容

  • comm [参数] [文件1] [文件2]
  • -1:不输出文件1特有的行
  • -2:不输出文件2特有的行
  • -3:不输出两个文件共有的行

输出格式:

1特有   2特有   共同拥有
                aaa
bbb
                ccc
                ddd
        eee

echo:可以在计算机上显示一段文字;也可以用来在文件中输入内容。

echo Simple //在屏幕上输出“Simple”字样
echo Simpel>1.txt //将Simple写入到1.txt文件中
echo Simpel>>1.txt //将Simple追加写入到1.txt文件中
cat 1.txt //查看1.txt文件内容

16.vim文本编辑器

注:Vim 允许大多数命令使用最短唯一缩写。也就是说,您只需要输入足够多的字母,使得 Vim 能唯一识别出您想输入的是哪个命令即可。 - :set nu:显示行号
- :set nonu:取消显示行号 - :e /路径/文件:打开新文件编辑 - :r /路径/文件:读取文件内容到当前编辑 (追加) - :s /old/new:将当前行查找到的第一个字符串old替换为new - :s /old/new/g:将当前行查找到的所有字符串old替换为new - :#,# s/old/new/g:在行号#,#范围内所有字符串old替换为new - :% s/old/new/g:在整个文件范围内替换所有字符串oldnew - :s /old/new/c:在替换命令结尾加c命令,对每个动作都让用户进行确认


  • :set hlsearch?:查看高亮开启状态。若显示 nohlsearch,说明高亮被关闭了
  • :set hlsearch /:set hls:开启高亮
  • :nohl:关闭高亮
  • /login(被搜索字符串):光标跳转到第一个匹配字符串,并高亮提示所有匹配字符串(若高亮开启)

17.cp:复制文件

  • cp [参数] 源文件/目录 目标文件/目录
  • -a:在拷贝目录时,保留链接、文件属性、递归拷贝目录
  • -f:删除已经存在的目录文件而提示
  • -i:在拷贝时覆盖目录之前将给出提示,请求用户确认“y”。

18.who:查看用户登录状态

  • who am i:显示当前终端会话的登录信息(使用传统ssh登录时会有输出,通常无输出)
  • whoami:显示当前用户名
  • who:显示系统上所有登录会话


  • who [参数]
  • -a:打印全部,包括系统启动时间、当前用户、用户运行级别等
  • -d:打印出死掉的进程,如果没有死掉的进程则没有输出
  • -q:打印当前用户名及登录用户数
  • -u:打印当前登录用户登录信息
  • -r:打印系统运行等级

19.hostname命令可以显示或修改计算机的主机名。

  • hostname:显示计算机主机名
  • hostname [主机名]:修改计算机的主机名(临时,系统重启后失效)永久设置需要修改/etc/hostname文件

20.free:显示内存占用信息

  • free [参数]
  • -t:显示内存加上swap总的容量
  • -b:以字节为单位显示内存的使用情况
  • -k:以KB为为单位显示内存使用情况
  • -m:以MB为单位显示内存使用情况
  • -g:以GB为单位显示内存使用情况
  • -h:以人性化单位(自动转换 GB/MB)显示内存

21.uptime:查看系统已经运行的时间,依次显示现在时间、系统已经运行的时间、目前有多少登录用户,以及过去的1、5、15min内的平均负载。

  • uptime [参数]:
  • -p:系统已经运行的时间
  • -s:系统开始运行的时间

22.查询帮助

help:查询Linux内置某命令的使用方式

  • help [命令]
  • [命令] help

bash --help:查询第三方命令的帮助信息

info bash:查询信息页info

man手册查看方式

这里的查看方式,是指在查到具体的命令之后,有关命令的页面可能有多行甚至多页,怎么在这些页面切换查看,以及其他的一些快捷操作。

  • q/Q/ZZ:退出
  • [Page Down]/空格键:向下翻一页
  • [Page Up]:向上翻一页
  • [Home]:去到第一页
  • [End]:去到最后一页
  • g:光标跳至文档首部
  • G:光标跳至文档尾部

23.ls:查询目录、文件

  • ls [参数] [目录]
  • -l:展示文件/目录的详细信息。-代表普通文件;d代表目录;l代表符号链接(软链接);c用于字符设备、b 用于块设备
  • -a:可显示名称以.开头的文件。(即隐藏文件)
  • -s:显示每个文件所占用的空间
  • -S:指定按所有占用空间的大小排序
    • -s -S:显示文件所占空间并排序
  • -h:人类可读格式(与 -s 和 -l 结合使用时,会将块大小和文件大小都转换)
  • -R:以递归的方式显示目录及其子目录中的内容
块设备:
  块设备的主要特点是可随机读写,最常见的就是磁盘

链接文件:
  链接文件有两种:软链接文件和硬链接文件。
软链接文件又称符号连接文件,这个文件包含了另一个文件的路径名。其可以是任意文件或目录,可以连接不同文件系统的文件。
  在对软链接进行修改时,系统会自动把该操作换为对源文件的修改。

  硬链接和源文件的文件属性一致,系统把硬链接文件当成是一个普通文件。对硬链接文件进行修改时删除操作的时候,对源文件没有任何影响。但如果删除硬链接的源文件时,硬链接文件依然存在,而且保留了原有内容。

24.history:显示历史命令(好用的!!!)

历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制。 - history [参数] - history:显示当前会话中所有执行过的命令。 - -c:清空当前历史命令。注意:这只会清除当前会话的内存中的历史记录,并不会立即删除磁盘文件 ~/.bash_history 中的记录。当你退出当前终端后,当前会话的新历史记录会追加到文件中,旧的记录依然存在(除非后续覆盖)。 - num(数字):显示最后执行的num条命令 - -d <line_number>:删除指定行号的一条命令。这个编号是 history 列表中的临时编号,重新登录后会变化。 - -a:将当前会话新增加的历史记录追加到历史文件(~/.bash_history)中。 - -n:将历史文件中尚未读取的新命令读入当前历史列表。 - -r:读取历史文件的内容,并将其作为当前历史列表(会覆盖当前列表)。 - -w:将当前历史列表覆盖写入历史文件。 - -p:展开历史参数,但不执行命令(用于测试历史扩展)。 - -s:将一行命令添加到历史列表中,但不执行它。

这是理解 history 命令的关键。其机制主要涉及两个地方:内存 和 磁盘文件。

  • 内存(Memory):

    • 在当前打开的终端会话(Shell)中,你执行的每一条命令都会首先被存储在该会话的内存缓冲区中。

    • 使用 history 命令查看的就是这个内存中的列表。

  • 磁盘文件(Disk File):

    • 默认的历史记录文件是用户家目录下的 ~/.bash_history(对于 Bash Shell)。

    • 退出会话时写入: 当你正常退出一个 Bash Shell 时(例如输入 exit 或关闭终端),内存中本次会话的新历史记录会自动追加(append) 到 ~/.bash_history 文件的末尾。

    • 大小限制:历史文件不会无限增长。它受两个环境变量控制:

    • HISTFILESIZE: 定义了历史文件(.bash_history)中最多可以保存的命令条数。当文件中的命令数超过这个值,最老的命令会被删除。

    • HISTSIZE: 定义了当前 Shell 内存中历史记录列表最多保存的命令条数。

    编辑配置文件

vim ~/.bashrc

# 常见配置示例
HISTSIZE=1000            # 内存中历史记录保存数量,默认通常是1000
HISTFILESIZE=2000        # 历史文件中历史记录保存数量,通常设的比HISTSIZE大
HISTTIMEFORMAT="%F %T "  # 让history命令显示命令执行的时间
HISTCONTROL=ignoredups   # 忽略重复的命令(连续且相同的命令)
# HISTCONTROL=ignorespace # 忽略以空格开头的命令(常用于跳过敏感命令的记录)
# HISTCONTROL=ignoreboth  # 同时包含ignoredups和ignorespace

# 修改后使配置生效
source ~/.bashrc

25.mkdir:创建文件夹

  • -p:递归创建目录。 可以一次性创建多层级目录,如果目录已存在也不会报错。这是最常用、最重要的参数。
  • -v:显示详细信息。 每次创建新目录都会显示一条提示信息,告知用户已创建。
  • -m:设置权限模式。 在创建目录时直接指定权限,而不使用默认的 umask 设置。

26.mv:移动文件/重命名文件

  • mv [参数] [oldpath/oldFilename] [newpath/newFilename]
  • -i:交互模式。如果目标文件已存在,会询问是否覆盖。
  • -n:无覆盖模式。如果目标文件已经存在,不会覆盖它
  • -v:详细模式。显示操作的详细信息,会输出移动或重命名的每一步。
  • -b:备份。在覆盖现有文件之前,会为其创建一个备份副本(默认添加波浪号 ~ 后缀)。
  • -f:强制模式。强制移动,不会询问也不会提示
  • -t:指定目标目录。将所有源参数移动到指定的目标目录。在处理大量文件时非常整洁。

26.pwd:显示当前所在的目录

  • pwd [参数]

下面这两个参数的区别在于,通过符号链接(快捷方式)进入到目录时,报告 - -L:目录连接时,输出链接路径 - -P:输出物理路径

27.网络服务

1.ip a(addr):查看所有网络接口的详细信息(ifconfig的上位替代)

  • ip a show [网卡名称]:查看指定网卡的信息
  • ip a add 192.168.1.10/24 dev [网卡名称]:为接口增加一个IP地址
  • ip a del 192.168.1.10/24 dev [网卡名称]:从接口删除一个IP地址
  • ip route show:查看路由信息

说明: 1. /24 (CIDR 表示法)

作用:这是一种简洁的方式,同时指定了 IP 地址 和其对应的**子网掩码**。
<br>
子网掩码由 32 位二进制数组成,`/24` 表示前 24 位是网络位,剩下的 8 位是主机位。`/24` 就等同于 `255.255.255.0`

输出解读:

$ip a show

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33
       valid_lft 86300sec preferred_lft 86300sec
    inet6 fe80::20c:29ff:fexx:xxxx/64 scope link 
       valid_lft forever preferred_lft forever
  • ens33: 网络接口名称

  • state UP: 接口状态(UP 表示已启用)

  • link/ether: MAC 地址

  • inet: IPv4 地址和子网掩码(/24)

  • inet6: IPv6 地址

2.ss:显示网络状态信息,得知整个Linux系统网络情况,如网络连接,路由表,接口统计,伪装连接和组播成员。( netstat 的上位替代)

  • -a:显示所有 sockets(监听 + 已建立连接)
  • -n:以数字形式显示端口和地址(不解析域名)
  • -t:仅显示 TCP 连接
  • -u:仅显示UDP连接
  • -l:仅显示监听中的 sockets
  • -i:显示网络接口列表

常用方法

# 查看所有TCP和UDP连接并过滤22端口
ss -antu | grep 22

# 或者更精确地只查看监听和已建立的TCP连接
ss -ant | grep :22

# 专门查看正在监听22端口的程序
ss -ltn | grep :22

3.nmcli:管理网络连接服务(可查看ip地址)

  • nmcli device:查看所有网卡的信息
  • nmcli device show 网卡名:查看某个网卡的信息

4.修改IP地址

修改网络参数的两种方式:临时修改配置和永久修改配置。

  • 临时修改配置:使用命令配置,可以简单、快速的修改运行中的网络参数,适合在调试网络的过程中使用,系统重启以后,所做的修改会失效。
  • 永久修改配置:修改配置文件实现网络参数修改,对服务器设定固定参数时使用,需要重载网络服务或者重启系统后生效。

5.永久修改IP地址

  1. 找到 Netplan 配置文件:

配置文件通常在 /etc/netplan/ 目录下,可能是 01-netcfg.yaml, 50-cloud-init.yaml, 或类似名称。具有 .yaml 扩展名。

ls /etc/netplan/
  1. 修改文件内容
network:
  version: 2
  renderer: networkd # 或者 systemd-networkd 的系统使用 networkd,如果是桌面版通常用 NetworkManager
  ethernets:
    eth0: # 你的网卡设备名
      addresses:
        - 192.168.1.3/24 # IP和掩码
      routes:
        - to: default
          via: 192.168.1.1 # 你的网关地址
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1] # 你的DNS服务器

6.netplan:配置网关

从 Ubuntu 18.04 LTS 开始,网络配置默认由 netplan 管理。其配置文件是 YAML 格式。

  1. 找到Netplan配置文件
    配置文件通常在 /etc/netplan/ 目录下,名称可能类似于 01-netcfg.yaml,50-cloud-init.yaml 或 00-installer-config.yaml。使用 ls 命令查看。
ls /etc/netplan/
  1. 编辑 Netplan 配置文件
sudo nano /etc/netplan/01-netcfg.yaml
  1. 添加网关信息
    在配置文件中,找到对应的以太网接口(如 eth0 或 ens33),在 routes: 项下添加 gateway4: 字段(对于 IPv4)。
    注意: YAML 对缩进非常敏感,请确保每个层级使用 2 个空格缩进。

示例配置:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.1.100/24] # 根据你的实际情况设置静态IP
      routes:
        - to: default
          via: 192.168.1.254  # 这就是网关地址
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1] # 设置DNS服务器

如果你的接口是 DHCP 获取 IP,只想设置网关,可以这样配置:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
      routes:
        - to: default
          via: 192.168.1.254  # 设置网关
  1. 保存并退出
  2. 应用新的网络配置 使用 netplan apply 命令来使更改生效,无需重启整个网络服务或系统。
sudo netplan apply
  1. 验证网关是否添加成功 使用 ip route 命令来查看路由表,确认默认网关已经设置。
ip route
default via 192.168.1.254 dev eth0

28.进程查看命令:

ps:进程相关的查看命令

  • -A :所有的进程均显示出来,与 -e 具有同样的效用;
  • -a : 显示现行终端机下的所有进程,包括其他用户的进程;(仅此窗口终端下)注:可以看到在此窗口终端下的其他用户的进程,其他窗口终端的进程不能看到!
  • -u :以用户为中心格式化输出。显示进程的所有者及其资源占用(如CPU、内存)。回答 “谁在运行什么,占了多少资源?”
  • -x :通常与 a 这个参数一起使用,扩大显示范围。显示不关联任何终端(TTY) 的进程。回答 “有哪些后台守护进程和系统级进程在运行?”

输出格式规划:

  • -l :较长、较详细的将该 PID 的的信息列出。包括文件(目录)的权限
  • -j :工作的格式 (jobs format)
  • -f :做一个更为完整的输出。

常用命令: - ps aux:列出所有进程

参数名 描述
S 当前进程是睡眠状态
s 当前有多个子进程
l 当前进程可能会同时开启多个子进程
R 当前进程正在运行中
+ 表示这个进程在前台运行
Z 僵尸进程
<: 表示当前进程优先级别高
  • USER:该进程属于那个使用者账号的
  • PID:该进程的进程ID号
  • PPID:则父进程的ID
  • %CPU(C):该进程使用掉的 CPU 资源百分比
  • PRI:指进程的执行优先权(Priority的简写),其值越小越早被执行
  • NI:这个进程的nice值,其表示进程可被执行的优先级的修正数值
  • ADDR:这个是内核函数,指出该程序在内存的那个部分。如果是个执行#的程序,一般就是-
  • SZ:使用掉的内存大小
  • WCHAN:目前这个程序是否正在运作当中,若为 - 表示正在运作
  • %MEM:该进程所占用的物理内存百分比
  • VSZ:该进程使用掉的虚拟内存量 (Kbytes)
  • RSS:该进程占用的固定的内存量 (Kbytes)
  • TTY:该进程是在那个终端机上面运作,若与终端机无关,则显示,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
  • STAT:该程序目前的状态,主要的状态有:
    • R:该程序目前正在运作,或者是可被运作;
    • S:该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
    • T:该程序目前正在侦测或者是停止了;
    • Z:该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
  • START:该进程被触发启动的时间
  • TIME:该进程实际使用 CPU 运作的时间
  • COMMAND(CMD):该程序的实际指令

特别说明: 由于ps能够支持的系统类型相当的多,所以他的参数多的离谱! 而且有没有加上-差很多!详细的用法应该要参考man ps

top:系统动态进程信息,默认会每3秒刷新一次

  • M:表示按照内存的使用量从大到小依次排序
  • P:表示按照CPU的使用量从大到小依次排序
  • q:退出top进程查看

pgrep -u root 进程名:

  • -u:表示指定服务的发起用户,root指的是/etc/passwd文件中的root用户,ssh指的是系统中运行的sshd服务

pstree:以树状结构显示进程信息

29.进程管理命令

命令ctrl+z :将前台命令调到后台并暂停;

命令ctrl+c :结束进程;

命令jobs :查看后台进程;

  • jobs [参数]
  • -l:查看具体信息(PID)

bg/fg:操作后台进程:

“+”表示调用最近一次的程序,“-”表示调用倒数第二次的程序。 - bg/fg [+/-] :默认调用带“+”的进程,次之为带“-”的进程,“&“将这个进程还原后台并独立运行; - fg num:将后台第#个进程调到前台运行; - bg num :将后台的某个进程在后台运行(独立运行); - kill %作业号:针对于jobs,杀死某进程

30.kill:结束进程

  • kill 参数
  • PID:PID可以通过 ps aux|grep程序发起指令,获得PID,当前进程不能自行结束时可通过命令kill -9 PID强行结束进程;
  • -l:查看所有信号名称

31.systemctl:服务管理器

一、服务状态管理(最常用)

1. 启动与停止

启动服务

systemctl start <name>.service

示例:systemctl start nginx.service

停止服务

systemctl stop <name>.service

示例:systemctl stop ssh.service

重启服务

systemctl restart <name>.service

示例:systemctl restart apache2.service

重载配置文件

systemctl reload <name>.service

示例:systemctl reload nginx.service

2. 启用与禁用

启用开机自动启动

systemctl enable <name>.service

示例:systemctl enable docker.service

禁用开机自动启动

systemctl disable <name>.service

示例:systemctl disable cups.service

检查是否启用开机启动

systemctl is-enabled <name>.service

示例:systemctl is-enabled nginx

3. 状态查看

查看详细状态

systemctl status <name>.service

示例:systemctl status mysql.service

检查服务是否活跃

systemctl is-active <name>.service

示例:systemctl is-active cron.service

检查服务是否失败

systemctl is-failed <name>.service

示例:systemctl is-failed failed-service

二、系统与服务概览

1. 列出所有单元

列出所有活跃的单元

systemctl list-units

列出所有单元(包括不活跃的)

systemctl list-units --all

列出所有服务

systemctl list-units --type=service

列出所有失败状态的单元

systemctl list-units --state=failed

2. 管理开机启动

查看所有单元的启用状态

systemctl list-unit-files

查看所有服务的启用状态

systemctl list-unit-files --type=service

3. 系统状态

查看系统整体状态摘要

systemctl status

系统状态简写

systemctl

三、系统控制

1. 系统电源管理

重启系统

systemctl reboot

关机(切断电源)

systemctl poweroff

停机(不切断电源)

systemctl halt

挂起(睡眠到内存)

systemctl suspend

休眠(睡眠到硬盘)

systemctl hibernate

2. 日志查看

查看指定服务的日志

journalctl -u <name>.service

示例:journalctl -u nginx.service

实时追踪服务日志

journalctl -u nginx -f

查看最新日志并显示详情

journalctl -xe

四、高级操作与故障排除

重载 Systemd 配置

systemctl daemon-reload

屏蔽服务

systemctl mask <name>.service

解除屏蔽服务

systemctl unmask <name>.service

重置失败状态

systemctl reset-failed <name>.service

32.journalctl:查询和显示systemd日志

  • journalctrl [参数]

常用选项和过滤技巧 - --since(开始时间) 和 --until(结束时间):指定时间范围 - YYYY-MM-DD HH:MM:SS - yesterday, today, tomorrow - -1h(1小时前), -10min(10分钟前), now

# 查看从今天早上9点开始的日志
sudo journalctl --since "09:00"

# 查看2023年10月26日上午9点到11点的日志
sudo journalctl --since "2023-10-26 09:00:00" --until "2023-10-26 11:00:00"

# 查看过去30分钟的日志
sudo journalctl --since "-30min"
  • -u 服务名:查看某个 systemd 服务的日志。
# 查看 nginx 服务的日志
sudo journalctl -u nginx.service

# 可以组合使用,查看多个服务
sudo journalctl -u nginx.service -u docker.service
  • -p 等级:过滤特定级别及以上的日志。
    常用级别(从高到低):
    • 0 emerg(紧急):会导致主机系统不可用的情况
    • 1 alert(警告):必须马上采取措施解决问题
    • 2 crit(严重):比较严重的情况
    • 3 err(错误):运行出现错误
    • 4 warning(提醒):可能会影响系统功能事件
    • 5 notice(注意):不会影响但值得注意
    • 6 info(信息):一般信息
    • 7 debug(调试):程序或系统
# 查看所有错误级别(err)及更严重的日志(crit, alert, emerg)
sudo journalctl -p err

# 也可以使用数字
sudo journalctl -p 3
  • _PID=id: 根据进程ID筛选。
  • _UID=id: 根据用户ID筛选。
  • _GID=id: 根据组ID筛选。
# 查看PID为1234的进程的所有日志
sudo journalctl _PID=1234
  • _COMM=command: 根据命令名称筛选
# 查看所有来自 sshd 的日志
sudo journalctl _COMM=sshd

输出控制和格式 - -f:实时跟踪日志输出,这是调试启动服务的利器。 - -n num:显示最后几条日志,类似于 tail -n


  • --no-pager:输出不经过分页器,直接送到标准输出,适用于脚本中。

  • -o json:以JSON格式输出原始日志,用于其他程序解析。

  • -o json-pretty:以格式化的JSON输出,便于人工阅读。

  • -o verbose:显示日志条目的所有元数据字段,非常详细。

33.uptime:显示系统已经运行的时间

依次显示:现在时间、系统已经运行了多长时间、目前有多少登录用户,以及系统在过去的1min、5min、15min内的平均负载 - uptime [参数] - -p:系统已经运行的时间 - -s:系统开始运行的时间

34.ss:网络监控工具(netstat的上位替代)

  • ss [参数]
  • -l:显示所有监听端口
  • -lt:显示所有TCP监听端口
  • -lu:显示所有UDP监听端口
  • -a:显示所有连接(含监听)
  • -n:显示数字格式(不解析)
  • -p:显示进程信息
  • sudo ss -tunlp:查看所有监听端口和进程
  • -ton:显示所有已建立的TCP连接

显示结果说明 - Proto:协议名(tcp协议还是udp协议)。

  • recv-Q:网络接收队列 表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。

  • send-Q:网路发送队列 对方没有收到的数据或者说没有Ack的,还是本地缓冲区。如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。

  • Local Address:

    • 0.0.0.0:22 表示监听服务器上所有ip地址的22端口(0.0.0.0表示本地所有ip)。其他类似格式规则一样,冒号前面表示IP,后面表示端口。
    • :::22 这个也表示监听本地所有ip的22端口,跟上面的区别是这里表示的是IPv6地址,上面的0.0.0.0表示的是本地所有IPv4地址。其他类似格式规则一样,符号后面表示端口。
    • ::1:323 这个表示监听IPv6的回环地址的323端口,::1这个表示IPv6的loopback地址。
    • Foreign Address:与本机端口通信的外部socket。显示规则与Local Address相同。
  • State:链路状态,共有11种,这里LISTEN表示监听状态。

  • PID/Program:PID即进程id,Program即使用该socket的应用程序。

35.lsb_release -a:查看系统版本信息

36.apt:管理安装包

  • update:更新软件包列表
  • upgrade:升级已安装的软件包
  • full-upgrade:安全升级:只升级那些为了修复安全漏洞的包(需要先 unattended-upgrades 包通常已默认安装)。
  • install <package_name>:安装软件包
  • install <package_name>:安装多个软件包
  • install --reinstall <package_name>:重新安装
  • remove <package_name>:移除软件包但保留配置文件
  • purge <package_name>/remove --purge <package_name>:完全移除软件包及其配置文件(更彻底的清理)
  • search <search_term>:搜索软件包
  • show <package_name>:查看软件包的详细信息,如版本、依赖关系、描述、大小等。
  • list --installed:列出已安装的软件包
  • autoremove:自动移除不再需要的依赖
    当你卸载软件后,一些当初被自动安装来满足依赖关系的库包可能不再被任何程序使用。此命令用于清理这些“孤立的”软件包,释放磁盘空间。
  • 清除软件包缓存
    Ubuntu 会将下载的 .deb 安装包缓存到 /var/cache/apt/archives/ 目录。此命令用于删除这些已下载的旧版本或不再需要的安装包文件。
sudo apt clean      # 删除所有已下载的缓存包文件
sudo apt autoclean  # 只删除那些不再能从仓库中下载的包的缓存文件(更安全常用)

37.dpkg:底层的包管理工具

安装本地的.deb文件

sudo dpkg -i <package_file.deb>

如果因为依赖问题安装失败,可以运行以下命令来修复(它会尝试安装所有缺失的依赖):

sudo apt -f install

列出dpkg安装的文件

dpkg -L <package_name>

38.rmdir:删除空文件夹

  • rmdir [参数] [目录]
  • -p:递归删除目录,子目录删除后其父目录为空时,也删除;
  • -v:输出处理目录的详情。

39.cd:切换工作目录

  • cd 目录
  • cd ..:退到上一级工作目录
  • cd ~:切换搭配当前用户的家目录
  • cd -:切换到上一次的工作目录

40.find:将文件系统内符合条件的文件列出来。

可以指定文件的名称、类别、时间、大小以及权限等不同信息的组合,只有完全相符的文件才会被列出来。

  • find [路径] [参数]
  • -name 文件名:按文件名来查找
  • -size n[ckMG]:按文件大小来查找。c代表字节、k代表kb、M代表MB、G代表GB
find /etc/ -name *passwd
find /etc/ -size 2M
#查找大于2M的文件
find /etc/ -size +2M

41.dd:进行原始数据的转换和复制

核心功能

在块设备(Block Device)级别上进行原始数据的转换和复制。它逐块地读取输入,进行可能的转换,然后逐块地写入输出,完全不关心内容的具体含义。

cp 命令的关键区别

  • cp:工作在文件系统层面,认识文件和目录结构
  • dd:工作在底层设备层面,只是忠实地按字节复制比特流

主要用途

1. 磁盘/分区克隆与备份

# 创建磁盘镜像(备份)
dd if=/dev/sda of=/path/to/backup.img bs=4M status=progress

# 恢复磁盘镜像(警告:会覆盖目标磁盘!)
dd if=/path/to/backup.img of=/dev/sdb bs=4M status=progress

2. 制作可启动USB驱动器

# 将ISO镜像写入U盘
dd if=ubuntu-22.04.iso of=/dev/sdb bs=4M status=progress oflag=sync

3. 磁盘性能测试

# 测试写入速度(绕过缓存)
dd if=/dev/zero of=/tmp/test bs=8k count=125000 oflag=direct

# 测试读取速度
dd if=/dev/sda1 of=/dev/null bs=8k count=125000 iflag=direct

4. 数据安全擦除

# 用零擦除整个磁盘
dd if=/dev/zero of=/dev/sdb bs=1M status=progress

# 用随机数据安全擦除
dd if=/dev/urandom of=/dev/sdb bs=1M status=progress

5. 文件格式转换(较少使用)

# 大小写转换
dd if=input.txt of=output.txt conv=lcase

# 跳过文件开头部分
dd if=input.file of=output.file skip=1M bs=1M

关键参数说明

  • if=:输入文件(Input File)
  • of=:输出文件(Output File)
  • bs=:块大小(Block Size),影响复制效率
  • status=progress:显示复制进度(强烈推荐使用)
  • oflag=sync:使用同步写入,确保数据完整性

通用高性能选择:对于现代硬盘的大文件复制(如制作镜像),bs=4M 或 bs=8M 是一个很好的起点,能在效率和内存占用间取得绝佳平衡。

⚠️ 重要警告

  1. 极度危险:错误的 of= 参数可能导致数据永久丢失
  2. 双重确认:始终确认目标设备(如 /dev/sdb)是否正确
  3. 谨慎操作:特别是在有重要数据的系统上使用

总结

dd 是处理块设备(硬盘、分区、U盘)底层操作的强大工具,适用于磁盘克隆、启动盘制作、性能测试和数据安全删除等场景。由于其破坏性潜力,使用时必须格外小心谨慎。

42.wc:统计文件的行数、单词数、字节数、和字符数,并将统计结果显示输出到屏幕

如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。单词是由空格字符区分开最大字符串。输出列的顺序和数目不受选项的顺序和数目影响,总是按行数、单词数、字节数、文件的顺序显示每项信息。 - wc [参数] [文件] - -l:统计行数 - -w:统计单词数 - -c:统计字节数 - -m:统计字符数 - -L:统计文件中最长的长度

43.file:探测给定文件的类型。(通过文件内容来判断,而并非后缀名)

  • file [参数] [文件]
  • -b:列出辨识结果时,不显示文件名称,只显示文件格式以及编码
  • -i:输出文件的 MIME 类型字符串,主要有以下几种:text/plain-普通文本;text/html-HTML文本;application/pdf-PDF文档;application/msword-Word文档;image/png-PNG图片;mage/jpeg-JPEG图片;application/x-tar-TAR文件;application/x-gzip-GZIP文件
  • -L:直接显示符号连接所指向的文件的类别
  • -v:显示版本信息
  • -z:尝试去解读压缩文件的内容
  • -u:采用统一格式输出

使用场景: 1. 确定未知文件类型 2. 验证文件是否损坏 3. 快速检查可执行文件或库的架构
在软件开发或系统迁移时,需要确认一个二进制文件是为哪个平台(如 x86-64, ARM)编译的,或者是否是静态链接。

44.diff:逐行比较两个文件或目录内容的差异,并输出为了使第一个文件(old_file)变成第二个文件(new_file)所需要进行的编辑操作。

  • diff [参数] [文件1] [文件2]
  • diff [参数] [目录1] [目录2]
  • -b:表示忽略尾行的空格,而字符串中的一个或多个空格符都视为相等;
  • -c:表示使用上下文输出
  • -y:表示以两列并排格式输出
  • -w:表示忽略所有空白行

普通格式 (Normal Format) - 默认格式

普通格式的输出由一系列"更改命令"组成,告诉你如何将第一个文件转换为第二个文件。

基本语法格式

[行号范围]操作符[行号范围]
< 来自第一个文件的内容
---
> 来自第二个文件的内容

操作符说明

  • a - 追加 (add): 需要在第一个文件中添加内容
  • d - 删除 (delete): 需要从第一个文件中删除内容
  • c - 更改 (change): 需要修改第一个文件中的内容

行号范围表示

  • 单个行号: 5 表示第5行
  • 行号范围: 2,5 表示第2行到第5行
  • 组合格式: [文件1行号]操作符[文件2行号]

示例解析

示例1:追加操作

5a6
> 新增的内容
  • 含义: 在第一个文件的第5行后追加第二个文件的第6行内容
  • 操作: 在第一个文件第5行后添加"新增的内容"

示例2:删除操作

3d2
< 要删除的内容
  • 含义: 删除第一个文件的第3行,第二个文件对应到第2行
  • 操作: 从第一个文件中删除"要删除的内容"这一行

示例3:更改操作

2,4c2,3
< 原内容1
< 原内容2  
< 原内容3
---
> 新内容1
> 新内容2
  • 含义: 将第一个文件的第2-4行更改为第二个文件的第2-3行
  • 操作: 用"新内容1"和"新内容2"替换"原内容1"、"原内容2"、"原内容3"

符号说明

  • <: 后面跟随的内容来自第一个文件(需要被移除或修改)
  • ---: 分隔符,分隔两个文件的不同内容
  • >: 后面跟随的内容来自第二个文件(需要被添加)

统一格式 (Unified Format) - -u 选项

统一格式提供更清晰的差异显示,包含上下文信息。

格式结构

--- 源文件    时间戳
+++ 目标文件    时间戳
@@ -开始行,行数 +开始行,行数 @@
 上下文行
-删除的行
+添加的行
 上下文行

示例解析

--- file1.txt    2023-10-27 10:00:00
+++ file2.txt    2023-10-27 10:05:00  
@@ -1,5 +1,6 @@
 共有的行
-被删除的行
+新添加的行
 共有的行
 共有的行
+另一个新行
  • @@ -1,5 +1,6 @@: 块头信息
  • -1,5: 在第一个文件中,从第1行开始,显示5行内容
  • +1,6: 在第二个文件中,从第1行开始,显示6行内容

  • 行前缀含义:

  • 空格: 两个文件共有的行(未更改)
  • -: 只在第一个文件中存在的行(需要删除)
  • +: 只在第二个文件中存在的行(需要添加)

上下文行数

使用 -U num 选项可以指定显示上下文的行数:

diff -U 5 file1.txt file2.txt  # 显示5行上下文

上下文格式 (Context Format) - -c 选项

较旧的格式,比统一格式更冗长:

*** 源文件    时间戳
--- 目标文件    时间戳
***************
*** 开始行,行数 ****
  上下文行
! 更改前的行
--- 开始行,行数 ----
  上下文行  
! 更改后的行
  • !: 标识被更改的行
  • +/-`: 在某些变体中表示添加/删除的行

格式选择建议

  • 普通格式: 简洁,适合脚本处理
  • 统一格式: 可读性最佳,推荐日常使用
  • 上下文格式: 历史遗留格式,现在较少使用

使用 -u 选项可以获得最清晰易读的差异输出。

45.split:分割文件,将一个大型文件分割成多个较小的碎片文件

  • split [参数] [文件]
  • -b num:值为每一输出文件的大小,单位为byte
  • -c:每一输出档中,单行的最大byte数
  • -d:使数字作为后缀(输出文件命令时,x00, x01, x02, x03, ..., x99)
  • -l:值为每一输出的行数大小
# 将 largefile.iso 分割成每个 100MB 的文件
split -b 100M largefile.iso segment_

# 使用数字后缀
split -b 100M -d largefile.iso part_

# 查看生成的文件
ls -lh part_*

使用数字后缀还方便合并

# 使用数字后缀时,合并命令更简单直观
cat backup.part.* > restored_file.zip

# 因为文件按数字顺序排列:
# backup.part.00, backup.part.01, backup.part.02, ...

46.join:将两个文件的行连接在一起(不常用)

  • join [参数] [文件1] [文件2]
  • -a1:左连接,又称左外连接,显示左边所有记录
  • -a2:右连接,又称右外连接,显示右边所有记录
  • -a1 a2:全链接,显示左边和右边所有记录
  • -o 1.1:指定输出第一个文件第一个字段

47.压缩与解压

1.gzip

不能压缩目录 - gzip [参数] 文件1 [文件2,...]:默认将各个文件分别压缩 - -d:解压缩,也可以使用命令ungzip filename来达到同样的解压效果 - -[1-9]:表示压缩级别,1级别最低(最快),9级别最高(最慢),6为默认级别 - -k:压缩后保留原始文件 - -l:列出压缩文件的详细信息,如压缩比、未压缩大小等。 - -c:将压缩结果输出到标准输出(stdout),而不是写入文件。这通常与重定向 > 或管道 | 结合使用。

# 压缩一个文件并输出到另一个.gz文件(实现保留原文件的效果)
gzip -c original.txt > original.txt.gz

# 在管道中使用,压缩 tar 命令的输出(非常经典的用法)
tar -czf - /some/directory | gzip -9 -c > backup.tar.gz
# 上面的命令通常直接简写为 `tar -zcf`
tar -zcf backup.tar.gz /some/directory

bzip2

不能压缩目录 - bzip [参数] 文件1 [文件2,...]:默认将各个文件分别压缩 - -d:解压缩

xz

不能压缩目录 - xz [参数] filename - -d:解压缩

zip

可以压缩目录 - zip [参数] filename - zip 压缩包名.zip 要压缩的文件名:压缩单个文件 - zip -r 压缩包名.zip 要压缩的文件夹名/:压缩文件夹 - unzip filename:解压文件

tar:打包工具

  • tar [选项] [生成的归档文件名] [要打包的文件或目录...]
选项 全称 含义
-c --create 创建一个新的归档文件(打包)
-x --extract 解开一个归档文件(解包)
-f --file 指定归档文件的名称。这个选项后面必须紧跟文件名
-v --verbose 详细模式,显示正在处理的文件列表
-z 通过 gzip 进行压缩或解压,文件后缀通常是 .tar.gz 或 .tgz
-j 通过 bzip2 进行压缩或解压,文件后缀通常是 .tar.bz2
-J 通过 xz 进行压缩或解压,文件后缀通常是 .tar.xz (注意大写)
-t --list 列出归档文件中有哪些文件,不解包
-C --directory 指定解压到的目录

压缩算法选择建议:

  • -z (gzip): 速度快,压缩率一般,最通用。

  • -j (bzip2): 速度慢,压缩率较好。

  • -J (xz): 速度最慢,压缩率最高,适合用于分发大型文件。

基本打包(不压缩)

# 将 folder1 和 file2.txt 打包成一个名为 archive.tar 的文件
tar -cvf archive.tar folder1/ file2.txt

查看归档文件内容(不解压)
在解压之前,最好先看看压缩包里有什么。

# 列出 .tar.gz 文件的内容
tar -tzvf backup.tar.gz

# 列出 .tar.bz2 文件的内容
tar -tjvf backup.tar.bz2

解压到当前目录

# 解压 .tar.gz 文件到当前目录
tar -xzvf backup.tar.gz

# 解压 .tar.bz2 文件到当前目录
tar -xjvf backup.tar.bz2

# 解压 .tar.xz 文件到当前目录
tar -xJvf backup.tar.xz

# 解压普通的 .tar 包(只是解包,没有解压缩)
tar -xvf archive.tar

解压到指定目录(使用-C)

# 将 backup.tar.gz 解压到 /tmp 目录下
tar -xzvf backup.tar.gz -C /tmp

# 将 archive.tar 解压到 /home/user/restore 目录下
tar -xvf archive.tar -C /home/user/restore

48.文件权限管理

1.umask:改变文件默认权限

2.chown:修改文件/目录的所有者和所属组

  • chown [参数] [用户、组] [文件/目录]
  • -R:将下级子目录下的所有文件和目录的所有权一起改;
  • -h:会影响符号链接本身,而非符号链接所指向的文件;
  • -v:为处理的所有文件显示诊断信息;
  • -P:不遍历任何符号链接;
  • -L:遍历每一个遇到的通道的目录的符号链接;
  • -H:如果命令行参数是一个通道目录的符号连接, 则遍历符号链接。

3.chmod:修改文件/目录的权限

  • chmod [操作对象] [操作符号] [权限] [文件/目录]

操作对象 - -u:表示用户所有者,即文件目录的所有者 - -g:表示群组所有者,即与用户所有者有相同群组GID的所有用户 - -o:表示其他用户 - -a:表示所有用户,是默认值

操作符号 - +:添加某个权限 - -:删除某个权限 - =:赋予某个权限并取消原先的权限

权限(也可以用数字) - r:读取权限 - w:写入权限 - x:可执行权限

4.chgrp:改变文件/目录所属用户组

仅用于更改文件的所属组,可以把 chgrp 看作是 chown 命令的一个功能子集。 - charp [参数] 文件/目录

49.磁盘管理:分区、格式化、挂载

对新磁盘进行分析

fdisk:查看磁盘信息/磁盘分区

  1. 使用命令fdisk 地址对磁盘进行分区,使用m命令可以获得分区帮助选项
  2. 使用命令n创建主分区1
    • Partition type表示分区类型,有主分区和扩展分区两种,默认为“p”,主分区,所以Select的冒号后我们直接按[Enter];
    • Partition number表示分区编号,选1-4中任意一个数,被选过的数就不能再选,这是一个新磁盘,我们可以随意选,这里我们也选择默认的1,直接按下[Enter]就行;
    • First sector表示起始柱面,我们选择默认值,直接按下[Enter]就行;
    • Last sector表示结束柱面,用来设置该分区的大小,可以输入柱面号,也可以输入“+XXM”,让系统自己分柱面的号码。
  3. 接着创建分区,重复2.2操作,创建主分区2、3; 由于一块磁盘上只能有4个主分区,因此当我们创建完第3个分区后,第4个分区只能选择创建扩展分区。创建扩展分区创建主分区的方法一样,只是在选择分区类型时,默认只能选“e”,意思就是扩展分区; 并将磁盘剩余的空间全部分给扩展分区,即在Last sector选择时不输入,直接按[Enter]。其余操作与2.2一致。
  4. 分区完成之后,输入命令“p”,查看所建分区的情况
  5. 扩展分区是不可以被格式化的,相当于一个空的容器,只能在里面创建逻辑分区来存储数据,逻辑分区的大小将直接计算在扩展分区中,且扩展分区可以有多个逻辑分区,(此时在创建新的分区时不会再被询问创建分区的类型)
  6. 输入p,查看逻辑分区创建状态,输入w保存我们配置

mkfs:格式化磁盘,安装文件系统

虽然磁盘已经划分好了,要对每一个分区进行格式化后才能写入数据。所谓格式化就是安装文件系统,Windows下有FAT32和NTFS。CentOS 7中默认为XFS文件系统,但依然可以指定ext3ext4文件格式,我们使用ext4 - 使用命令mkfs -t ext4 /dev/loop0

挂载磁盘

格式化后的磁盘可以看作是一个块设备文件,类型为b。在挂载分区前,需要建立一个挂载点,这个挂载点是以目录形式出现的。

一旦把某个分区挂载到这个挂载点下,再要往这个目录写数据时,就都会写到该分区当中,因此该目录应该是一个空目录,若为非空,一但挂载上了以前的东西就会被覆盖。按下面命令配置对挂载进行操作。

mkdir /newdir   //创建空目录,即挂载点
mount /dev/loop0 /newdir  //将分区挂载到这个挂载点
ls /newdir      //查看挂载点下的内容
df -h           //查看系统挂载信息

50.系统依赖包更新

# 查看更新项
sudp apt update
# 执行更新操作 
sudo apt upgrade -y

51.rsync远程文件同步

rsync 是一个 非常强大的文件同步工具,主要作用就是在 本地和远程主机之间快速、可靠地同步文件和目录。它常用于网站部署、备份、服务器间数据迁移等场景。

选项 作用
-a 归档模式,保持文件属性,递归目录
-v 输出详细信息
-z 压缩传输
-e "ssh -p PORT" 指定远程 ssh 端口
--delete 删除目标多余文件(保持完全同步)
--progress 显示传输进度

示例:

rsync -avz -e "ssh -p 22(端口号)" 本地文件 用户@公网服务器:/var/www/static/←目的路径

本文由 changchang 原创,转载请注明出处。

📖相关推荐