容器学习Day03-Ubuntu常用命令(一)

系列文章目录

容器学习Day01-初识容器

容器学习Day02-VMware Workstation安装Ubuntu

容器学习Day03-Ubuntu常用命令(一)

容器学习Day04-Ubuntu常用命令(二)

容器学习Day05-Ubuntu常用命令(三)

容器学习Day06-Ubuntu常用命令(四)

容器学习Day07-Docker基础(一)

容器学习Day08-Docker基础(二)

容器学习Day09-理解容器镜像

容器学习Day10-搭建私有镜像仓库

容器学习Day11-docker commit构建容器镜像

容器学习Day12-使用Dockerfile构建容器镜像

容器学习Day13-Docker容器网络

容器学习Day14-Docker容器存储

容器学习Day15-Docker容器底层实现技术

容器学习Day16-Docker Compose容器编排


文章目录

前言

       刚安装好了Ubuntu的操作系统,今天来熟悉一下常用的命令,看看和CentOS区别大不大,每个命令都有很多参数,不需要记,需要时查帮助即可。


一、系统相关命令

1、sudo&passwd&su

       安装好操作系统之后,忽然想起来没有为root用户设置&密码,这个和CentOS不一样,后来发现需要通过普通用户提权来修改root用户的密码。

  • sudo(以系统管理员的身份执行指令)

用法:sudo 命令,让普通用户可以执行管理员执行的命令。

  • passwd(修改用户密码)

用法:passwd 用户名,如果不跟用户名,默认修改当前登录用户密码。

       通过sudo命令修改root密码,输完命令后,验证当前普通用户的密码后,可进行操作。

demo@docker:~$ sudo passwd root
[sudo] password for demo: 
New password: 
Retype new password: 
passwd: password updated successfully
  • su (切换用户)

用法:su - 用户名,普通用户切换到其他用户需要输入其他用户密码,管理员用户切换到其他用户,默认不需要输密码。whoami命令查看当前用户。

demo@docker:~$ whoami
demo
demo@docker:~$ su - root
Password: 
root@docker:~# whoami
root

2、uname

  • uname(显示系统相关信息)

用法:uname -参数,

           -a,所有信息的汇总,可以使用其他参数显示每一项信息。

           -s,显示内核名称。

           -n,显示主机名。

           -r,显示内核发行号。

           -v,显示内核版本。

           -m,显示机器硬件名字。

           -p,显示CPU类型。

           -i,显示硬件平台。

           -o,显示操作系统类型。

延伸:lsb_release -a命令可以返回操作系统版本信息。

demo@docker:~$ uname -a
Linux docker 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
demo@docker:~$ uname -s
Linux
demo@docker:~$ uname -n
docker
demo@docker:~$ uname -r
5.15.0-46-generic
demo@docker:~$ uname -v
#49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022
demo@docker:~$ uname -m
x86_64
demo@docker:~$ uname -p
x86_64
demo@docker:~$ uname -i
x86_64
demo@docker:~$ uname -o
GNU/Linux

demo@docker:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.1 LTS
Release:	22.04
Codename:	jammy

3、lscpu&free&ps&kill

  • lscpu(显示CPU相关信息)

用法:lscpu,无其他参数,返回CPU相关信息。

demo@docker:~$ lscpu
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         45 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  2
  On-line CPU(s) list:   0,1
Vendor ID:               GenuineIntel
  Model name:            Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz
    CPU family:          6
    Model:               158
    Thread(s) per core:  1
    Core(s) per socket:  1
    Socket(s):           2
    Stepping:            9
    BogoMIPS:            6000.00
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable n
                         onstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpu
                         id_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat md_clear flush_l1d arch_c
                         apabilities
Virtualization features: 
  Hypervisor vendor:     VMware
  Virtualization type:   full
Caches (sum of all):     
  L1d:                   64 KiB (2 instances)
  L1i:                   64 KiB (2 instances)
  L2:                    512 KiB (2 instances)
  L3:                    12 MiB (2 instances)
NUMA:                    
  NUMA node(s):          1
  NUMA node0 CPU(s):     0,1
