liunx学习笔记

Linux 学习阶段

  1. 基础命令阶段

    1. 各个配置、网络配置,用户配置
    2. 开发环境搭建,如:javaee PYthon
    3. 基本 shell 脚本【重点】
    4. 安全设置
    5. 深入理解 Linux 内核【重点】

Linux 应用领域:

  1. 项目部署
  2. 嵌入式
  3. 运维
  4. 服务器

Linux 常用发型版本

乌班图、CentOS、红帽

Linux 分区

Linux 主要分区:文件系统 ext4

  1. boot 分区(引导分区) 大小 1G

    1. 交换分区(虚拟内存) 和内存大小一致
    2. 根分区

虚拟机 Linux 中安装 VMtools

  1. 进入 CentOS
  2. 点击 VM 菜单的 -> install vmware tools
  3. CentOs 会出现一个 VM 的安装包
  4. 拷贝到 /opt
  5. 使用解压命令 tar,得到一个安装文件cd /opttar -zxvf xx.tar.gz
  6. 进入 vm 解压的目录,cd vmware..
  7. 安装./vmwaee-install.pl
  8. 全部使用默认设置即可,就可以安装成功

注意:安装 vmtools,需要有 gcc 支持 ,GCC 检查命令gcc -v

9. 然后虚拟机中点击该系统,设置->选项->共享文件夹->点击总是开启->选择文件夹即可
10. 在CentOS里如何找到共享文件夹目录是:`/mnt/hgfs/共享文件夹`

Linux 基础目录

  1. /bin:装有常用的指令

  2. /sbin:存放系统管理员使用的系统管理程序命令

  3. /home:存放普通用户的主目录,在 linux 中一个用户就会在该目录下创建一个与用户名相同的文件夹

  4. /root:系统管理员主目录

  5. /lib:系统开机所需要的基本的动态链接库

  6. /lost+found:这个目录一般是空的,当系统非法关闭后,这里就存放一些文件

  7. /etc:所有系统管理所需要的配置文件和子目录 my.conf

  8. /usr:这是一个非常重要的目录,用户的很多应用程序和文件都会放在这个目录下。类似 windows 下的 program files 目录

  9. /boot:存放启动 Linux 时使用的一些核心文件,包括一些连接文件和镜像文件

  10. /proc:虚拟目录,是系统内存的映射,访问这个目录来获取系统信息

  11. /srv:service 缩写,该目录存放一些服务启动之后需要提取的数据

  12. /sys:这是 linux2.6 内核的一个很大变化,该目录下安装了 Linux2.6 内核中新出现的一个文件系统 sysfs

  13. /tmp:这个目录是存放一些临时文件的

  14. /dev:类似于 windows 的设备管理器,所有硬件用文件形式存储

  15. /media:linux 系统会自动识别一些设备,如 U 盘,光驱,识别后会把设备挂载到该目录下

  16. /mnt:系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将外部的存储挂载到/mnt上,然后进入该目录就可以查看内容了。

  17. /opt:这是给主机额外安装软件所存放的目录,如 ORACLE 数据库就可以放到该目录下。默认为空

  18. /usr/local:这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装程序

  19. /var:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件

  20. /selinux:SELinux 是一种安全子系统,它能控制程序只能访问特点文件,有三种工作方式

vim 基本使用

三种模式

插入模式

按下i进入插入模式

正常模式

vim 打开文件后进入的就是正常模式,通过 esc 或 i 来进入不同的模式

命令模式

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符。比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。

  • x 删除当前光标所在处的字符。

  • : 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动 Vim,进入了命令模式,按下 i,切换到输入模式。命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

基本使用

  1. 拷贝当前行 yy,按p粘贴。拷贝当行下 5 行输入5yy
  2. 删除当前行dd,删除当前行下的 5 行5dd
  3. 在文件中查找,在正常模式下输入/你要查找的内容,n 是下一个
  4. 设置文件的行号,取消文件的行号,命令分别是::set nu:set nonu
  5. 跳到最末行G,跳到首行gg
  6. 撤销命令是u,相当于 Ctrl+Z
  7. 光标移动到 20 行,正常模式下:输入 20,然后直接 shift + g

基础命令

关机与重启

shutdown -h now 立刻关机
shutdown -h 1	1分钟后关机
shutdown -r now 立刻重启
reboot 			立刻重启
halt			关机,和上面一样
sync			把内存数据同步到磁盘

注意事项:shutdown 和 reboot 等命令在执行前都已经执行sync命令,但是小心为妙,建立还是在关机或重启的时候使用命令sync

登陆与注销

当需要切换管理用户时,使用命令

su - root  之后就会切换到root用户

当需要退出(注销)用户时,使用命令

logout 注销当前用户

注意事项:logout指令在图形运行时无效,只有在运行级别 3 的时候才有效。

用户管理

用户添加

useradd 用户名

添加用户的时候指定组名

useradd -g 组名 用户名

密码设置

passwd 用户名

用户删除

userdel 用户名		默认不删除该用户的家目录
userdel -r 用户名	删除家目录,但不推荐使用

查询用户

id 用户名

查询当前登录的用户

whoami
who am i

修改用户到用户组

usermod -g 用户组 用户名

用户组

添加用户组

groupadd 组名

删除用户组

groupdel 组名

用户和组相关文件

/etc/passwd 文件

用户 user 配置文件,记录用户的各种信息

每行的含义:用户名: 用户标识号: 组标号: 注释性描述: 生目录: 登陆 Shell

/etc/shadow 文件

口令的配置文件
每行的含土登录名: 加密口令: 最后一次修改时间: 最小时间间隔: 最大时间间隔: 警告时间: 不活动时间: 失效时间: 标志

/etc/group 文件

