6

Linux学习手册大全

 3 years ago
source link: https://blog.csdn.net/qq_37751911/article/details/118855159
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

1、虚拟机安装

VMware15.5安装,傻瓜式安装,只记录变动步骤,其余都下一步,软件安装位置自己选择,最好别选c盘,软件地址https://www.nocmd.com/windows/740.html(内含激活码),安装时需要注意它文件不会在一个文件夹下,自己多建一个版本文件夹,方便管理。
在这里插入图片描述
在这里插入图片描述
文件》新建虚拟机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击安装计算机的设置》选择镜像后》点确定
在这里插入图片描述
开启虚拟机》选第一个install centos7
在这里插入图片描述
等待一段时间不要乱点,乱点会卡死,》软件选择》最小安装或gui服务器或gnome桌面,选好后点完成。开发中一般都选最小安装,需要什么软件在自行选择,但其它安装可以省略jdk,mysql等安装,会自行安装。
在这里插入图片描述
在这一步也可以选择自动配置分区,这里更快,这里我选择我要配置分区。
在这里插入图片描述
设置好/boot要1G,swap要2G,剩余都在根目录分区大小后,设备类型点标准分区,点完成。
在这里插入图片描述
点接受更改
在这里插入图片描述
网络和主机名设置,需要联网就打开以太网。
在这里插入图片描述
最后一个像一把锁的安检策略可以关闭。

点开始安装
在这个页面配置root账号密码,创建用户账号密码。在实际开发中root账号要复杂点,避免被破解。
在这里插入图片描述
等待完成后,点击重启。
在这里插入图片描述
在这里插入图片描述
再把网络连接打开。

2、虚拟机网络连接方式

1、桥接模式:同一网段中,最多只能连接255台机子,一旦超出容易造成IP冲突。IP地址的前3位就是网段(192.168.0.1)。

2、NAT(网络地址装换)模式:虚拟机和外部通信,不会造成IP冲突。虚拟机地址不再是以0开头,而是生成1-255之间的数,如192.168.6.1,然后主机会生成一个对应的虚拟网卡如192.168.6.6,两者能通信。这种模式下虚拟机能访问192.168.0.1,由于网段不同,192.168.0.1不能访问虚拟机。

3、主机模式:虚拟网络对主机可见,虚拟机不能上网。

3、安装vmtools

vmtools工具是实现虚拟机和主机文件进行共享,两个地方都能修改同一文件。安装步骤如下

1、右击虚拟机 install vmware tools
2、双击VMware Tools,复制XXX.tar.gz压缩包到/opt目录下
3、桌面上打开终端,cd /opt ,进入到opt目录下,使用解压命令tar -zxvfVM+tab键提示自动补全名称, 得到一个解压文件夹
4、进入该vm解压的目录cd vmxxx,/opt目录下
5、安装./vmware-install.pl
6、全部使用默认设置即可,一直按回车,就可以安装成功
注意:安装vmtools需有gcc ,可以使用gcc -v查看gcc版本

共享文件夹设置

点虚拟机设置》选项》共享文件夹》总是启用》添加》指定文件夹

4、虚拟机目录

4.1、目录含义

/bin :存放着最经常使用的命令

/home :存放普通用户的主目录,一般该目录名是以用户的账号命名

/root :该目录为系统管理员,也称作超级权限者的用户主目录(根目录)

/boot:Linux启动相关文件

/lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。

/lost+ found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件

/etc:系统管理所需配置和子文件目录

/user:用户应用程序和文件

/proc[不能动]:是虚拟目录,系统内存映射,访问这个目录获取系统信息

/srv[不能动]:存放服务启动后所需数据

/sys[不能动]:该目录安装了2.6内核新出现的文件系统

/tmp:存放临时文件

/mnt:存放挂载文件

/opt:给主机额外安装软件的目录,即软件存放目录

/user/local:软件安装后的目标目录,一般是编译源码的方式安装的程序

4.2、Linux颜色含义

蓝色表示目录,白色表示文件,红色表示压缩文件,绿色表示可执行权限

5、远程登录软件

XShell和XFTP下载地址:网站一

网站二推荐

虚拟机终端输入ifconfig,找到虚拟机地址,如果找不到ip地址就重新设置网络,编辑》虚拟网络编辑器》更改设置》还原默认设置。

6、编辑命令

vi、vim都是编辑命令,vim是vi的增强版,它们有三种模式,一般模式,编辑模式(能输入内容),命令模式。

一般模式:输入的内容看不见

编辑模式:可以自由输入内容,可见

命令模式:在文件末尾位置,可见

命令模式》一般模式:vimvi

一般模式》编辑模式:ioar等按键

编辑模式》一般模式:esc

一般模式》命令模式::/

:wq:保存退出

:q:不保存退出

:q!:强制退出

自动补全文件名:tab

拷贝当前行(一般模式):yy,并粘贴输入p

拷贝当前行向下的i行:iyy

删除当前行:dd

删除当前行向下的iidd

在文件中查找某个单词(命令模式)敲/,回车查找,输入n就是查找下一个

设置文件的行号(:进入命令模式):命令行下set nu

取消文件的行号:set nonu

使用快捷键到该文档的最末行[G]和最首行[gg](一般模式下)

在一个文件中输入"hello"然后又撤销这个动作,一般模式下按u

立即关机:shutdown -h now

一分钟后关机:shutdown -h 1

重启计算机:reboot

获取帮助信息:man 【命令或配置文件】(按空格显示更多帮助信息)

获取内置命令帮助信息:help 命令

7、用户管理

切换用户:su - 用户名

权限高的用户切换到低权限用户不需要输入密码,反之需要。返回原来用户时,exitlogout

添加用户:useradd 用户名

给用户指定密码:passwd 用户名

显示当前用户所在目录:pwd

删除用户(保留家目录):userdel 用户名

