Linux学习

Linux

1.Linux简介

1.1 Linux的优劣

​ linux的优势:一种开源的操作系统,安装在计算机硬件上,用于管理计算机硬件和软件资源的系统软件。
​ 其安全性,稳定性,高并发处理能力都比较高,比较适合做服务器

​ 劣势:没有可视化的界面,不太适合普通用户

​ 所以在日常生活中普通用户通常用windows,服务器用linux.
​ 我们在开发中写代码时用windows,部署项目时用linux

1.2 Linux发展史

​ linux 的发行版本:linux于1991年开发出了linux内核程序,后来很多软件开发组织以及软件公司在内核基础之上,陆续推出
​ 了很多不同版本的linux操作系统,其中比较火的是:Ubuntu(乌班图),RedHat(红帽),CentOs

​ 不同厂商的linux其实几乎相同,只有个别命令不同,因为它们的内核是一样的

1.3 Linux目录结构

​ 1>Linux只有一个根目录 /

​ 2>层级式的目录结构:
​ bin ->user/bin: 系统的可执行文件,可以放在任何目录下执行
​ usr/local/bin: 用户自己的可执行文件,可以在任何目录下执行
​ etc: 存放配置文件.配置环境变量(etc/profile)
​ home: 每一个用户的根目录,用来保存用户的私人数据,默认情况下,目录名自己的用户名相同
​ opt: 存放额外安装的软件,相当于windows系统中的program files目录

image-20210919162514832

1.4 Linux的远程操作

​ 1>为什么要对linux进行远程操作? 因为在实际开发中,linux往往作为服务器存在的,存储的是数据,且服务器往往是
​ 在一个单独的空间中存放,不会有人,这时我们想要操作数据就要远程连接linux,市面上主要用以下的两款软件,下面
​ 分开进行介绍

​ 2>Xshell: linux的终端模拟软件
​ 安装并破解: 解压,破解(运行两个.bat文件),启动Xshell
​ 连接远程linux系统: 创建会话:
​ 查看linux系统的ip地址:ifconfig

​ 3>Xftp: 文件传输软件: 远程对linux服务器传输软件, 因为在实际开发中, 想要将整理好的项目传输到linux上,就需要
​ 用到此软件,或者将linux上的软件传输到windows上都需要此软件
​ 安装并破解: 解压,运行两个bat文件,启动Xftp即可

2.Vi和Vim的使用

2.1简介

​ vi和vim编辑器是linux中的文本编辑器(类似windows中的记事本)
​ vim是vi的增强版,vi的绝大多数用法在vim都适用

2.2使用

vi和vim有三中模式:

​ 1>一般模式:用vi或者vim命令打开文件(vim test.txt), 即可进入到一般模式
​ 该模式可以查看文件的内容,并且可以通过上下左右键移动光标
​ 不能编辑文件的内容

​ 2>编辑模式:在一般模式下,按i或I或a或A键即可进入到编辑模式
​ 可以编辑文件的内容
​ 但是不能保存文件的内容
​ 按esc即可退出该模式,进入到一般模式

​ 3>命令行模式: 该模式只能从一般模式进入
​ 一般模式下按:即可进入到该模式
​ 输入命令: [1]q!----不保存强制退出编辑器
​ [2]wq----保存并退出编辑器
​ [3]q----只是退出编辑器
​ 按esc返回到一般模式

​ 使用mkdir 文件名 即可创建文件夹
​ 使用vim 文档名 [1]如果该文件不存在会创建文件,并启用编辑器
​ [2]如果该文件存在,直接启动编辑器

vi和vim编辑器中的快捷键

​ 1>复制当前行: 在一般模式下, 按yy 即可将光标所在行复制到剪切板
​ 按p即可将剪切版中的内容粘贴到光标所在的下一行
​ 2>复制多行: 在一般模式下, 按 数字yy 即可复制指定的行数
​ 按p,即可把剪切板中的内容粘贴到光标所在的下一行
​ 3>在文本文件中查找关键字: 在命令行的模式下,输入/关键字, 回车即可
​ 按n,表示查找下一个关键字
​ 4>删除光标所在的当前行: 在一般模式下,按dd,删除光标所在行
​ 5>删除多行: 在一般模式下,按数字dd即可删除指定的行数
​ 6>撤销上次编辑的内容: 在一般模式下,按u
​ 7>显示行号: 在命令模式下,按 set nu 即可显示;
​ 按set nonu 即可取消