组 ((group) 的配置文件

录 Linux 包含的组的信息每行含义: 组名: 口令: 组标识号: 组内用户列表

运行级别

运行级别基本介绍

0 关机
1 多用户
2 多用户无网络服务
3 多用户有网络服务
4 系统未使用保留给用户
5 图形界面
6 系统重启

CentOS 进行了简化
multi-user.target: analogous to runlevel 3
graphical.target: analogous to runlevel 5

获取当前级别
systemctl get-default
设置默认级别
systemctl set-default TARGET.target

帮助指令

man 命令或配置文件

help 命令(获取shell内置命令

在 linux 中以点开头的是影藏文件

文件目录指令

pwd 获取当前路径

ls 获取该目录下所有文件
参数 -a 显示所有文件,包括影藏
-l 以列表方式显示信息
-h 以 M、B、G 人类看的显示文件大小

cd 切换路径
cd ~ 进入家目录
cd .. 返回上级目录

mkdir 创建目录
参数 无参 只能创建一个目录
-p 创建多级目录
mkdir -p /home/tom/aaa/bbb

rmdir 删除目录
参数 -r 强制删除
-f 无提示
如果要删除非空目录需要使用rm -rf 目录

touch 创建文件

cp 复制文件
参数 -r 递归复制整个文件夹
将 /home/bbb 整个目录拷贝到 /opt 下 cp -r /home/bbb /opt

rm 删除文件或目录
参数 -r
-f

mv 剪切或重名令文件目录和文件

cat 查看文件内容 一下全显示来
参数 -n 显示行号
通过cat 文件 | more 来分页显示

more 指令以全屏幕方式显示文件内容内置很多指令来操作
参数
Enter 向下 n 行,需要定义。默认为 1 行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用 vi 编辑器
! 命令 调用 Shell,并执行命令
q 退出 more

less 指令,比cat指令更加强大,使用分屏来查看文件内容
参数
空格 向下翻一页
Page Up 向上翻一页
PagedDown 向下翻一页
/ 字符串 向下查找字符串 n 向下 N 向上查找
? 字符串 向上查找字符串 n 向下 N 向上查找
q 退出 less

echo 输出内容到控制台

  1. 输出环境变量 echo $PATH
  2. 打印字符串 echo "hello,world"

head 显示文件开头的部分内容
参数 -n 数值 ,数值是几就显示几行,默认是 10 行

tail 显示文件尾部部分内容
参数 -n 数值,显示尾部几行
作用二:实时监控文件,看到文件变化时,会向控制台打印
tail -f /home/mydata.txt 然后用另一个控制台修改文件就可以监听到了

> 输出重定向 和 >> 追加
重定向:就像echo "Hello"命令 此命令输出到控制台,通过重定向可以写到文件中
如:echo "Hello, world" > /home/mydata.txt
如果使用 >> 那就是追加

ln 软连接指令,类似 win 快捷方式,
使用举例:ln -s /root /home/myroot
myroot 指向 /root 目录
删除的话 rm /home/myroot

history 查看历史使用过的指令
也可以通过!编号重新使用用过的指令

时间日期指令

查看当前时间

date	查看当前时间
date +%Y 查看当前年份
date +%m 查看当前月
date +%d 查看当前日
date "+%Y-%m-%d %H:%M:%S"  显示当前时间如2021-6-14

设置当前时间

date -s "字符串时间"date -s "2021-06-14 18:37:10"

查询当前日历

cal 查看当前月
cal 年份
如 cal 2021 输出 2021 年每月日历

搜索或查找

查找文件或目录

find 搜索范围 选项
参数
	-name 根据文件名查找
	-size 根据文件大小查找
	-user 查看用户名的文件 +n大于 -n小于 单位有K M G
	-atime 根据时间查找

find /home -name hello.txt 在/home目录下查找hello.txt文件包括子目录文件(递归查找)
find /opt -user Tom 在/opt目录下查找所有文件的所属者是Tom的文件
find /opt -size +200M 在/opt目录下查找所有大于200M的文件
find /opt/ -atime +10 -name "*.tar.gz" 查找10天前的以tar.gz后缀的文件

快速获取文件路径

locate指令的原理是 linux 对每一个文件名以及路径存储到数据库中,然后通过 locate 指令快速查找。不过使用该指令前提是需要先更新一下数据库

更新指令updatedb,更新以及创建 locate 数据库

查找hello.txt文件的路径
1. 首先更新以及创建数据库
updatedb
2. 开始查找
locate hello.txt

根据文件内容查找关键字

grep 是一个过滤查找,管道符| 表示将前一个命令处理结果传递给后面的命令
参数	-n 显示行号
	 -i 不区分大小写

使用
cat hello.txt | grep -n "hello"

压缩和解压

gzip/gunzip

gzip 压缩文件,只能压缩文件,不能压缩目录
gzip 文件路径

gunzip 解压文件
gunzip 文件路径

zip/unzip

zip 压缩文件和目录
参数
	-r 递归压缩
unzip 解压
参数
	-d< 目录 > 指定解压后的文件存放目录

tar

tar 是压缩命令,也可以根据参数解压,最后文件格式 XXX.tar.gz 文件

参数
	-c 产生.tar的打包文件
	-v 显示详细信息
	-f 指定压缩后的文件名
	-z 打包同时压缩
	-x 解压.tar文件
	-C 指定解压目录

1. 压缩多个文件 将pig.txt和cat.txt 压缩成pc.tar.gz
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
2. 将home文件夹压缩成myhome.tar.gz
tar -zcvf myhome.tar.gz /home
3. 解压pc.tar.gz到当前目录
tar -zxvf pc.tar.gz
4. 将myhome.tar.gz 解压到opt/tmp2目录下
tar -zxvf myhome.tar.gz -C /opt/tmp2

组管理和权限管理

linux 中每个用户必须属于一个组,不能独立组外。在 Linux 中每个文件有

  1. 所有者
  2. 所在组
  3. 其他组
  4. 改变用户所在组

以上 4 种概念

文件(包括目录)的创建者,谁创建的文件,就自然称为该文件的所有者,同时创建者所在的所在组称为文件的所在组

查看文件所有者

ll
ls -alh

修改文件所有者

chown 用户名 文件
chown Tom hello.txt

组的创建

看用户管理章节

查看文件 / 目录所在组

ll
ls -lah

修改文件 / 目录所在组

chgrp 组名 文件名

其他组

除文件的所有者和所在组的用户外,系统的其他用户就是其他组

权限基本介绍

使用ll 命令,显示内容如下
dr-xr-xr-x.   5 root root 4096 May 21 11:39 boot
0-9位说明
第0位确定文件类型
	l是链接,相当于windows快捷方式
	d是目录,相当于Windows的文件夹
	c是字符设备文件,鼠标,键盘
	b 是块设备,比如硬盘
	-是普通文件
第1-3位是该文件所有者的权限
第4-6位是所属组的权限
第7-9位是其他组的权限

rwx 权限介绍

rwx 作用到文件

  • r 代表可读,查看
  • w 代表可写,但不代表可删除该文件,删除一个文件的前提条件是对该文件所在目录拥有写权限,才能删除该文件
  • x 代表执行权限,可以被执行

rwx 作用到目录

  • r 代表可读
  • w 代表可修改,,对目录内创建 + 删除 + 重命名目录
  • x 代表可以进入该目录

文件及目录权限修改 -chmod

通过 chmod 指令,可以修改文件或目录的权限

方式一:+ - = 变更权限

u 所有者、g 所有组、o 其他人、a 所有人(u、g、o)总和

chmod u=rwx,g=rw,o=r 文件/目录名
chmod o+w 文件/目录名
chmod a-x 文件/目录名

方式二:通过数字更改权限

r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件/目录名
相当于chmod 751 文件/目录名

定时任务

crontab

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

任务调度分类

  1. 系统工作,有些重要的工作必须周而复始执行,如扫毒
  2. 用户需求,如备份 MYSQL 数据库

基本用法

crontab [选项]
参数
	-e 编辑crontab定时任务(创建任务)
	-l 查询crontab任务
	-r 删除当前用户所有的crontab任务
service crond restart 重启任务调度

快速入门

设置任务调度文件:etc/crontab

设置个人任务调度。执行crontab -e命令

接着输入任务

命令要带上路径

crontab -e
*/1 * * * * /usr/bin/ls -lah > /tmp/to.txt

意思是说每小时的每分钟执行ls -lah > /tmp/to.txt 文件中

* 号说明

字段名称 说明 取值范围
第一个“*” 每小时的第几分钟执行 0-59
第二个“*” 每日的第几个小时执行 0-23
第三个“*” 每月的第几天执行 1-31
第四个“*” 每年的第几月执行 1-12
第五个“*” 每周的第几天执行 0-6

特殊符号说明

符号 说明
* 表示任何时刻
, 表示分割
表示一个段,如第二段里: 1-5,就表示 1 到 5 点
/n 表示每个 n 的单位执行一次,如第二段里,*/1, 就表示每隔 1 个小时执行一次命令。也可以写成 1-23/1.

特殊时间举例

at 一次性任务

概述

  1. at 命令是一次性定时计划任务,at 的守护进程 atd 会在后台运行,检查作业队列来运行
  2. 默认情况下,atd 每 60 秒检测一次作业队列,有作业时,如果时间与当前作业时间匹配,则运行作业
  3. 在使用 at 任务的时候,一定要保证 atd 进程在后台执行,可以使用命令查看ps -ef | grep atd
at [选项] [时间]
Ctrl + D 结束at任务命令的输入,输出两次

查询当前没有执行的任务 atq
删除已经创建还没有执行的任务 atrm 编号

选项

选项 含义
-m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I atq 的别名
-d atrm 的别名
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V 显示版本信息
-q< 列队 > 使用指定的列队
-f< 文件 > 从指定文件读入任务而不是从标准输入读入
-t< 时间参数 > 以时间参数的形式提交要运行的任务

at 指定时间的方法

  1. 接受在当前的 hh:mm(小时: 分钟 ) 这种方式的时间指定。假如该时间已过去,那么就第二天执行。
  2. 使用midnight(深夜 ),noon 中午、teatime 一般下午 4 点,等比较模式的词语来指定时间
  3. 采用 12 小时计时,即在时间后面加上 AM(上午)或 PM(下午)来说是上午还是下午。例如12pm
  4. 指定命令执行的具体日期,指定格式为月 日mm/dd/yy(月/日/年)dd.mm.yy(日.月.年)指定的日期必须跟在指定时间的后面。例如04:00 2021-03-01
  5. 使用相对计时法,指定格式为now + count time-unis,now 是当前时间,time-units 是时间单位,这里能够是 minutes 分钟、hous 小时、days 天、weeks 星期。count 是时间的数量,几天,几小时。例如now + 5minutes
  6. 直接使用 today(今天)、tomorrow 明天来制定完成命令的时间

使用举例

  1. 2 天后的下午 5 点执行 /bin/ls /home

    at 5pm + 2days
    at> ls /home
    
  2. 明天 17 点执行

    at 5pm + tomorrow
    at> date > /home/date.txt
    

磁盘分区、挂载

分区原理

  1. Linux 来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个目录,一个独立唯一的文件结构,Linux 中每个分区都是用来组成整个文件系统的一部分。
  2. Linux 采用了一种叫“载入”的处理方法,它的整个文件系统包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入一个分区将使它的存储空间在一个目录下获取

简答的说,Linux 要插入 U 盘、硬盘,步骤就是挂载,让 U 盘与系统中某个目录联系起来,联系起来的过程就叫做挂载。将一个分区和一个目录联系起来

查看所有设备的挂载情况

lsblk 或
lsblk -f 这个命令显示的信息更加详细,文件类型 UUID 挂载点

挂载的流程

如果是一个新的硬盘的话,那么挂载如下

插入新硬盘 -> 建立分区 -> 格式化 -> 挂载 -> 设置自动挂载

插入新硬盘

拿虚拟机举例,添加新硬盘,然后重启系统 reboot

分区

使用命令,查看新插入的硬盘

lsblk -f

拿到新硬盘的名字

然后使用命令进行分区

fdisk /dev/sdb  比如sdb是新硬盘

参数
m 显示命令列表
p 显示磁盘分区,同 fdisk -l
n 新增分区
d 删除分区
w 写入并保存

开始分区后,输入 n,新增分区,然后选择 p,分区类型为主分区,两次回车默认全部空间,之后 w 写入保存

格式化并挂载

格式化磁盘

mkfs -t ext4 /dev/sbd1
说明
ext4 是文件类型
后面的是要格式化的分区

挂载

挂载:将一个分区与一个目录联系起来

mount 设备名称 挂载目录
如:mount /dev/sdb1 /newdisk

卸载挂载

umount 设备名称 或 挂载目录
如:umount /dev/sdb1
   umount /newdisk

以命令行挂载的分区和目录都是一次性的作用,重启后会失效,要想永久挂载,就必须写入文案

永久挂载

写入文件,路径/etc/fstab,然后执行 mount -a即刻生效

如图,可以和上面格式一样的添加,也可以直接写硬盘路径

如:/dev/sdb1 挂载点 文件类型 defaults 00

磁盘情况查询

查询系统整体磁盘使用情况

df -h

查看指定目录的磁盘占用情况

基本语法

du -h
参数
	-s 指定目录占用大小汇总
	-h 带计量单位
	-a 含文件
	--max-depth=1 子目录深度
	-c 列出明细的同时,增加汇总值

磁盘情况 - 工作使用指令

1. 统计/opt文件夹下文件个数
ls -l /opt | grep "^-" | wc -l
2. 统计/opt文件夹下目录格式
ls -l /opt | grep "^d" | wc -l
3. 统计/opt文件夹下文件的个数,包括子文件夹里的
ls -lR /opt | grep "^-" | wc -l
4. 统计/opt文件夹目录的个数,包括子文件夹的
ls -lR /opt | grep "^d" | wc -l
5. 以树状显示目录结构 tree目录,注意tree需要安装
安装tree: yum install tree
tree /home

网络配置

NAT 网络配置

Linux 主机访问网络,先通过虚拟机的网关,再到主机的网卡,再到局域网,之后就是互联网

Linux 修改网络两种方式

Linux 中获取 ip 的命令

ifconfig

方式一自动获取

登录后通过页面来设置自动获取方式,缺点是 IP 地址经常更换,不利于做服务器

方式二:指定 ip

这个方式就需要修改 Linux 中的文件了,位置是/etc/sysconfig/network-scripts/ifcfg-ens33

将 ip 地址配置成静态的,比如 ip 地址为 192.168.200.130

ifcfg-ens33文件说明 网卡文件
DEVICE=etho 								# 接口名,设备网卡
HWADDR=00:0C:2x:6x:0x:xx #MAC 地址
TYPE=Ethernet								#网络类型(通常是 Ethernet)
UUID=926a57ba92c6-423l-bacb-127e5e6a9f44 	#随机的 id
# 系统启动的时候接口是否有效(yes/no)
ONBOOT=yes
# IP 的配置方法 [none|static|bootp|dhcp](引导时不适用协议 | 静态分配 IP|BOOTP 协议 |DHCP 协议)
BOOTPROTO=static
# IP 地址
IPADDR=192.168.200.130
# 网关
GATEWAY=192.168.200.2
# 域名解析器
DNS1=192.168.200.2

重启网络服务或者重启系统生效

service network restart
reboot

设置主机名和 hosts 映射

修改主机名

为了方便记忆,可以给 linux 设置主机名,也可以根据需求修改主机名。一般用于分布式

指令
hostname 查看主机名

修改主机名,修改文件在/etc/hostname,修改后重启就行

设置 hosts 映射

作用:就是通过 ping 对方的主机名就可以找到它的 IP 地址

Windows 中映射

C:\Windows\System32\drivers\etc/hosts文件中加入你的映射即可

192.168.200.130 hspedu100

linux 中映射

文件路径:/etc/hosts

如上面的一样插入即可

主机名解析过程分析 (Hosts、DNS)

Hosts 是什么

一个文本文件,用来记录 IP 和 HOstname(主机名)的映射关系

DNS

DNS,就是域名系统,是互联网上作为域名和 IP 地址相呼应映射的一个分布式数据库

实例

用户在浏览器输入了百度的网址 www.baidu.com,

  1. 浏览器先检查缓存中有没有该域名的 IP 地址,有就先调用,如果没有,就检查 DNS 解析器缓存,如果有直接返回 IP 完成解析。
  2. windows 上的指令:ipconfig /displaydns DNS 域名解析缓存
  3. ipconfig /flushdns 手动清理 dns 缓存
  4. 如果本地缓存解析器没有,就去检查 Hosts 文件,如果也没有就回去互联网上的 DNS 服务器解析

进程

查看进程

ps 
参数:
	-a 显示当前中断的所有进程信息
	-u 以用户的格式显示进程信息
	-x 显示后台进程运行的参数

ps -auxps -ef 都可以使用

字段说明

  • USER: 行程拥有者
  • PID: pid
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的内存使用率
  • VSZ: 占用的虚拟内存大小
  • RSS: 占用的内存大小
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • STAT: 该行程的状态:
    • D: 无法中断的休眠状态 (通常 IO 的进程)
    • R: 正在执行中
    • S: 静止状态
    • T: 暂停执行
    • Z: 不存在但暂时无法消除(僵死进程)
    • W: 没有足够的内存分页可分配
    • <: 高优先序的行程
    • N: 低优先序的行程
    • L: 有内存分页分配并锁在内存内 (实时系统或捱 A I/O)
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND: 所执行的指令

终止进程

终止进程的话有两种方式,一种是根据进程 PID 号来终止,还有一种是根据进程名字终止所有进程(父与子进程)

kill [选项] 进程号
killall 进程名字 (通过名字终止进程,也支持通配符,通常服务器负载大的时候用)

常用选项
-9 :表示强制终止进程

进程树查看

pstree [参数] # 可以更加直观的看进程信息
参数
	-p 显示进程的PID
	-u 显示进程的所属用户

服务管理

服务的状态

服务一共有 5 中状态

  • start:开启
  • stop:关闭
  • restart:重启
  • status:查看服务状态

systemctl 管理指令

基本语法
systemctl [start | stop | restart | status]

systemctl 指令管理的服务在/usr/lib/systemd/system查看

systemctl 设置服务的自启动状态

systemctl list-unit-files # 查看服务开机启动状态,grep 可以过滤
systemctl enable 服务名 # 设置服务自启动
systemctl disable 服务名 #关闭服务开机启动
systemctl is-enable 服务名 # 查询某个服务是否是自启动
systemctl status 服务名 # 查看服务状态

使用举例

拿防火墙举例

# 查看防火墙状态
systemctl status firewalld
# 终止防火墙
systemctl stop firewalld
# 开启防火墙
systemctl start firewalld

注意:这种方式只是临时生效,当重启后,还是回归以前的服务,如果希望永久关闭就需要设置,使用systemctl disable firewalld

防火墙打开或关闭指定端口

如果 Linux 防火墙开启的话,要是使用某个端口,就只能通过命令来打开它

1. 打开端口 
firewall-cmd --permanent --add-port=端口号/协议
2. 关闭端口 
firewall-cmd --permanent --remove-port=端口号/协议
3. 重新载入,才能生效
firewall-cmd-reload
4. 查看端口是否开启
firewall-cmd-query-port=端口/协议

动态监控进程

top命令是动态的监控进程,对于进程的 CPU 占用率、内存使用是动态刷新的

top 参数
参数:
	-d 秒数 : 以多长时间更新,默认是3秒
	-i : 是top不显示任何闲置和僵死进程
	-p : 通过指定监控进程PID来仅仅监控某个进程的状态

top:现在时间

up:已开机时间

user:当前几个用户

load average:负载值

Tasks:当前任务树

Mib Mem:当前内存使用情况,前面是已用,后面是剩余

MiB Swap:交换分区使用情况,前面是已用,后面是剩余

交互操作说明

在 top 命令下,按什么键代表不同操作

P 以CPU使用率排序,默认是此
M 以内存使用率排序
N 以PID排序
q 退出top
k 然后输入要杀死的进程PID

监控网络状态

查看网络系统情况 netstat

基础语法

netstat [参数]
参数
	-an 按照一定顺序排列输出
	-p 显示哪个进程在调用

这个作用就是说查看当前网络情况,可以根据最后面的 PID 终止某个链接

rpm 和 yum

rpm

rpm 常用命令

rpm -qa | grep XXX 查看已安装的rpm列表

rpm -qa : 查询所安装的所有 rpm 软件包
rpm -qa | more
rpm -qa | grep XXX

rpm -q 软件报名,查看软件包是否安装
rpm -q firefox

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

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

卸载 rpm 包

rpm -e 软件包名

注意事项

  1. 强制删除代码是rpm -e --nodeps 软件包名
  2. 一般一个包依赖于另一个包,如果某个包你强制删除了,那么另个包运行应该会有问题

安装 rpm

rpm -ivh RPM包全路径名
参数
	-i 表示安装
	v 提示
	h 显示进度条

yum

yum 是一个 Shell 前端软件包管理器,它是能够从互联网下载并且自动解决依赖在线安装包的东西

基本使用

yum list 显示所有可安装的包
yum list | grep XXX 你要安装软件的列表

安装
yum install XXX 下载安装

Java 环境搭建

安装 Java

使用 yum 来安装

使用 yum 来安装的话,就需要安装两个包

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

路径为:/usr/lib/jvm/

添加环境变量

吸入/etc/profile文件内

export JAVA_HOME=/usr/lib/jvm/java-1.8.0
export PATH=$JAVA_HOME/bin:$PATH

重新载入文件source /etc/profile

最后测试一下就行

tar 包安装 Java

将安装包上传到 /opt/java 目录下,然后解压

tar -zxvf 包名

然后移动文件到 /uer/lib/jvm 目录下,

最后配置环境变量就行

Tomcat 安装

从官网上下载 Tomcat 的安装包,解药到 /opt 目录下,然后运行就行

可以添加环境变量

export Tomcat_HOME=/opt/apache-tomcat-8.5.68
export PATH=$JAVA_HOME/bin:$PATH:$Tomcat_HOME/bin

Mysql 安装

使用 wget 工具下载就行

wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

1. 解压
tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
2. 按照顺序安装
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

3. 安装第4个包的时候 rpm 包,需要一个 perl 依赖,下载安装就行
yum -y install perl.x86_64
yum install -y libaio.x86_64
yum -y install net-tools.x86_64

4. 查看随机密码
grep "password" /var/log/mysqld.log

5. 修改当前密码
set global validate_password_policy=LOW; #修改安全策略
set global validate_password_length=6; # 修改密码长度
set password for 'root'@'localhost' =password('你的密码');

6. 运行flush privileges;使密码设置生效

CentOS 中对 MySQL 的配置
Mysql 的配置文件在/etc/my.cnf,这里主要对于编码的设置

[client]
port=3306
default-character-set=utf8mb4

[mysqld]
skip-grant-tables
port=3306

character_set_server=utf8mb4

Shell 编程

Sh 的第一个程序

#!/bin/bash

echo "Hello bash~"

之后保存,给他提升可执行权限chmod u+x hello.sh

就可以直接执行了

还有一种方式,是不用给它提升可执行权限,不过在 sh 脚本前加上sh 文件名这样使用

变量

变量的规范

  1. 变量名同意大写
  2. 等号两边不能有空格

变量的分类

Linux 中有普通变量,静态变量,以及全局变量

  • 普通变量可直接定义,也可以使用unset 变量名来销毁
  • 静态变量,不可以销毁,但需要使用readonly来定义
  • 全局变量也叫环境变量,定义在/etc/profile文件内,需要使用export 变量名=值来定义,不过需要使用指令source /etc/profile来刷新

代码演示

#!/bin/bash

# 定义普通变量
A=100

echo $A

echo "A=$A"

消除变量

unset A

定义静态变量,静态变量不能销毁

readonly B=200
echo "B=$B"

输出全局变量

echo $Tomcat_HOME

命令的返回值给变量

C=date
echo "C=$C"

另外一种写法

D=$(date)
echo "D=$D"

将命令的返回值给变量

两种方式

# 方式一:
A=`date`
# 方式二:
B=$(date)

位置参数变量

说明:就是说在执行脚本的时候,希望给脚本程序指定参数,让程序接受。这就是位置参数变量

比如:./myshell.sh 100 200 后面的两个数字就是传给脚本的值

基本语法

  • $n:根据变量位置,获取对应的变脸,比如上面的 100,200,那么获取就是 $1 $2
    • 具体说明:n 为数字,$0 代表命令本身,$1~$9 代表第一到 9 个参数,十以上的参数,需要使用大括号,如${10}
  • $*:获取所有参数,把所有参数看成一个整体
  • $@:也是获取所有参数,不过$@把每个参数区分对待
  • @#:获取所有参数的个数
# 获取参数
echo "0=$0 1=$1 2=$2"

# 获取所有参数,是一个整体
echo "获取所有参数 $*"

# 获取所有参数,是区分对待
echo "所有参数获取:$@"

# 获取参数个数
echo "$#"

预定义变量

就是 shell 设计者预先定义好的变量,可以让我们直接使用

  • $$ :获取当前进程的 PID
  • $!:后台运行的最后一个进程 PID
  • $?:获取最后一个执行命令的返回状态。0 是正确执行,非 0 是执行错误
  • 如果执行某个程序 后面加一个&那么久表示该程序在后台运行
  • 如:./myshell.sh &表示在后台执行该脚本

代码演示

#!/bin/bash

echo "当前程序的 PID=$$"

& 该符号表示后台执行

/root/shCode/01-hello.sh &

echo "hello 的 PID=$!"

echo "上一条指令的状态=$?"

运算符

运算符使用的三种方式

  1. $(( 运算符 )):需要注意的是,运算符两边都必须有空格
  2. $[ 运算符 ]:推荐使用这种,编写方便,但是两边也必须有空格
  3. expr m - n:m 和 n 都是数值,然后两边都必须有空格
    1. expr 的运算符号:+、-、\*、/、% 对应的是加减乘除以及取余

案例

  1. 计算 (2+3)*4 的结果
  2. 请求出命令行两个参数的和 20 50
#!/bin/bash

# 案例 1:计算 (2+3)*4 的值,使用三种运算方式
# 方式一:
SUM1=0
SUM1=$(( (2+3)*4 ))
echo "Sum1的结果为:$SUM1"

# 方式二
SUM2=0
SUM2=$[ (2+3)*4 ]
echo "Sum2=$SUM2"

# 方式三
SUM3=0
TEMP=` expr 2 + 3 `
SUM3=` expr $TEMP \* 4 `
echo "SUM3=$SUM3"

# 案例二:接受位置参数,并计算和
SUM4=$[ $1+$2 ]
echo "位置参数的结果为:$SUM4"

条件判断

Linux 中的条件判断有三种方式,一个是单 if,一个是多 if...elif,最后一个是 case

判断条件

常用判断

符号 作用
= 判断字符串是否相等
-lt 小于 接下来都是判断整数的
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于

按照文件权限进行判断

符号 作用
-r 有读权限
-w 有写权限
-x 有执行权限

按照文件类型进行判断

符号 作用
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录

单 if

if [ 判断条件 ] # 注意[]里的判断条件两边必须有空格 
then
	#... 代码
fi #代表结束	

多 if

if [ 判断条件1 ]
then 
	#代码
elif [ 条件二 ]
then 
	# 代码
if # 表示结束	

注意事项:[]为非空就是 ture 也就是 0,如果为假就是大于 1;空格也代表非空

case 的基本语法

case $变量名 in
"值1")
...代码
;;
"值2")
...代码
;;
*)                #相当于default除了上面之外的
...代码
esac # 表示结束