Vulnerabilities:         
  Itlb multihit:         KVM: Mitigation: VMX unsupported
  L1tf:                  Mitigation; PTE Inversion
  Mds:                   Mitigation; Clear CPU buffers; SMT Host state unknown
  Meltdown:              Mitigation; PTI
  Mmio stale data:       Mitigation; Clear CPU buffers; SMT Host state unknown
  Retbleed:              Mitigation; IBRS
  Spec store bypass:     Mitigation; Speculative Store Bypass disabled via prctl and seccomp
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; IBRS, IBPB conditional, RSB filling
  Srbds:                 Unknown: Dependent on hypervisor status
  Tsx async abort:       Not affected

           Architecture:CPU架构。

           CPU(s):逻辑CPU个数。

           Thread(s) per core:单核心线程数。

           Core(s) per socket:单颗CPU核心数。

           Socket(s):物理CPU个数。

           Hypervisor vendor:虚拟化平台。

  •  free(查看内存情况)

用法:free -h,以较好可读性显示内存相关情况。

demo@docker:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       244Mi       1.4Gi       0.0Ki       226Mi       1.5Gi
Swap:          1.9Gi          0B       1.9Gi

           total:内存总数。

           used:已使用内存数。

           free:空闲内存数。

           shared:多进程共享内存总数。

           buff/cache:buffer 和 cache 使用的内存数。

           available:可用的内存数。

           Mem:物理内存情况。

           Swap:换页空间使用情况。

  •  ps(查看系统进程情况)

用法:ps -aux,可以和grep配合使用过滤进程信息。

           -a:显示所有进程,包括其他用户进程。

           -u:以用户为主的格式显示进程情况。

           -x:显示所有进程,不以终端机来区分。

demo@docker:~$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.5 100244 11244 ?        Ss   05:44   0:01 /sbin/init
root           2  0.0  0.0      0     0 ?        S    05:44   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   05:44   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   05:44   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   05:44   0:00 [netns]
root           6  0.0  0.0      0     0 ?        I    05:44   0:00 [kworker/0:0-events]
root           7  0.0  0.0      0     0 ?        I<   05:44   0:00 [kworker/0:0H-events_highpri]
root           9  0.0  0.0      0     0 ?        I<   05:44   0:00 [kworker/0:1H-events_highpri]
root          10  0.0  0.0      0     0 ?        I<   05:44   0:00 [mm_percpu_wq]
root          11  0.0  0.0      0     0 ?        S    05:44   0:00 [rcu_tasks_rude_]
root          12  0.0  0.0      0     0 ?        S    05:44   0:00 [rcu_tasks_trace]
root          13  0.0  0.0      0     0 ?        S    05:44   0:00 [ksoftirqd/0]
root          14  0.0  0.0      0     0 ?        I    05:44   0:05 [rcu_sched]
root          15  0.0  0.0      0     0 ?        S    05:44   0:00 [migration/0]
root          16  0.0  0.0      0     0 ?        S    05:44   0:00 [idle_inject/0]
root          18  0.0  0.0      0     0 ?        S    05:44   0:00 [cpuhp/0]
.......

        USER:进程属于哪个用户。
        PID:进程id号。
        %CPU:进程CPU使用率。
        %MEM:进程内存使用率。
        VSZ:虚拟内存大小。
        RSS:进程常驻内存中的数据大小。
        TTY:进程使用的终端。
        STAT:进程状态。
        START:进程创建时间。
        TIME:进程占用CPU时间。
        COMMAND:创建进程的命令。

  • kill(终止进程)

用法:kill 进程号,kill -9 进程号是强制结束该进程。普通用户执行该命令终止管理员用户进程时需加sudo。

demo@docker:~$ kill -9 1111
demo@docker:~$ kill 1112
demo@docker:~$ sudo kill 1113

4、ip

  • ip address show(查看网卡相关信息)

用法:可以简写为ip a,ip a s后可跟网卡名,只查看某个网卡信息。

demo@docker:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:9c:ca:5f brd ff:ff:ff:ff:ff:ff
    altname enp2s0
    inet 192.168.1.128/24 metric 100 brd 192.168.1.255 scope global dynamic ens32
       valid_lft 1410sec preferred_lft 1410sec
    inet6 fe80::20c:29ff:fe9c:ca5f/64 scope link 
       valid_lft forever preferred_lft forever

demo@docker:~$ ip a s ens32
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:1f:47:c7 brd ff:ff:ff:ff:ff:ff
    altname enp2s0
    inet 192.168.147.130/24 metric 100 brd 192.168.147.255 scope global dynamic ens32
       valid_lft 1360sec preferred_lft 1360sec
    inet6 fe80::20c:29ff:fe1f:47c7/64 scope link 
       valid_lft forever preferred_lft forever

5、shutdown&reboot

  • shutdown(关机)