删除用户(删除包括家目录):userdel -r 用户名

查询用户信息:id 用户名

查看当前登录用户:who am i

用户组:系统对有权限的用户同一管理

新增组:groupadd 组名

删除组:groupdel 组名

新增用户直接分组:useradd -g 用户组 用户名

修改用户组:usermod -g 用户组 用户名

8、CentOS7找回root密码

1、启动系统,进入开机页面,按e键进入编辑页面

2、光标向下移动,找到以“Linux16”开头的行数,行末输入init=/bin/sh,接着按ctr+x进入单用户模式。

3、在光标闪烁位置输入:mount -o remount,rw /,完成后回车

4、接着输入passwd,完成后回车,输入密码后回车,再次输入密码。修改成功后会显示passwd……

5、接着在光标位置输入:touch /.autorelabel,完成后回车,等待系统重启,新密码就生效了。

9、文件目录指令

pwd指令

显示当前目录的绝对路径

查看当前目录的所有内容信息:ls 【选项】【目录或文件】
常用选项有:

-a ,查看所有文件和目录包括隐藏文件

-l,以列表形式显示信息

切换目录:cd 【参数】

cd~cd:回到自个家目录

返回当前目录的上一级目录:cd ..

mkdir指令

创建一个目录:mkdir 创建的目录

创建多个目录:mkdir -p /test/one

rmdir指令

删除一级目录:rmdir 删除的空目录

如果删除的目录下有内容,非得删除的话使用:rm -rf 要删除的目录

touch指令

创建空文件:touch 文件名称

cp 【选项】 源文件 目标文件

选项:-r 递归复制整个文件夹

强制覆盖不提示方法:\cp cp -r src dest

移除文件或目录:rm 【选项】要删除的文件或目录

常用选项:

递归删除文件夹:-r

强制删除不提示:-f

用于移动文件与目录或重命名

两个文件同一目录会重命名:mv 旧文件名 新文件名

两文件不同目录会移动:mv 要移动的文件 移动到的位置

cat指令

查看文件内容:cat 【选项】要查看的文件

常用选项:

显示行号:-n

cat只能浏览,不能修改,为浏览方便,一般会带上 管道命令|(|是或符号不是大写i,表示前一个指令结果交给后面的指令处理):|more

例:cat -n /etc/profile | more

more指令

操作功能空格翻页回车向下一行ctr+f向下滚动一屏ctr+b返回上一屏=输出当前行号:f输出文件名和当前行

less指令

less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

分屏查看文件内容:less 要查看的文件

操作功能空格 、pagedown向下翻页pageup向上翻页/子串查找字符串内容,n向下找,N向上找

echo指令

输出内容到控制台:echo 【选项】 【输出内容】

head指令

用于显示文件开头部分内容,默认只显示前10行:head 文件

查看文件头5行:head -n 5[数字] 文件

tail指令

查看文件中尾部的内容,默认显示文件的尾10行内容:tail 文件

查看文件尾5行:tail -n 5[数字] 文件

实时追踪该文档的所有更新:tail -f 文件

指令>和指令>>

输出重定向(覆盖)>,追加>>

将列表内容覆盖写入文件:ls -l > 文件

将列表内容追加写入文件:ls -al >> 文件

将文件1内容覆盖到文件2:cat 文件1 > 文件2

将内容追加到文件:echo 内容 >> 文件

给源文件创建一个链接:ln -s [源文件或目录] [链接名]

history指令

查看所有历史命令:history

查看最近5条命令:history 5

执行历史编号为5的命令:!5

10、日期指令

显示当前日期:date

显示今年:date +%Y

显示当前月份:date +%m

显示当前天数:date +%d

指定格式显示年月日时分秒:date "+%Y-%m-%d %H:%M:%S"

设置日期:date -s 字符串日期

查看日历:cal 【选项】,不指定选项, 默认当前月日历

11、查找指令

1、find指令

find指令从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端。
find [搜索范围] [选项]
常用选项
-name<查询方式>
按照指定的文件名查找模式查找文件
-user<用户名>
查找属于指定用户名所有文件
-size <文件大小n>
按照指定的文件大小查找文件,+n大于,-n小于,n等于,+单位k,M,G

2、locate指令

快速查找指定文件的路径:locate 文件

由于该指令是基于数据库查询,第一次使用必须用updatedb指令创建数据库,

3、which指令

查看指令在哪个目录下:which 指令

4、grep指令

过滤查找:grep 【选项】 查找内容 源文件

-n:显示匹配行和行号

-i:忽略字母大小写

12、压缩解压指令

1、gzip和gunzip指令

压缩文件:gzip 文件,只能将文件压缩为*.gz格式

解压文件:gunzip 需要解压的文件.gz

2、zip和unzip指令

项目打包发布时常用命令

压缩文件:zip 【选项】 XXX.zip

常用选项-r:递归压缩目录

解压文件:unzip 【选项】 XXX.zip

常用选项-d 目录:指定解压后文件存放目录

3、tar指令

既可打包又可解压,打包后文件后缀是.tar.gz

打包目录:tar 【选项】 XXX.tar.gz

常用选项功能-c产生.tar打包文件-z打包同时压缩-x解包.tar文件-v显示详细信息-f指定压缩后的文件名

压缩多文件:tar -zcvf dc.tar.gz /hmoe/bbb/cat.txt /home/bbb/dog.txt

将bbb文件夹压缩成myb.tar.gz:tar -zcvf myb.tar.gz bbb

将文件解压到当前目录:tar -zxvf myb.tar.gz

将myb.tar.gz解压到tom目录下:tar -zxvf myb.tar.gz -C tom

13、Linux组

一个文件有个所有者,所有者又归于一个组。

13.1、所有者和组

所有者:文件谁创建就归谁所有

查看文件所有者:ls -ahl

修改所有者:chown 用户名 文件
在这里插入图片描述
组的创建:groupadd 组名