3.linux中的用户管理

​ 1>任何使用linux的系统资源的用户,必须使用一个合法的账号和密码一向系统管理员申请.
​ root是linux安装时默认创建的系统管理员账号,由root创建普通账号

​ 2>添加一个用户
​ 命令: useradd 用户名
​ 在执行添加一个用户的命令后,linux会为我们做一下三件事情:
​ [1]创建一个用户(用户名)
​ [2] 在/home目录下创建的根目录,目录名称默认跟用户名相同
​ [3]在linxu中任何一个用户都至少属于一个组,新建用户时,如果不指定组,则会新建一个组,组名和用户名相同,
​ 并且把该用户添加到该组中
​ 补充:useradd -d /home/ww wangwu 创建用户的同时,指定用户的根目录

​ 3>给用户设置密码
​ 命令:passwd 用户名
​ 注:[1]密码必须满足一定的复杂度
​ [2]输入su 用户名 即可进入到该用户的命令模式
​ [3]普通用户之间可以使用su随意进行切换(无需输入密码),但是普通用户向root用户切换时,需要输入root 的登陆密码.即:从权限高的用户向权限低的用户转,不需要输入密码,但是从权限低的用户向权限高的用户转 需要输入密码

​ 4>删除用户
​ 命令:有两种: userdel 用户名 该命令只会删除掉用户,不会删除掉用户home目录下的数据
​ userdel -r 用户名 该命令还会删除掉用户home下的数据(开发中常用)
​ 注:[1]输入exit即可退出当前用户(快捷键ctrl+d)
​ [2]如果登录过该用户,那么必须先退出才能删除该用户
​ [3]只有在root用户的权限下才能删除用户

​ 5>查看用户的信息:
​ 命令: id 用户名
​ 结果: 执行完该命令后,会查询到该用户的id,主组,附加组
​ 组: 组的存在是为了控制权限,如某些组有权限查看某个文件夹
​ 主组一旦确定后就不能再进行更改
​ 附加组越多,权限也就越高

4. linux中组的管理

​ 1>linux中的组相当于角色的概念,可以对有共性的用户进行统一的管理;
​ 每个用户至少属于一个组,不能独立于组存在,也可以有多个组,所属的组越多,权限越大
​ 新建用时指定的组为主组, 如果不声明组,则默认主组名和用户名相同
​ 如果声明组,那么该组就是主组,主组是不能改变的
​ 2>添加组
​ 命令:groupadd 组名
​ 3>删除组: groupdel 组名
​ 4>把用户添加到组中: gpasswd -a 用户名 组名
​ 5>把用户从组中移除: gpasswd -d 用户名 组名
​ 6>添加用户时,指定所属的组(主组):useradd -g 组名 用户名

image-20210922100444142

5. linux的实操命令

5.1 linux中的帮助命令

​ 在实际开发中,有些命令我们忘记了,可以通过网络查看,也可以通过linux内置的说明来查看
​ 1>用来查看命名的内置帮助信息: man 命令
​ 按回车可以按行查看,按空格可以按页查看
​ 例: man ls
​ 2>用来查看命名的内置帮助信息(不太常用): help 命令
​ 例: help cd

5.2 linux中的文件和目录操作命令

​ 1>查看当前所在目录: pwd
​ 2>查看指定目录下的所有的子目录和文件目录: ls [附加条件] [指定目录]
​ 注:[] 代表可以不存在,当附加条件和指定目录都不存在的时候,ls 查看的是当前目录下所有的子目录和文件列表

​ ls -l /home: 以列的形式显示
​ ls -a /home: 显示指定的目录下所有的子目录和文件(包括虚拟(隐藏)的目录)
​ ls -al /home: 以列的形式显示指定目录下所有的子目录和文件(包括虚拟(隐藏)的目录)
​ 注:al和la的效果是一样的,可以不分先后顺序
​ 虚拟目录主要是两个目录: .和…
​ .表示当前目录
​ …表示上一级目录