用法:shutdown,不加参数默认一分钟之后关机。

           shutdown now,立刻关机。

           shutdown -r now,立刻关机并重新启动,-r参数代表重启。

           shutdown  5,5分钟之后关机。

           shutdown  15:00,15点关机。

           shutdown  -c,取消关机。

           普通用户执行该命令需要加sudo。

demo@docker:~$ sudo shutdown

Broadcast message from root@docker on pts/1 (Sat 2022-09-03 05:37:02 UTC):

The system is going down for poweroff at Sat 2022-09-03 05:38:02 UTC!

Shutdown scheduled for Sat 2022-09-03 05:38:02 UTC, use 'shutdown -c' to cancel.


demo@docker:~$ sudo shutdown -c

Broadcast message from root@docker on pts/1 (Sat 2022-09-03 05:37:09 UTC):

The system shutdown has been cancelled


demo@docker:~$ sudo shutdown 5

Broadcast message from root@docker on pts/1 (Sat 2022-09-03 05:39:07 UTC):

The system is going down for poweroff at Sat 2022-09-03 05:44:07 UTC!

Shutdown scheduled for Sat 2022-09-03 05:44:07 UTC, use 'shutdown -c' to cancel.

  • reboot(重启)

用法:reboot,立刻重启,无其他参数, 普通用户执行该命令需要加sudo。

sudo reboot

二、目录文件相关命令

1、cd&pwd&ls

  • cd(目录切换)
  • pwd(显示当前目录完整路径)

用法:cd 目录路径,可以是相对路径也可以是绝对路径。

           cd /,切换到根目录。

           cd ~,切换到当前用户家目录。

           cd ..,切换到上级目录。

           cd -,切换回上次所在目录。

           pwd,返回当前目录完整路径。

demo@docker:~$ cd /
demo@docker:/$ cd ~
demo@docker:~$ cd ..
demo@docker:/home$ cd -
/home/demo
demo@docker:~$ pwd
/home/demo
  • ls(列出当前目录下目录和文件)

用法:ls,列出当前目录下的目录和文件,不包含隐藏文件。

           ls -l,列出文件并显示详细信息。

           ls -a,列出所有文件,包含隐藏文件。

demo@docker:~$ ls
docker  docker.txt
demo@docker:~$ ls -l
total 4
drwxrwxr-x 2 demo demo 4096 Sep  3 11:06 docker
-rw-rw-r-- 1 demo demo    0 Sep  3 11:07 docker.txt
demo@docker:~$ ls -a
.  ..  .Xauthority  .bash_history  .bash_logout  .bashrc  .cache  .config  .profile  .ssh  .sudo_as_admin_successful  docker  docker.txt
demo@docker:~$ ls -al
total 44
drwxr-x--- 6 demo demo 4096 Sep  3 11:07 .
drwxr-xr-x 3 root root 4096 Sep  3 03:48 ..
-rw------- 1 demo demo  104 Sep  3 10:32 .Xauthority
-rw------- 1 demo demo  746 Sep  3 10:28 .bash_history
-rw-r--r-- 1 demo demo  220 Jan  6  2022 .bash_logout
-rw-r--r-- 1 demo demo 3771 Jan  6  2022 .bashrc
drwx------ 2 demo demo 4096 Sep  3 03:50 .cache
drwx------ 3 demo demo 4096 Sep  3 07:02 .config
-rw-r--r-- 1 demo demo  807 Jan  6  2022 .profile
drwx------ 2 demo demo 4096 Sep  3 03:48 .ssh
-rw-r--r-- 1 demo demo    0 Sep  3 04:04 .sudo_as_admin_successful
drwxrwxr-x 2 demo demo 4096 Sep  3 11:06 docker
-rw-rw-r-- 1 demo demo    0 Sep  3 11:07 docker.txt

2、mkdir&rmdir

  • mkdir(新建目录)
  • rmdir(删除目录)

用法:mkdir 目录名,创建目录。

           rmdir 目录名,删除目录。

demo@docker:~$ ls
docker  docker.txt
demo@docker:~$ mkdir docker2
demo@docker:~$ ls
docker  docker.txt  docker2
demo@docker:~$ rmdir docker2
demo@docker:~$ ls
docker  docker.txt

3、cp&mv&rm

  • cp(复制)