新增用户直接分组:useradd -g 用户组 用户名

修改文件所在组:chgrp 组名 文件名

其他组:除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
改变用户所在组(需要root的管理权限)

  1. usermod -g 新组名 用户名
  2. usermod -d 目录名 用户名 (改变该用户登陆的初始目录,注意这里的用户需要有进入新目录的权限)

13.2、权限介绍

Is -I中显示的内容如下:
d rwx r-x r-x. 2 root root 53 7月 9 20:08 bbb
0-9位说明
1.第0位确定文件类型(d,-,I,c,b)

d是目录,相当于windows的文件夹
-是普通文件
l是链接,相当于windows的快捷方式
c是字符设备文件,如鼠标,键盘
b是块设备,比如硬盘

2.第1- 3位rwx该文件的所有者拥有该文件的权限。——User
3.第4 - 6位r-x所属组的用户拥有该文件的权限。——Group
4.第7 - 9位r-x其他用户拥有该文件的权限——Other

rwx作用:r表示读,w表示写,x表示可执行(作用到文件是可执行,作用到目录是可进入)

其他说明:

数字2 :文件数和子目录数和

第一个root所有者,第二个root所在组

53:文件大小(字节),如果是文件夹,显示4096字节

7月 9 20:08:文件最后修改日期

13.3、修改权限chmod

方式一:+、一、=变更权限

u:所有者,g:所有组,o:其他用户,a:所有人

给文件的所有者读写执行权限,给所在组读执行权限,给其他用户执行权限:chmod u=rwx,g=rx,o=x 文件/目录名
给其他人增加写权限:chmod o+w 文件/目录名/所有者/所有组

该文件不让所有人执行:chmod a-x 文件/目录名/所有者/所有组

方式二:数字变更权限

r=4,w=2,x=1

chmod u=rwx,g=rx,o=x 文件/目录名 相当于 chmod 751 文件/目录名

13.4、修改文件所有者

改变所有者:chown 改成的所有者 文件/目录

改变所有者和所在组:chown 新所有者:新所有组 文件/目录

14、定时任务调度

任务调度:系统在某个时间执行特定的命令或程序。

14.1、任务调度分类

1.系统工作:某些重要工作周而复始的进行,如病毒查杀

2.个别用户工作:个别用户执行某些程序,如打开qq

定时任务的设置:crontab [选项]

选项功能-e编辑crontab定时任务-l查询当前任务调度-r删除当前用户所有的定时任务

14.2、重启任务调度

service crond restart

crontab -e 回车然后输入 */1 * * * * ls

*号位置含义第一个一小时当中的第几分钟(分钟)第二个一天当中的第几小时(小时)第三个一月当中的第几天(天)第四个一年中第几个月(月)

| 第五个 | 一周当中的星期几
范围0-7 ( 0和7都代表星期日) |

特殊符号说明

特殊符号含义*表示任何时间,比如第一个*,表示一小时每分钟执行一次,表示不连续时间,比如“0 8,10 * * * * 命令”,表示每天8点0分,10点0分执行一次命令-表示连续的时间范围,比如“0 2 * * 1-6 命令”,表示周一到周六凌晨2点执行命令*/n表示每隔多久执行一次,比如“*/10 * * * * 命令”,表示没10分钟执行一次命令

特定时间执行案例
在这里插入图片描述

14.3、at定时任务

at命令是一次性定时计划任务 ,at的守护进程atd会以后台模式运行,检查作业队列来运行。默认情况下, atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间四配,则运行此作业。at命令只执行一次。
在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看

检测当前进程有哪些:ps -ef

检测acd进程是否在运行:ps -ef | grep atd

命令格式:at 【选项】【时间】,ctr+d结束at命令输入

选项功能-m当指定的任务被完成后,将给用户发送邮件,即使没有标准输出-Iatq(显示系统中待执行的任务列表)的别名-datrm(删除待执行任务队列中的任务)的别名-v显示任务将被执行的时间-V显示版本信息-c打印任务的内容到标准输出-q 队列使用指定的队列-f 文件从指定文件读入任务而不是从标准输入读入-t 时间参数以时间参数的形式提交要运行的任务

14.4、at指定时间的方式

1、hh:mm(小时:分钟)24小时制指定时间,如果该时间已过,会放到第二天执行。

2、使用midnight (深夜), noon (中午), teatime (饮茶时间,一般是下午4点)等模糊词来指定时间。
3、采用12小时计时制,即在时间后面加上am (上午)或pm (下午)来说明是上午还是下午。
4、指定命令执行的具体日期,指定格式为month day(月日)或mm/dd/yy (月/日/年)或dd.mm.yy
(日.月.年) ,指定的日期必须跟在指定时间的后面。 例如: 09:00 2021-07-1
5、使用相对计时法。指定格式为: now + count time- units , now就是当前时间, time-units是时间单位,这里能够是minutes、hous、days、weeks。count是时间的数量,几天,几小时。例如 : now + 5 minutes
6、直接使用today (今天)、tomorrow (明天)来指定完成命令的时间。

例1:一天后凌晨12点执行 /bin/ls /home

at 12am + 1 day,然后输入/bin/ls /home,接着ctr+d

例2 : atq命令来查看系统中没有执行的工作任务
在这里插入图片描述

例3 : 2分钟后,输出时间到指定文件内比如/root/date200.log
在这里插入图片描述
例4 :删除已经设置的任务, atrm 编号

atrm 1

15、Linux磁盘分区

15.1、分区原理

Linux来说无论有几个分区,分给哪一目录使用,归根结底就只有一个根目录,一个独立且唯一的
文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
Linux采用了一种叫“载入的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一
个分区和一个目录联系起来。一个分区挂载一个目录。

15.2、硬盘说明