代码演示 -if 的简单使用

#!/bin/bash

# 案例 1:判断 ok 是否等于 ok
if [ "OK" = "OK" ]
then
	echo "相等"
fi

# 案例 2:23 是否大于等于 22
if [ 23 -ge 22 ]
then
	echo "是大于"
fi

# 案例 3:判断 /root/shCode/aaa.txt 目录下是否有 aaa.txt 文件
if [ -f /root/shCode/aaa.txt ]
then
	echo "有aaa.txt文件"
fi

多个 if 的使用

#!/bin/bash

# 案例:编写程序输入大于 60 输出及格,小于 60 输出不及格
if [ $1 -ge 60 ]
then
	echo "成绩及格!"
elif [ $1 -lt 60 ]
then
	echo "不及格!!!"
fi

case 的使用

#!/bin/bash

# 案例:当命令行参数是 1 时,输出周一,2 时输出周二,其他输出 other
case $1 in
	"1")
		echo "周一"
		;;
	"2")
		echo "周二"
		;;
	*)
		echo "other"
		;;
esac

循环

循环的有三种方式

  1. for 变量 in 值1 值2... # 就是说变量的值是值1或值2里面的
    do
    	程序代码
    done
    
  2. for (( 初始值;循环控制;变量变化 ))
    do
    	程序代码
    done
    
  3. while [ 条件判断式 ] # 需要注意的是 while与[之间有空格
    do
    	程序代码
    done
    