用法:cp 文件1 文件2,复制文件1为文件2。

           cp -R 目录1 目录2,递归复制目录1为目录2,包含目录中的文件。

           -d,复制时保留链接文件。
           -p,复制时保留文件属性,修改时间和访问权限也复制到新文件中。
           -R/-r,递归复制目录及文件,复制该目录下所有的子目录和文件。

           -a,此选项通常在复制目录时使用,其作用等于dpR参数组合。

demo@docker:~$ cp -Rdp docker docker2
demo@docker:~$ ls -l
total 8
drwxrwxr-x 2 demo demo 4096 Sep  3 11:06 docker
-rw-rw-r-- 1 demo demo    0 Sep  3 11:07 docker.txt
drwxrwxr-x 2 demo demo 4096 Sep  3 11:06 docker2
  • mv(移动文件、重命名文件)

用法:mv 文件1 文件2,若文件2已存在,则将文件1重命名为文件2,并覆盖文件2。若文件2不存在,则将文件1移动到文件2位置并重命名为文件2。

           mv 文件 目录,将文件移动到目标目录中。

           mv 目录1 目录2,若目录2已存在,则将目录1移动到目录2中。若目录2不存在,则将目录1移动到目录2的位置并改名为目录2。

### mv 文件1 文件2,文件2已存在,则将文件1重命名为文件2,并覆盖文件2。
demo@docker:~$ ls -l
total 8
-rw-rw-r-- 1 demo demo  4 Sep  3 14:45 1.txt
-rw-rw-r-- 1 demo demo 17 Sep  3 14:45 2.txt
demo@docker:~$ mv 1.txt 2.txt
demo@docker:~$ ls -l
total 4
-rw-rw-r-- 1 demo demo 4 Sep  3 14:45 2.txt

### mv 文件1 文件2,文件2不存在,则将文件1移动到文件2位置并重命名为文件2。
demo@docker:~$ ls -l
total 4
-rw-rw-r-- 1 demo demo 4 Sep  3 14:45 1.txt
demo@docker:~$ mv 1.txt 2.txt
demo@docker:~$ ls -l
total 4
-rw-rw-r-- 1 demo demo 4 Sep  3 14:45 2.txt

### mv 文件 目录,将文件移动到目录中。
demo@docker:~$ ls -l
total 8
-rw-rw-r-- 1 demo demo    4 Sep  3 14:45 1.txt
drwxrwxr-x 2 demo demo 4096 Sep  3 14:48 docker
demo@docker:~$ mv 1.txt docker
demo@docker:~$ ls -l
total 4
drwxrwxr-x 2 demo demo 4096 Sep  3 14:49 docker
demo@docker:~$ cd docker
demo@docker:~/docker$ ls -l
total 4
-rw-rw-r-- 1 demo demo 4 Sep  3 14:45 1.txt

### mv 目录1 目录2,目录2已存在,则将目录1移动到目录2中。
demo@docker:~$ ls -l
total 8
drwxrwxr-x 2 demo demo 4096 Sep  3 14:50 docker1
drwxrwxr-x 2 demo demo 4096 Sep  3 14:50 docker2
demo@docker:~$ mv docker1 docker2
demo@docker:~$ ls -l
total 4
drwxrwxr-x 3 demo demo 4096 Sep  3 14:50 docker2
demo@docker:~$ cd docker2
demo@docker:~/docker2$ ls -l
total 4
drwxrwxr-x 2 demo demo 4096 Sep  3 14:50 docker1

### mv 目录1 目录2,目录2不存在,则将目录1移动到目录2的位置并改名为目录2。
demo@docker:~$ ls -l
total 4
drwxrwxr-x 3 demo demo 4096 Sep  3 14:50 docker1
demo@docker:~$ mv docker1 docker2
demo@docker:~$ ls -l
total 4
drwxrwxr-x 3 demo demo 4096 Sep  3 14:50 docker2
  • rm(删除文件)

用法:rm 文件名,删除文件。rm -r 目录名,删除目录及目录中的文件。

           -i,删除前询问确认。

           -r,递归删除,目录及目录中的文件。

           -f,强制删除。

           可以和通配符一起使用,如rm -r a*,将会删除当前目录下所有a开头的文件和目录。