1.Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
2.对于IDE硬盘,驱动器标识符为"hdx~" ,其中"hd" 表明分区所在设备的类型,这里是指IDE硬盘。“x"为盘号( a为基本盘, b为基本从属盘,c为辅助主盘,d为辅助从属盘)。~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。
3.对于SCSI面则标识为"sdx~” , SCSI硬盘是用"sd" 来表示分区所在设备的类型的,其余的和IDE硬盘的表示方法一样。

查看设备挂载情况:lsblk或lsblk -f
在这里插入图片描述

查询磁盘使用情况:df -h 【/目录】,不写目录默认查询当前目录

统计/opt下文件个数:ls -l /opt | grep "^-" | wc -l(^-是以-开头的文件,wc统计个数)

统计/opt下目录个数:ls -l /opt | grep "^d" | wc -l

统计/opt文件夹下文件的个数,包括子文件夹里的:ls -lR /opt | grep "^-" | wc -l

统计/opt文件夹下目录的个数,包括子文件夹里的:ls -lR /opt | grep "^d" | wc -l

以树状显示目录结构:tree 目录,注意默认是没有安装tree的,安装要root权限,安装tree命令:yum install tree

16、网络配置

IP地址配置

1、自动获取

2、指定IP地址,避免虚拟机因自动获取IP造成地址变更,导致找不到

修改指定IP命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改内容如下

BOOTPROTO=static
#IP地址
IPADDR=192.168.200.66
#网关
GATEWAY=192.168.200.2
#域名解析器
DNS1=192.168.200.2

虚拟机改完IP地址后,vmnet8也要修改在同一网段192.168.200.X,只有在同一网段中才能ping通。

虚拟机工具栏下》编辑》虚拟网络编辑器》修改子网IP》应用》确定
在这里插入图片描述
重启网络服务或重启Linux系统生效:service network restart 或 reboot

查看主机名:hostname

修改主机名:vim /etc/hostname,之后需要reboot重启生效

设置hosts映射

设置目的是为了通过主机名来ping通

Windows下:找到C:\Windows\System32\drivers\etc\hosts 文件指定即可,

指定内容:192.168.200.200 smile200

Linux下:/etc/hosts 文件指定,内容:192.168.200.200 smile

17、进程管理

程序:静态的,是躺在硬盘上。

进程:动态的,程序运行在内存中就是进程。

线程:进程的不同执行路径。

每个进程都可能以两种方式存在的。前台和后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。

17.1、查看当前系统中哪些进程正在执行

ps  【选项】

PS -aux执行后,参数含义
在这里插入图片描述

USER 用户

PID 进程号

%CPU 执行命令时候进程占用的CPU

%MEM 执行命令时候进程占用的CPU

VSZ 进程占用虚拟内存的大小(单位kb)

RSS 进程占用物理内存的大小(单位kb)

TTY 终端机号

STAT 运行状态

​ R: 正在运行

​ S:睡眠

​ D:短期等待

​ T:被跟踪或者被停止

​ Z:僵死进程(进程可能死掉,没有释放)

​ s:该进程是会话的先导进程

​ +:该进程为前台进程

​ l:该进程是多线程进程

​ N:低优先级进程

​ <:高优先级进程

​ []:表示这个一个内核线程

START 执行开始的时间

TIME 进程消耗cpu的时间

COMMAND 进程名,执行该进程的指令

全格式显示所有进程,查看父进程:ps -ef

UID:用户名

PPID:父进程

C : CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;
数值越小,表明进程是I/O密集型运算,执行优先级会提高

STIME:进程启动时间

CMD:启动进程所用命令和参数

其余和上面一样

选项功能-a显示当前终端的所有进程信息-u以用户的格式显示进程信息-x显示后台进程运行的参数-e显示所有进程-f全格式

17.2、终止进程

kill 【选项】 进程号

killall 进程名称

常用选项:-9:强迫进程立即停止

17.3、查看进程树

pstree 【选项】
常用选项
-p :显示进程的PID
-u :显示进程的所属用户

17.4、服务管理

service管理指令

service 服务名 [start I stop | restart | reload | status]
在CentOS7.0后很多服务不再使用service ,而是systemctl
查看服务名
查看全部系统服务:setup

带*号的服务是自动启动的,光标移至 * 号,按空格就会删除,按tab键进行切换。
在这里插入图片描述
查看service指令管理的服务:ls -l /etc/init.d

17.5、指定运行级别

CentOS7后运行级别说明
指定运行级别:init 数字0-6,常用运行级别是3和5

0:关机
1:单用户(找回丢失密码用)
2:多用户状态无网络
3:多用户状态有网络
4:系统未使用保留给用户
5:图形界面
6:虚拟机重启

在/etc/initab进行了简化, 如下:
multi-user.target: analogous to runlevel 3
graphical.target : analogous to runlevel 5

查看当前的运行级别是什么:systemctl get-default

修改运行级别:systemctl set-default multi-user.target

17.6、chkconfig指令

查看服务:chkconfig --list [| grep xxx]

给服务在指定的运行级别下设置开关:chkconfig --level 5 服务名 on/off

注意:使用了chkconfig指令服务自启或关闭,需要reboot重启生效

17.7、systemctl指令

语法:systemctl 服务名 [start I stop | restart | reload | status]

查看管理的服务:ls -l /usr/lib/systemd/system

systemctl设置服务的自启动状态

  1. systemctl list-unit-files [ I grep服务名] (查看服务开机启动状态)

  2. systemctl enable 服务名(设置服务开机启动)

  3. systemctl disable 服务名(关闭服务开机启动)

  4. systemctl is-enabled 服务名(查询某个服务是否是自启动的)

例:查看当前防火墙的状况,关闭防火墙和启动防火墙

1.systemctl status firewalld.service

2.systemctl stop firewalld.service

3.systemctl start firewalld.service

17.8、防火墙

在这里插入图片描述