代码使用案例

#!/bin/bash

# 案例:打印命令行输入的参数,这个可以看出 $* 和$@区别
:<<!
$* 是表示把命令行输入的参数看作一个整体
$@是表示命令行输入的参数是一个一个的
!

for i in $*
do
echo "number is $i"
done

echo "==========================="
for j in $@
do
echo "number is $j"
done


#!/bin/bash

案例:从 1 到命令行的$1的值之间的和

RESULT=0
for((i=1;i<=$1;i++))
do
RESULT=$[$RESULT + $i]
done

echo "最终结果为:$RESULT"


#!/bin/bash

RESULT=0
i=0
while [$i -le $1]
do
RESULT=$[$RESULT + $i]
i=$[$i + 1]
done

echo "计算的结果:$RESULT"

read 读取控制台 - 与控制台交互

就是说在脚本执行的时候,有的脚本是需要和用户交互的,比如给某个变量一个值。

read 参数 变量名
参数:
	-p 给用户的提示
	-t 指定的时间(秒)规定时间内没有输入,程序就不等待了
#!/bin/bash

# 案例 1:读取控制台输入的 NUM1 值
read -p "请您输入一个数值:" NUM1
echo "你刚才输入的数值是:$NUM1"

案例 2:读取控制台输入的 NUM2 的值,并限制 10 秒时间