demo@docker:~$ ls -l
total 8
-rw-rw-r-- 1 demo demo    0 Sep  3 15:06 app1
-rw-rw-r-- 1 demo demo    0 Sep  3 15:06 app2
drwxrwxr-x 2 demo demo 4096 Sep  3 15:06 apple
-rw-rw-r-- 1 demo demo    0 Sep  3 15:06 bed
-rw-rw-r-- 1 demo demo    0 Sep  3 15:06 call
drwxrwxr-x 3 demo demo 4096 Sep  3 14:50 docker2
demo@docker:~$ rm -rfi a*
rm: remove regular empty file 'app1'? y
rm: remove regular empty file 'app2'? y
rm: remove directory 'apple'? y  
demo@docker:~$ ls -l
total 4
-rw-rw-r-- 1 demo demo    0 Sep  3 15:06 bed
-rw-rw-r-- 1 demo demo    0 Sep  3 15:06 call
drwxrwxr-x 3 demo demo 4096 Sep  3 14:50 docker2

4、ln

  • ln(建立链接)

用法:ln 源文件 目标文件,建立硬链接,硬链接删除源文件不影响目标文件。

           ln -s 源文件 目标文件,建立软连接,其实就是快捷方式,删除源文件,目标文件将无法使用。

### file2是file1的硬链接,file3是file1的软连接。
demo@docker:~$ ls -l
total 4
-rw-rw-r-- 1 demo demo 5 Sep  3 15:19 file1
demo@docker:~$ ln file1 file2
demo@docker:~$ ln -s file1 file3
demo@docker:~$ ls -l
total 8
-rw-rw-r-- 2 demo demo 5 Sep  3 15:19 file1
-rw-rw-r-- 2 demo demo 5 Sep  3 15:19 file2
lrwxrwxrwx 1 demo demo 5 Sep  3 15:20 file3 -> file1

### 删除源文件file1后,file2仍可以使用,file1则不行。
demo@docker:~$ rm file1
demo@docker:~$ cat file2
test
demo@docker:~$ cat file3
cat: file3: No such file or directory

5、find

  • find(查找文件)

用法:find /home/demo -name 文件名,从/home/demo目录开始按文件名查找文件。
           find . -name a*,支持通配符,如从当前目录查找a开头的文件。
           find /home/demo -mtime -1,从/home/demo目录开始查找24小时内修改过的文件。
           find /home/demo -user 用户名,从/home/demo目录开始查找属主是某用户的文件。

### 从/home/demo查找名字为app1的文件。
demo@docker:~$ find /home/demo -name "app1"
/home/demo/app1

### 从当前目录查找名字为a开头的文件。
demo@docker:~$ find . -name "a*"
./.ssh/authorized_keys
./app2
./app1

### 从/home/demo中查找24小时内修改过的文件或目录。
demo@docker:~$ find /home/demo -mtime -1
/home/demo
/home/demo/.config
/home/demo/.config/procps
/home/demo/.ssh
/home/demo/.ssh/authorized_keys
/home/demo/.cache
/home/demo/.cache/motd.legal-displayed
/home/demo/.bash_history
/home/demo/.sudo_as_admin_successful
/home/demo/app2
/home/demo/app1
/home/demo/.Xauthority
/home/demo/file1

### 从/home/demo中查找属主为demo的文件或目录。
demo@docker:~$  find /home/demo -user demo
/home/demo
/home/demo/.config
/home/demo/.config/procps
/home/demo/.profile
/home/demo/.ssh
/home/demo/.ssh/authorized_keys
/home/demo/.cache
/home/demo/.cache/motd.legal-displayed
/home/demo/.bash_history
/home/demo/.sudo_as_admin_successful
/home/demo/.bash_logout
/home/demo/.bashrc
/home/demo/app2
/home/demo/app1
/home/demo/.Xauthority
/home/demo/file1

6、cat&head&tail&more

  • cat(显示文件内容)
  • head(显示文件开头n行的内容)
  • tail(显示文件结尾n行的内容)
  • more(显示文件内容,可以翻页)

用法:cat 文件名,显示文件内容。

          head 文件名,默认显示开头10行的内容。

          head -n N 文件名,显示文件开头N行的内容,N为整数。

          tail 文件名,默认显示结尾10行的内容。

          tail -n N 文件名,显示文件结尾N行的内容,N为整数。

          tail -f 文件名,动态查看文件结尾的内容。

          more 文件名,显示文件内容,可以翻页。

demo@docker:~$ cat file1 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
demo@docker:~$ head -n 5 file1 
1
2
3
4
5
demo@docker:~$ tail -n 5 file1 
16
17
18
19
20


总结

        操作了一下系统相关命令和目录文件相关命令,和CentOS相差不大,后面继续看看其他方面的命令。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AtobeKegio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值