防火墙打开情况下,xshell6访问Linux需要打开22端口号,不然访问不到。防火墙关闭后,xshell6可以直接访问,不需要打开端口号。

打开或者关闭指定端口
在真正的生产环境,往往需要将防火墙打开,但此时外部请求数据包却不能跟服务器监听端口通讯。这时需要打开指定的端口,比如80、22、 3306等。

17.8.1、firewall指令

打开端口: firewall-cmd --permanent --add-port=端口号/协议
关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
重新载入才能生效: firewall-cmd --reload
查看所有开放端口:firewall-cmd --zone=public --list-port
查询端口是否开放: firewall-cmd --query-port=端口/协议

17.9、动态监控进程

top与ps命令相似,都是用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。

指令:top 【选项】

选项功能-d 秒速指定top命令每隔几秒更新,默认3秒-i使top不显示任何闲置或者僵死进程-P通过指定监控进程ID来仅仅监控某个进程的状态

在这里插入图片描述

交互操作说明

操作功能P以CPU使用率排序,从大到小,默认就是此项M以内存的使用率排序,从大到小N以PID排序,从大到小Q或q退出top

例1:监视特定用户,比如我们监控tom用户
top命令下,输入“u"回车,再输入用户名,输错可按向下键清空。
例2 :终止指定的进程
top命令下,输入"k"回车,再输入要结束的进程ID号

18、rpm和yum

18.1、rpm

rpm用于下载包的打包及安装工具,它生成具有.rpm扩展名的文件。RPM是RedHat Package Manager ( RedHat软件包管理工具)的缩写,类似windows的setup.exe。

查询所有安装rpm软件包:rpm -qa

查询软件包是否安装:rpm -q 软件包名

查询软件包信息:rpm -qi 软件包名

查询软件包中的文件:rpm -ql 软件包名

查询文件所属的软件包:rpm -qf 文件全路径名

卸载软件包:rpm -e 软件包

安装软件包:rpm -ivh 安装的全路径

18.2、yum

yum是个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

查询yum服务器是否有需要安装的软件:yum list l grep xx软件列表

安装指定的yum包:yum install xx下载安装

19、Java环境安装

19.1、jdk安装

安装步骤
1、创建jdk文件夹:mkdir /opt/jdk
2、通过xftp传输Linux版本的jdk安装包到/opt/jdk目录下
3、进入jdk目录:cd /opt/jdk
4、解压jdk安装包:tar -zxvf jdk-8u261-linux-x64.tar.gz
5、创建java文件夹:mkdir /usr/local/java
6、移动jdk安装文件:mv /opt/jdk/jdk1.8.0_261/ /usr/local/java/
7、配置环境变量:vim /etc/profile
8、在profile文末添加

export JAVA_HOME=/usr/local/java/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH

9、让编辑过的环境变量生效:source /etc/profile

19.2、Tomcat安装

1、新建tomcat目录:mkdir /opt/tomcat

2、通过xftp传输Linux版本的tomcat安装包到/opt/tomcat目录下

3、进入tomcat目录:cd /opt/tomcat

4、解压tomcat安装包:tar -zxvf apache-tomcat-8.5.69.tar.gz ,下载core核心包地址https://tomcat.apache.org/download-80.cgi
5、进入tomcat的bin目录:cd apache-tomcat-8.5.69/bin,启动tomcat:./startup.sh
6、开放端口8080

防火墙打开8080端口号:firewall-cmd --permanent --add-port=8080/tcp

重新载入生效:firewall-cmd --reload

测试是否打开端口号:firewall-cmd --query-port=8080/tcp

也可以通过虚拟机ip地址:8080/,查看是否可以登录tomcat首页。

19.3、MySQL安装

1、新建mysq文件夹,并进入:mkdir /opt/mysql

2、Xftp将安装包传输到/opt/tomcat目录下,

下载地址 https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar,

或直接执行:wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

3、进入tomcat目录:cd /opt/mysql

4、解压tomcat安装包:tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

5、查询mariadb: rpm -qa | grep mari。注意centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除。

5、卸载mariadb:rpm -e --nodeps mariadb-libs ,rpm -e --nodeps marisa

6、开始安装mysql

rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm 
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm 

7、启动服务:systemctl start mysqld.service

8、开始设置root密码

Mysql自动给root用户设置随机密码,运行grep “password” /var/log/mysqld.log可看到当前密码
在这里插入图片描述
运行mysql -u root -p,复制粘贴输入上述密码

开发环境中密码要复杂,平时自己用就设简单密码,避免不能输入简单需修改设置策略,默认值为1,带分号输入。

mysql密码设置有三种策略:0策略密码设置最低8位,1策略要求长度,数字,大小写,特殊符号,3策略在2的基础上还多了个字典文件。

set global validate_password_policy=0;

最后开始设置密码,带分号

set password for 'root'@'localhost' = password('root6666');

9、运行如下命令使密码生效

flush privileges;

20、Shell编程

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

20.1、Shell脚本执行方式

  • 脚本格式要求

    脚本以#!/bin/bash开头,需要可执行权限

例:创建shell脚本,输出hello world
在这里插入图片描述
在这里插入图片描述

  • 常用执行方式

    方式1:输入脚本的绝对路径或相对路径(./xxx.sh)
    说明:首先要赋予hello.sh脚本的 +x权限,再执行脚本

    方式2:sh+脚本
    说明:不用赋予脚本 +x权限,直接执行即可。
    在这里插入图片描述

20.2、shell变量

介绍
1)Linux Shell中的变量分为系统变量和自定义变量。
2)系统变量: $HOME等
3)显示当前shell中所有变量: set
shell变量的定义
基本语法

  1. 定义变量:变量名=值

  2. 撤销变量: unset 变量

  3. 声明静态变量 : readonly 变量,静态变量不能unset

变量定义实操