read -p "请您在输入数值,这次有时间限制了:" -t 10 NUM2
echo "您第二次输入的数值为:$NUM2"

注意:如果没有输入的话,变量的值是空

函数

系统函数

basename 路径 后缀 作用:返回完整路径的最后/部分,常用语获取文件名
路径的话是:/home/tom/aaa.txt 函数返回aaa.txt
如果加上后缀的话,.txt 就是返回aaa
dirname 和上面的相反,返回路径不包括文件
/home/tom/aaa.txt 返回/home/tom

自定义函数

格式

function 函数名(){
	代码;
	返回值return int;
}

备份 MySQL 数据库

首先,了解 MySQL 数据库是使用什么指令来备份的

在不是 mysql 交互中,使用命令

mysqldump -u 用户名 -p 密码 -host数据库地址 数据库名称 > 你的路径
# 先来写上关键信息
FILE_PATH=/data
#DATETIME=$(date +%Y-%m-%d_%H:%M:%S) 不能以这种格式的时间,tar 会报错
DATETIME=$(date +%Y-%m-%d_%H-%M-%S)

# echo $DATETIME

# Mysql 信息
USERNAME=root
USERPD=root
LOCAL=localhost
DATABASENAME=blog

# 创建目录
[ ! -d $FILE_PATH/$DATETIME ] && mkdir -p $FILE_PATH/$DATETIME