image-20210922105941013

​ 3>切换目录: cd 目录名
​ [1]绝对目录: 以盘符开始的目录叫做绝对目录,从盘符开始查找目标
​ cd/opt/testDir
​ ~: 当前用户的根目录,在任何目录下执行:cd ~,进入当前用户的根目录
​ [2]相对目录: 以目录名开始的目录叫相对目录,从当前目录开始查找目标目录
​ cd testDir
​ …: 当前目录的上一级目录,从当前目录开始查找它的上一级目录
​ .: 当前目录
​ 当前目录的作用:执行文件时,必须要 用当前文件/待执行文件 才能执行
​ 如:xxx.sh必须写成====>./xxx.sh

​ 4>创建目录: mkdir 目录名
​ 其中目录名即可以写绝对路径也可以写相对路径
​ 例:mkdir /opt/testdir/test1/ 在/opt/testdir/ 目录下创建一个目录test1
​ mkdir test2 在/opt/testdir/ 目录下创建一个目录test2
​ mkdir -p /opt/testDir/test3/test4 在/opt/testdir/ 目录下创建目录test3,并且在test3目录下创建 test4(一次创建多级目录)

​ 5>删除一个空目录: rmdir 目录名
​ rmdir test1
​ rmdir test3

​ 6>创建一个或多个空文件: touch 文件名列表(文件名之间用空格隔开)
​ touch t1.txt
​ touch t2.txt t3.txt t4.txt
​ 7>复制文件或目录: cp [条件] source(源) dest(目标)
​ cp t1.txt test2 把t1.txt文件复制到目录test2中
​ cp -r test2 test5 把test2目录复制到test2目录中(递归的复制目录)

​ 8>删除文件或目录: rm 文件名或目录名
​ rm t1.txt
​ rm -f t2.txt 强制删除文件
​ rm -r test2 提示递归删除目录
​ rm -rf test5 强制递归删除目录

​ 9>移动目录或文件: mv source(源) dest(目标)
​ mv test.txt test1
​ mv test1 test2
​ mv t3.txt t3_new.txt 文件重命名

​ 10>查看文件指令: cat 文件名
​ 可以直接查看文件的内容
​ 和vm的不同之处在于该命令不会直接进入到编辑界面

​ 11>linux中的文件和目录操作的命令
​ [1]echo:输出系统变量或者常量的值到命令行终端
​ echo $JAVA_HOME
​ echo $PATH
​ echo Hello World
​ [2]把前一个查看命令的结果输出到指定的文件中: 查看命令 > 文件名
​ 注:1.如果目标文件不存在,则新建一个文件
​ 2.如果目标文件已存在,则把文件以前的内容覆盖
​ ls > ret.txt
​ ls -al > ret.txt
​ cat ret.txt > t3_new.txt 文件内容的复制

5.3 时间和日期指令

​ 1>查看或设置系统的日期或时间: date
​ date 查看系统当前的完整的日期或时间
​ date +%Y 系统当前的年份
​ date +%m 系统当前的月份
​ date +%d 系统当前的日期

​ date ‘+%Y-%m-%d %H:%M:%S’ 按yyyy-MM-DD hh:mm:ss格式显示
​ date -s “2020-10-20 10:20:30” 设置当前的系统时间

​ 2>查看系统日历: cal
​ cal 查看当前月份的日历
​ cal 2021 查看指定年份的日历

5.4 搜索和查找的命令

​ 1>搜索文件或目录: find [搜索范围] [搜索标准] 关键字
​ 搜索标准: -name: 默认按名称搜索(文件或目录所在的路径也在搜索范围之内)
​ -size: 按文件大小搜索
​ -user: 按文件的所有者搜索
​ find *.txt 搜索当前目录下,所有的.txt文件
​ find * e * 搜索当前目录下,所有名称中包含e的文件
​ find /etc *.txt 搜索/etc目录下所有.txt的文件
​ find /etc -size -5k 搜索/etc目录下所有小于5k的文件(-表示小于,+表示大于)
​ find /etc user zhangsan 搜索/etc目录下所有的所有者是zhangsan的文件和目录