#!/bin/bash
#定义变量A
A=100
#输出变量需加上$
echo A=$A
echo "A=$A"
#撤销变量,变量A便没了
unset A
echo A=$A
#声明静态的变量B=2
readonly B=2
echo "B=$B"
C=`date`
D=$(date)
echo C=$C
echo D=$D

定义变量的规则
1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
2.等号两边不能有空格
3.变量名称一般习惯为大写,这是一个规范,虽然小写也可运行。

将命令的返回值赋给变量

A=`date`反引号,运行里面的命令,并把结果返回给变量A,如果没有反引号表示的是将单词date给A
A=$(date)等价于上面的语句

20.2.1、设置环境变量(全局变量)

export 变量名=变量值 (功能描述:将shell变量输出为环境变量)
source 配置文件 (功能描述:让修改后的配置信息立即生效)
echo $变量名 (功能描述:查询环境变量的值)
案例
在/etc/profile文件中定义TOMCAT_ HOME环境变量,profile文件修改后,需刷新生效

vim /etc/profile
输入如下内容
#定义一个tomcat环境变量
export TOMCAT_HOME=/opt/tomcat
保存退出
刷新profile
source /etc/profile

查看环境变量TOMCAT HOME的值

echo $TOMCAT_HOME

shell多行注释

:<<!
注释内容
!

20.2.2、位置参数变量

当我们执行一个shell脚本时 ,如果希望获取到命令行的参数信息,就可以使用到位置参数变量

  • $n ( 功能描述: n为数字, $0代表命令本身,$1-$9代表第一到第九个参数, 10以上的参数需要用大括号包含,如${10}
    $* (功能描述:命令行中所有的参数,$*把所有参数看成一个整体)
    $@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待,分别输出)
    $# (功能描述:命令行中所有参数的个数)
    

案例:编写一个shell脚本position.sh,在脚本中获取到命令行的各个参数信息。

vim myshell.sh
输入如下内容
#!/bin/bash
echo "0=$0 1=$1 2=$2"
echo "所有的参数=$*"
echo "$@"
echo "参数的个数=$#"
sh myshell.sh 10 20

在这里插入图片描述

20.2.3、预定义变量

含义:事先定义好的变量,直接在脚本中使用

$$(功能描述:当前进程的进程号(PID)
$! (功能描述:后台运行的最后一个进程的进程号( PID) )
$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一 个命令正确执行;
    如果这个变量的值为非0 (具体是哪个数,由命令自己来决定), 则证明上一个命令执行不正确了。)

应用实例
在一个shell脚本中简单使用一下预定义变量

vim preVar.sh 
输入内容
#!/bin/bash
echo "当前进程的进程id=$$"
#以后台方式运行脚本,并获取进程ID
/root/shcode/myshell.sh &
echo "最后一个进程的进程号id=$!"
echo "将执行结果返回=$?"

20.3、运算符

$((表达式))或 $[表达式] 或expr m + n
注意expr(expression表达式简写)运算符间要有空格,m,n为数字。
希望某个结果赋值给变量,使用``反引号,单引号就相当于字符串拼接
expr m - n
expr \*(乘),/(除),%(取余)
#!/bin/bash
#案例1:计算(2+3)*4的值
#方式1
RES1=$(((2+3)*4))
echo "res1=$RES1"
#方式2,推荐使用
RES2=$[(2+3)*4]
echo "res2=$RES2"
#方式3
TEMP=`expr 2 + 3`
RES3=`expr $TEMP \* 4`
echo "temp=$TEMP"
echo "res3=$RES3"
#案例2:请求出命令行的两个参数的和
SUM=$[$1+$2]
echo "sum=$SUM"

在这里插入图片描述

20.4、条件判断

判断语句基本语法
[ condition ] (注意condition前后要有空格)
#非空返回true ,可使用$?验证( 0为true , > 1为false )

应用实例
[ smile ] ,返回true
[ ],返回false
[ condition ] && echo OK II echo notok,条件满足,执行后面的语句

常用判断条件

1)=字符串比较
2)两个整数的比较
-It 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
3)按照文件权限进行判断
-r 有读的权限
-w 有写的权限
-x 有执行的权限
4)按照文件类型进行判断
-f 文件存在并且是一 个常规的文件
-e 文件存在
-d 文件存在且是一个目录

20.5、流程控制

20.5.1、if使用

#单分支
if [ 条件判断 ]
then
代码
fi

#多分支
if [ 条件判断 ]
then
代码
elif [ 条件判断 ]
then
代码
fi

注意事项:[ 条件判断 ],中括号和条件之间必须有空格

#!/bin/bash
#如果输入的参数,大于等于60,则输出及格了,如果小于60,则输出不及格
if [ $1 -ge 60  ]
then  
        echo  "及格了"
elif [ $1 -lt 60  ]
then
        echo "不及格"
fi

在这里插入图片描述

20.5.2、case语句

case $变量名 in
"值1")
如果变量的值等于值1 ,则执行程序1
;;两分号代表结束
"值2")
如果变量的值等于值2,则执行程序2
;;
其他分支
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
#!/bin/bash
#当命令行参数是1时,输出"周一"是2时,就输出"周二”,其它情况输出"other" 
case $1 in
"1")
        echo "周一"
;;
"2")
        echo "周二"
;;
*)
        echo “other”
;;
esac

在这里插入图片描述

20.5.3、for使用

语法1:
for 变量 in 值1 值2 ...
do
代码
done

语法2:
for (( 始值;循环控制条件;量变化 ))
do
代码
done

案例1:打印命令行输入的参数

#!/bin/bash
#$*输出方式  
for i in "$*"
do 
        echo "num is $i"
done
#$@方式
echo "==========="
for j in "$@"
do 
        echo "num is $j"
done

案例2:从1加到100的值输出显示

#!/bin/bash
SUM=0
for(( i=1; i<=100; i++  ))
do
SUM=$[$SUM+$i]
done
echo "sum=$SUM"