# 使用 mysqldump 命令来对数据库进行备份
mysqldump -u$USERNAME -p$USERPD --host=$LOCAL $DATABASENAME > $FILE_PATH/$DATETIME/$DATETIME.sql

# 进行压缩,压缩时间目录
cd $FILE_PATH
tar -zcvf $DATETIME.tar.gz ./$DATETIME

# 将目录删除,只保留 *.tar.gz
rm -rf ./$DATETIME

# 删除前 10 天的压缩文件
find $FILE_PATH -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "数据库$DATABASENAME备份成功"

mysql 数据库恢复

mysql -u 用户名 -p 密码 < sql文件位置

日志

在 Linux 中日志是非常重要的一部分,包括了用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务的相关信息

日志一般存在/var/log/目录下

系统常用日志

日志文件 说明
/var/log/boot.log 系统启动日志
/var/log/cron 记录与系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录系统在开机时内核自检的信息。也可以使用dmesg直接查看内核自检信息
/var/log/btmp 记录错误登录的日志。这个文件是二进制存放需要使用lastb命令查看
/var/log/lasllog 记录系统中所有用户最后一次的登陆时间的日志。这个文件也是二进制文件,需使用lastlog
/var/log/mailog 记录邮件信息的日志
/var/log/message 记录系统重要消息的日志,这个日志会记录 Linux 系统的绝大多数重要信息,如系统出现问题,首先要检查的应该就是这个日志文件
/var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统的登录,ssh 登录、su 切换用户、sudo 授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件,是二进制需要使用last命令查看
/var/tun/ulmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销而不断变化,只记录当前用户的登录信息,这个文件不能用 vi 查看,而是使用wwhousers等命令查看

案例

使用 root 登录,故意输入错误密码,然后查看/var/log/secure日志

日志服务程序

上图就是 rsyslog 管理的所有日志文件

CentOS7 以后日志服务是rsyslogd,就是说在使用日志的时候,需要看它有没有被启动,如果没有启动,那么 Linux 就不会记录日志

ps -aux | grep rsyslogd
# 查看 rsyslogd 服务的自启动状态
systemctl list-unit-files | grep rsyslog

既然 rsyslog 管理着日志,那么就可以通过它的配置文件,来自定义日志,或者设置日志的级别

配置文件所在路径:/etc/rsyslog.conf

编辑文件格式为:*.* 存放日志文件

其中第一*代表日志类型,第二个*代表日志级别

日志类型

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

日志级别

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

注意:从上到下,是从最低级别到最高级别,信息越来越少

日志字段说明

由日志服务rsyslogd记录的日志文件,日志文件的格式包含以下 4 列

  1. 事件产生的时间
  2. 产生事件的服务器的主机名
  3. 产生事件的服务名或程序名
  4. 事件的具体信息

日志轮替

简单说日志轮替就是,删除时间过早的日志,节省磁盘空间,如果不删除旧的日志,那么日志的信息会越来越大,占用空间也是如此,所以就需要日志轮替

如果日志轮替配置文件中有dateext参数,那么日志就会使用时间来作为日志的后缀。如果没有该参数,那么就会使用日志名.1的方式

日志轮替有两种方式:

  1. 全局配置,路径在/etc/logrotate.conf文件
  2. 对单个日志文件进行配置,路径在/etc/logrotate.d,新建立个文件即可

logrotate.conf 文件说明

# see "man logrotate" for details
# 每周轮换日志文件
weekly 