​ 2>locat命令: locat 关键字
​ linux的底层是将数据以树的形式存储到数据库中
​ 该命令和find的区别: [1]该命令的查找速度比较快,因为该命是直接访问内存,不用访问磁盘
​ [2]该命令是以树的形式进行查找,且是从根节点进行查找
​ [3]当删除或添加某个文件时,树并不能及时的进行更新,所以我们在使用此命令进行查找的时候,
​ 需要先进行updatedb命令来同步数据库

​ 3>搜索过滤命令: 其它命令|grep [选项] 过滤条件
​ 该命令的作用: 在前一个搜索命令的结果中进行按名称进一步进行过滤
​ find *.txt|grep new 搜索当前目录下,所有包含new 的,txt文件
​ find /etc -size -5k|grep firefox 搜索当前目录下文件小于5k且名字中包含firefox的文件
​ cat t1.txt|grep beijing 显示目标文档中含有beijing的行
​ cat t1.txt|grep -ni beijing 显示目标文档中含有beijing的行,并显示在原文档中的行标
​ ls -al |grep new 显示当前目录中名称中包含new关键字的文档和子目录

5.5 压缩和解压指令

​ 1>压缩或解压单个文件: gzip 文件名: 压缩单个文件,生成一个.gz的压缩包,并且会把原来的文件删除
​ gunzip 压缩包名: 解压.gz压缩包,并且会把原来的.gz压缩包删除

​ gzip t1.txt
​ gunzip t1.txt.gz

​ 2>压缩(打包)或解压多个文件和目录: zip 目标压缩包名称(通常使用.zip压缩包) 文件或目录列表
​ unzip 压缩包名(.zip) -d 解压的目录名: 将指定的.zip压缩包解压到当前目录 (或者指定目录)
​ 注: 压缩和解压的时候不会删除掉源文件,这一点和gunzip不一样

​ zip test.zip ret.txt t1.txt test2
​ unzip test.zip -d test3

​ 3>压缩(打包)或解压多个文件和目录: tar -c 目标压缩包名称(xxx.tar.gz) 文件或目录列表
​ tar -x 压缩包名(xxx.tar.gz) -c 解压目录名 将指定的.tar.gz 压缩包解压到当 前目录(或指定目录)
​ 注:该命令不管是压缩还是解压都不会删除原文件

​ tar -zcvf xxx.tar.gz 文件或目录列表
​ tar -zxvf xxx.tar.gz -C 解压目录名

5.6 文件(或目录)与组

​ 1>关于组的基本介绍
​ 在linux中, 每一个用户至少属于一个组,用户不能独立于组存在,一个用户可以有多个组
​ 在linux中,文件也都必须属于一个组,但是文件只能属于一个组

​ 文件或者目录通过组来控制那些用户可以对它进行那些操作,即文件的访问权限
​ 在文件或目录看来,linux系统中所有的用户分为三类:
​ 所有者:默认情况下,文件或者目录的所有者都是创建者,可以修改
​ 同组用户: 跟文件或目录属于同一个组的用户
​ 其它组用户: 即不是文件或目录的所有者,也不是同组用户
​ 例: 一个文件属于dev研发组, 那么dev研发组的人就可以对该文件进行分配权限

​ 2>查看文件的所有者和所在的组: ls -l [文件名]
​ 文件名可以有也可以没有,当没有时,默认查看当前目录下的所有文件的权限
​ 有文件名时, 查看指定的文件下的所有文件的权限

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-543L3CWw-1635944839095)(https://raw.githubusercontent.com/OneTimes1/photo/master/C:%5CUser%5C14330%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images202111032105719.png)]

​ 3>修改文件的所有者: chown 新的所有者 文件名
​ 修改文件的所有者和所在的组: chowm 新的所有者: 新的组 文件名

​ 注:当我们进行修改时,如果目标文件是一个目录,那么只会对该目录进行修改,默认不会对该目录中的文件进行修改
​ 想要进行修改需要加上-R 即: chowm -R 新的所有者: 新的组 文件名

​ chown zhangsan t1.txt 修改t1.txt文件的所有者为zhangsan
​ chown zhangsan:dev test 修改test的所有者为zhangsan,所在的组为dev组
​ chown -R zhangsan:dev test 修改test文件以及其子目录中的所有文件的所有者为zhangsan,组为dev

​ 4>只修改文件所在的组: chgrp 新的组 文件名或目录名
​ 只修改文件及其子目录所在的组: chgrp -R 新的组 文件名或目录名

5.7 linux中文件或目录的权限管理

​ 1>准备工作:
​ 一个用户至少属于一个组,也可以属于多个组
​ 一个文件或目录也必须属于一个,并且只能属于一个组
​ 在一个文件或目录来看,linux系统中所有的用户可以分为三类:
​ 所有者,同组用户,其它组用户

​ 2>文件或目录的三种权限:
​ 在linux 中,任何文件或目录都有三种权限: 读(read) , 写(write) , 执行(Execute)
​ 对文件而言:
​ 读: 可以读取,查看文件的内容 比如: cat,more,less,head,tail等
​ 写: 可以修改文件的内容,比如: vi或vim等
​ 执行: 如果该文件是可执行文件(.sh),可以直接运行, 比如: ./xxx.sh
​ 对目录而言:
​ 读: 可以读取,查看文件的内容, 比如: ls等
​ 写: 可以修改目录中的内容, 创建子目录,删除子目录,创建文件,删除文件,重命名文件或目录
​ 执行: 可以进入该目录,比如: cd 等

​ 3>文件或目录的权限控制:
​ 在linux中,任何一个文件或目录都有三部分权限: 所有者权限, 同组用户权限, 其它组用户权限
​ 第一部分权限: 所有者权限,文件或目录的所有者对该文件所拥有的权限,使用r,w,x分别代表读,写,执行的权限.
​ 比如:rwx: 拥有读写执行的权限, r-x: 拥有读和执行的权限, r–: 只拥有读的权限, —: 没有任 何权限
​ 第二部分权限: 同组用户权限,文件或目录的同组用户对该文件所拥有的权限, 使用r,w,x分别代表读,写,执行的
​ 权限
​ 第三部分权限: 其它组用户权限,文件或目录的其它组用户对该文件所拥有的权限, 使用r,w,x分别代表读,写,执 行的权限
​ 注:[1]只要某个用户对某个文件有写的权限,那么该用户就可以修改该文件对所有者,同组用户,和其它组用户的权限
​ [2]当某个文件第一次创建的时候,文件的所有者和同组用户都为该用户
​ [3]谁解压了压缩包,该文件的所有者和同组用户就是谁
​ [4]当一个非可执行文件被创建时,默认所有者权限为rw, 同组用户为rw, 其它组为r

​ 4>查看文件或目录的权限:
​ ls -l 或 ls -aul

​ 5>修改文件或目录的权限: chmod 操作 文件名
​ 用r, w, x 分别代表读, 写, 执行的权限
​ 用u, g,o, a 分别表示给所有者,同组用户,其他组用户,所有者用户修改权限
​ 用+, - ,= 分别分别表示给指定的用户增加, 减少,设置对应的权限

​ chmod g-w,o+w test 给test文件的同组用户和其它用户增加写的权限
​ chmod g=rwx test 给test文件的同组用户设置读, 写, 执行的权限

​ 6>使用数字的方式修改文件或目录的权限:
​ 每一个权限可以用一个数字来表示:
​ r, w, x
​ 4, 2, 1
​ 2^2 2^1 2^0
​ 每一个文件或目录都有三部分权限,每一部分权限都可以用一组数据之和来表示,三部分权限就是一组三个数据序列:
​ rw- r-x -wx
​ 6 5 3

​ rwx r-x -wx
​ 7 5 3

​ rwxrwxrwx
​ 777
​ chmod 777 test 将test文件的权限修改为所有者,同组用户,其它组用户都可以进行读写和执行

6.linux中的网络管理

​ 在linux的配置文件: vi /etc/sysconfig/network-scripts/ifcfg-ens33

​ 需要配置的内容:
​ BOOTPROTO=“static” 将ip地址设置为静态的
​ ONBOOT=“yes” 每次启动linux服务器的时候都要加载一下该配置文件
​ IPADDR=192.168.11.128 自己设定的ip地址,但是要确保不能超过虚拟网络编辑器中的地址范围
​ GATEWAY=192.168.11.2 配置网关,与虚拟机的虚拟网络编辑器中的网关一致
​ DNS1=192.168.11.2 配置DNS解析器,与虚拟网络编辑器中的网关一致,DNS后面的数字代表的是解析服务器1

​ 最后重启linux: reboot 配置即可生效

7. linux中的进程管理

​ 线程: 一个程序的线路,一个进程中可以有多个线程
​ 进程: 一个程序的执行,一个进程占用一个端口

​ 1>查看正在运行的进程: ps
​ ps //只会显示应用进程
​ ps -e //显示所有进程
​ ps -ef //以全格式的形式显示所有进程(常用),用于查看linux系统中某一些软件或者应用是否处于启动状态

​ ps -ef|grep mysql //查看mysql服务是否处于开启的状态

​ 2>关闭进程:
​ 使用ps命令进入查看进程的PID
​ 使用命令kill -9 PID

​ 说明: -9 表示强迫进程立即停止
​ PID 为进程对应的进程编号

8. linux中的服务的介绍

​ 1>服务介绍:服务是支持linux运行的一些必要的程序, 本质上也是进程, 叫守护进程

​ 2>操作服务: sysytemctl [start|stop|restart|reload|status|enable] 服务名称

​ systemctl status firewalld 查看防火墙的状态
​ systemctl stop firewalld 关闭防火墙
​ systemctl start firewalld 开启防火墙
​ systemctl enable firewalld 设置防火墙开机启动
​ systemctl disable firewalld.service 设置防火墙开机不启动

​ 注: 老版本的linux或者有些发行版本的linux, 操作服务使用的是service命令,而不是systemctl命令

9. linux中软件包的管理

​ 1>RMP: 一种linux的软件包的打包和安装工具,它操作的软件包都是以.rmp结尾
​ 该软件可以将以.rmp结尾的软件安装到linux中,
​ 也可以将写好的java程序打包成.rmp可执行文件

​ 2>使用RMP: rmp命令
​ 查看当前系统中已经安装的rpm包: rpm -qa|grep firefox
​ 卸载rpm软件包: rpm -e firefox
​ 安装rpm包: rpm -ivh xxx.rpm
​ 注: [1]linux的镜像文件给我们提供了很多的安装包,都在光盘的package文件里面
​ [2]想要使用安装packages中的软件,需要先进入/run 目录, 然后再进入到media目录,
​ 此时会显示用户的包名,需要进入用户的包名中,即可看到光驱文件,然后 cd CentOS\ 7\ x86_64/ 命令即可进入,
​ 然后cd packages 即可使用里面的软件包
​ [3]安装rpm的包时一般不再光驱中装,而是装在opt目录中,用命令 cp 待安装软件名称 /opt
​ 复制到opt目录下,再用rmp安装即可

​ 3>YUM包管理: 是一种基于RPM的软件包管理工具, 它能过从指定的服务器上自动下载RPM包并且自动下载,可以自动
​ 处理软件包之间的关系

​ 为什么要使用YUM包? 因为在实际开发中,有一些rmp包是依赖于其它的包的,只有其它的包安装了,才能下载该包, 而
​ YUM其实就是一个大的服务器,这个服务器上有所有的yum包,并且会自动的管理依赖,用起来比较的方便.

​ 其实YUM就类似mven,其也有本地仓库和中心仓库,会自动的管理依赖

​ 4>YUM的使用:
​ 查看当前系统中已经安装的rpm软件包: yum list installed|grep firefox
​ 卸载rpm软件包: yum remove firefox.x86_64
​ 安装rpm包: yum install firefox 前提是要先进入到opt包中

10.搭建JAVAEE开发环境

启动mysql服务(需要在mysql的bin目录下): [root@localhost bin]./mysqld_safe &
关闭mysql服务: [root@localhost ~]mysqladmin -u root shutdown 或: [root@localhost ~]service mysql stop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值