20.5.4、while使用

while [ 条件判断式 ]
do
代码
done

案例:从命令行输入一个数n,统计从1+……n的值是多少?

#!/bin/bash
SUM=0
i=0
while [ $i -le $1 ]
do
        SUM=$[$SUM+$i]
        i=$[$i+1]
done
echo "结果=$SUM"

20.5.5、read读取控制台输入

基本语法
read [选项] [参数]
选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒), 如果没有在指定的时间内输入,就不再等待。
参数
变量:指定读取值的变量名
应用实例

#!/bin/bash
#案例1 :读取控制台输入一个num1值
read -p "请输入指定的num1=" NUM1
echo "输入的num1=$NUM1"
#案例2 :读取控制台输入一个num2值,在5秒内输入
read -t 5 -p "请输入num2=" NUM2
echo "输入的num2=$NUM2"               

在这里插入图片描述

20.6、函数

系统函数
basename基本语法

basename [pathname] [suffix](功能:返回完整路径最后/的部分,常用于获取文件名)
basename [string] [suffix]  (功能:basename命令会删掉所有的前缀包括最后一个/,然后将字符串显示出来)
suffix为后缀,如果suffix被指定了, basename会将pathname或string中的suffix去掉。

dirname基本语法

dirname 文件绝对路径 (功能描述:绝对路径中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

自定义函数

[function] funname (参数){
  Action;
  [return int;]
}
[]表示可有可无
调用直接写函数名: funname [值]
#!/bin/bash
#案例:计算输入两个参数的和,getSum
function getSum(){
        sum=$[$n1+$n2]
        echo "和是=$sum"
}
#输入两个值
read -p "第一个值=" n1
read -p "第二个值=" n2
#调用函数
getSum $n1 $n2

在这里插入图片描述

20.7、数据备份案例

需求分析
1.每天凌晨2:30备份数据库smile到/data/backup/db
2.备份开始和备份结束能够给出相应的提示信息
3.备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如: 2021-07-15 230201.tar.gz
4.在备份的同时,检查是否有7天前备份的数据库文件,如果有就将其删除。

vim /usr/sbin/mysql_db_backup.sh 内容如下

#!/bin/bash
#备份目录
BACKUP=/data/backup/db
#当前时间
DATATIME=$(date +%Y-%m-%d_%H%M%S)
#数据库地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=root6666
#备份的数据库名
DATABASE=smile
#创建备份目录,不存在就创建
[ ! -d "${BACKUP}/${DATATIME}" ] && mkdir -p "${BACKUP}/${DATATIME}"
#备份数据库
echo "开始备份数据库${DATABASE}"
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATATIME}/$DATATIME.sql.gz
#将备份文件夹处理成.tar.gz的格式
cd ${BACKUP}
tar -zcvf $DATATIME.tar.gz ${DATATIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATATIME}
#删除7天前的备份
find ${BACKUP} -atime +7 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库${DATABASE}成功"

命令行敲crontab -e ,接着输入如下内容

30 2 * * * /usr/sbin/mysql_db_backup.sh

在这里插入图片描述

效果图
在这里插入图片描述

21、日志管理

21.1.系统常用日志

标红的是重点
在这里插入图片描述

日志管理服务rsyslogd

CentOS7.6日志服务是rsyslogd , CentOS6.x 日志服务是syslogd。rsyslogd 功能更强大,和syslogd兼容。

查询rsyslogd服务是否启动:ps aux | grep "rsyslog" | grep -v "grep"
grep -v "grep"表示反向选中前面过滤的内容

查询rsyslogd服务的自启动状态(enable)
systemctl list-unit-files | grep rsyslog

配置文件: /etc/rsyslog.conf

编辑文件时的格式为:*.* ,存放日志文件
其中第个*代表日志类型,第二个代表日志级别

日志类型分为

auth					##pam产生的日志
authpriv				##ssh、ftp等登录信息的验证信息
corn					##时间任务相关
kern					##内核
Ipr						##打印
mail					##邮件
mark(syslog)-rsyslog	##服务内部的信息 ,时间标识
news					##新闻组
user					##用户程序产生的相关信息
uucp 					##unix to nuix copy主机之间相关的通信
local 1-7				##自定义的日志设备

日志级别分为

debug		##有调试信息的,日志通信最多
info		##一般信息日志 ,最常用
notice		##最具有重要性的普通条件的信息
warning		##警告级别
err			##错误级别,阻止某个功能或者模块不能正常工作的信息
crit		##严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert		##需要立刻修改的信息
emerg		##内核崩溃等重要信息
none		##什么都不记录
注意:从上到下,级别从低到高,记录信息越来越少

日志文件格式有4列信息

1.事件产生的时间
2.产生事件的服务器的主机名
3.产生事件的服务名或程序名
4.事件的具体信息
在这里插入图片描述

21.2、自定义日志

自定义日志添加在/etc/rsyslog.conf ,编辑内容如图
在这里插入图片描述

21.3、日志轮替

日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除。

日志轮替文件命名

1)centos7使用logrotate进行日志轮替管理,要想改变日志轮替文件名字,通过/etc/logrotate.conf配置文件中"dateext" 参数:
2)如果配置文件中有"dateext" 参数,那么日志文件以日期后缀 ,例如"secure-20210716"。此时不会重名,只需要指定保存日志个数,删除多余的日志文件即可。
3)如果配置文件中没有"dateext" 参数,那么日志文件就需要改名。当第一次进行日志轮替时,当前"secure"日志会自动改名为"secure.1",然后新建”secure"日志,用来保存新日志。当第二次进行日志轮替时,” secure.1”会自动改名为"secure.2" ,当前的"secure" 日志会自动改名为"secure.1”, 然后也会新建"secure"日志,用来保存新的日志,以此类推。

4、查看内存日志