# 保留 4 份日志,当建立新的日志文件时,旧的就会删除
rotate 4 

# 创建新的空的日志文件,在日志轮替后
create 

# 使用日期作为日志轮替文件的后缀
dateext 

# 日志是否压缩,如果取消注释,则日志会在轮替转存的同时进行压缩
#compress 

# 如果所有日志配置都在此文件,那么就不好维护,所以有一个目录,目录下存放对应的日志轮替规则
include /etc/logrotate.d
# 包含 /etc/logrotate.d/ 目录中所有的子配置文件。也就是说会把这个目录所有子配置文件读取进来

单个配置日志的轮替规则

语法:在/etc/logrotate.d/目录下创建文件,文件内容如下
对应日志路径 {
	规则
}
/var/log/wtmp {
	monthly # 每月对日志文件进行一次轮替
	create 0664 root utmp # 建立新的日志文件,权限是0664,所有者是root  所属组是root组
	minsize 1M # 日志文件最小轮替大小是1MB。也就是日志一定要超过1M才会轮替,否则就算时间到1个月,也不进行日志轮替
	rotate 1 # 仅保留一份日志,也就是只有 wtmp和wtmp.1日志保留
}
参数 说明
daily 日志的轮替周期是天
weekly 日志的轮替周期是每周
monthly 日志的轮替周期是每月
rotate 数字 保留的日志文件的个数,0 指没有备份
compress 日志轮替时,旧的日志进行压缩
create mode owner group 建立新日志,同时指定新日志的权限和所有者与所属组
mail address 当日志轮替时,输出内容通过邮件发送到指定的邮箱地址
missingok 如果日志不存在,则忽略该日志的警告信息
notifempty 如果日志为空文件,则不进行日志轮替
minsize 大小 日志轮替的最小值
size 大小 日志只有大于指定大小,才会轮替,而不是按照时间轮替
dateext 使用日期作为日志轮替文件的后缀
sharedscripts 在此关键字之后的脚本只执行一次
prerotate/endscript 在日志轮替之前执行脚本命令
postrotate/endscript 在日志轮替之后执行脚本命令

把自己的日志加入日志轮替

  1. /etc/logrotate.conf文件中,写上类型和级别 以及自己日志的路径
  2. 配置日志轮替规则,在/etc/logrotate.d/目录下创建 xiaohong 文件,然后编辑,将下面的写入文件中

/etc/logrotate.d/目录中建立该日志的轮替文件,因为该目录的所有文件都会被include到主配置文件中

/etc/logrotate.d/目录下新建xiaohong然后配置上

/var/log/xiaohong.log {
	missingok
	daily
	copytruncate
	rotate 7
	notifempty
}

日志轮替机制原理

原理:就是使用crontab定时任务,在/etc/cron.daily/目录下,就会发现这个目录是有logrotate可执行文件的,logrotate通过这个文件依赖定时任务执行的

查看内存日志

内存日志重启就会消失

journalctl # 查看全部
journalctl -n 3 # 查看最新3条
journalctl --since 19:00 --until 19:10 # 查看起始时间到结束时间的日志
journalctl -p err # 报错日志
journalctl -o verbose # 日志详细内容
journalctl _PID=123 _COMM=sshd # 查看包含这些参数的日志(在详细日志看) 或者 journalctl | grep sshd

内核

# 查看当前内核版本
uname -a 

# 检测内核版本,显示可以升级的内核版本
yum info kernel -q

# 升级内核
yum update kernel 

# 查看已安装的内核
yum list kernel -q

备份与恢复

备份命令:dump

恢复命令:restore

安装 dump 和 restore

yum -y install dump
yum -y install restore

dump 基本使用

dump 支持分卷和增量备份。

增量备份:就是在原本备份的基础上,加入修改或新增过的文件

注意:dump 只对分区支持增量备份,对文件和目录不支持增量备份,及只能使用 0 级别备份

dump 命令使用

dump [ -cu] [-123456789] [-f 备份后的文件名] [-T 日期] [ 目录或文件系统 ]

参数说明
-c : 创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头
-0123456789: 备份的级别,0是完整备份,若0以上的级别,则备份上一级修改或添加新的文件备份,到9之后,可以再次轮替
-f 备份后文件名: 指定备份后文件名
-j : 调用bzlib库压缩备份文件,也就是bz2格式,让文件更小
-T 日期: 指定开始备份的时间与日期
-u : 备份完成后,在/etc/dumpdares中记录备份的文件系统,层次,日期与时间等
-t : 指定文件名,若该文件已存在备份文件中,则列出名称
-W: 显示需要备份的文件及其最后一次备份的级别,时间,日期
-w : 与-W类似,但仅显示需要备份的问阿金

使用举例

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

常用的可视化管理工具

webmin

webmin 是一个 web 网页,管理员可以通过网页来对 Linux 进行控制

下载地址:http://download.webmin.com/download/yum/

从上面网址下载一个就行

然后,安装 webmin,rpm -ivh webmin,如果在安装的时候出现问题,可以先安装yum install perl-Encode-Detect,具体看返回的错误。或者:https://www.webmin.com/rpm.html

yum -y install perl perl-Net-SSLeay openssl perl-IO-Tty perl-Encode-Detect

修改密码:

/usr/libexec/webmin/changepass.pl /etc/webmin root 你的密码 # 注意这里的root并不是OS的,而是webmin的

然后修改默认端口,登录即可

vim /etc/webmin/miniserv.conf # 修改端口
将port 和 listen 随意改下
/etc/webmin/restart # 重启
/etc/webmin/start # 启动
/etc/webmin/stop # 停止

然后对服务器开放端口,用浏览器 IP: 端口打开即可

bt

直接官网上,就有安装命令 https://www.bt.cn/

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装之后会给你网址,以及登录密码

如果没有记录的话,可以输入指令获取

bt default

__EOF__

  • 本文作者: 请叫我新神
  • 本文链接: https://www.cnblogs.com/xiaoxinobject/p/14932545.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。