journalctl		##查看全部
journalctl -n 3 ##查看最新3条
journalctl --since 19:00 - until 19:10:10 #查看起始时间到结束时间的日志可加日期
journalctl -p err ##报错日志
journalctl -o verbose ##日志详细内容
journalctl_PID=1245 COMM=sshd ##查看包含这些参数的日志 (在详细日志查看)
或者journalctl| grep sshd
注意: journalctl查看的是内存日志,重启清空

22、数据备份和恢复

安装dump和restore

yum -y install dump
yum -y install restore

使用dump备份

  • 基本介绍
    dump支持分卷和增量备份(所谓增量备份是指备份上次备份后修改/增加过的文件,也称差异备份)。

  • dump语法说明

    dump [ cu] [-123456789] [ -f <备份后文件名>] [-T <日期>] [ 目录或文件系统]
    dump []-wW
    -C :创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头。
    -0123456789 :备份的层级。0为最完整备份,会备份所有文件。若指定0以上的层级,则备份至上一次备份以来
    修改或新增的文件,到9后,可以再次轮替。
    -f <备份后文件名> :指定备份后文件名
    -j :调用bzlib库压编备份文件,也就是将备份后的文件压缩成bz2格式,让文件更小
    -T <日期> : 指定开始备份的时间与日期
    -u :备份完毕后,在/etc/dumpdares中记录备份的文件系统,层级,日期与时间等。
    -t :指定文件名,若该文件已存在备份文件中,则列出名称
    -W :显示需要备份的文件及其最后一次备份的层级,时间,日期。
    -w :与-W类似,但仅显示需要备份的文件。
    

dump案例
案例1
将/boot分区所有内容备份到/opt/boot.bak0.bz2文件中,备份层级为"0"

dump -0uj -f /opt/boot.bak0.bz2 /boot

案例2
在/boot目录下新增文件,备份层级为"1”(只备份上次使用层次"0"备份后发生过改变的数据)

dump -1uj -f /opt/boot.bak1.bz2 /boot

dump备份文件或者目录
在备份分区时,是可以支持增量备份的。但如果备份目录或文件,不再支增量备份即只能使用0级别备份。
案例3
使用dump备份/etc整个目录

dump -0j -f /opt/etc.bak.bz2 /etc/

使用restore恢复数据

基本介绍
restore命令用来恢复已备份的文件,可以从dump生成的备份文件中恢复原文件
restore基本语法

restore [模式选项] [选项]
说明下面四个模式,不能混用,在一次命令中,只能指定一种。
-C:使用对比模式,将备份的文件与已存在的文件相互对比。
-i:使用交互模式,在进行还原操作时, restors指令将依序询问用户
-r:进行还原模式
-t:查看模式,看备份文件有哪些文件

选项
-f <备份设备>:从指定的文件中读取备份数据,进行还原操作

案例1:restore命令比较模式,比较备份文件和原文件的区别

restore -C -f boot.bak1.bz2 //注意和最新的文件比较

案例2:restore命令查看模式,看备份文件有哪些数据/文件

restore -t -f boot.bak0.bz2

案例3
restore命令还原模式注意细节:如果你有增量备份,需要把增量备份文件也进行恢复,有几个增量备份文件就要恢复几个,按顺序来恢复即可。

mkdir /opt/boottmp
cd /opt/boottmp
restore -r -f /opt/boot.bak0.bz2 //恢复到第1次完全备份状态
restore -r -f /opt/boot.bak1.bz2 //恢复到第2次增量备份状态

23、Linux可视化管理

23.1、webmin安装

基本介绍
Webmin是功能强大的基于Web的Unix/linux系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理操作。

1.创建webmin文件夹
	mkdir /opt/webmin
2.进入webmin
	cd /opt/webmin
3.下载webmin包
	wget http://download.webmin.com/download/yum/webmin-1.700-1.noarch.rpm
4.安装: rpm -ivh webmin-1.700-1.noarch.rpm
5.重置密码:/usr/libexec/webmin/changepass.pl /etc/webmin root webminroot
	root是webmin的用户名,不是OS的,这里就是把webmin的root用户密码改成了webminroot
6.修改webmin服务的端口号 (默认是10000,出于安全目的修改端口号)
	vim /etc/webmin/miniserv.conf
	修改端口
	将port=10000修改为其他端口号,如port=6868
	将listen=10000修改为listen=6868
7.重启webmin
	/etc/webmin/restart#重启
	/etc/webmin/start #启动
	/etc/webmin/stop #停止
6.防火墙打开6868端口
	#配置防火墙开放666端口
	firewall-cmd --zone=public --add-port=6868/tcp --permanent 
 	#更新防火墙配置,生效
	firewall-cmd --reload
	#查看已经开放的端口号
	firewall-cmd --zone=public --list-ports
7.登录webmin
http://ip:6868可以访问了
用root账号和重置的新密码webminroot登录

1.1webmin修改成中文版
在这里插入图片描述
在这里插入图片描述

23.2、BT宝塔安装

bt宝塔介绍

bt宝塔Linux面板是提升运维效率的服务器管理软件,支持键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等多项服务器管理功能。

执行以下代码进行安装宝塔6.9.9免费版。宝塔6.9.9版本已经很稳定了,推荐大家直接安装6.9.9版本(注意:宝塔linux6.0版本是基于centos7开发的,务必使用centos7.x 系统)

创建bt文件夹
mkdir /opt/bt
进入bt安装目录
cd /opt/bt
执行安装命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

注意如果之前安装过mysql服务,此时安装需要输入yes强制安装,不要写y
在这里插入图片描述
安装完成后显示如下界面

外网面板地址: http://183.250.125.184:8888/12006102
内网面板地址: http://192.168.200.66:8888/12006102
username: svxkakvi
password: 67cb896d

在这里插入图片描述
如果bt的用户名,密码忘记了,使用bt default可以查看


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK