liunx学习笔记
Linux 学习阶段
-
基础命令阶段
- 各个配置、网络配置,用户配置
- 开发环境搭建,如:javaee PYthon
- 基本 shell 脚本【重点】
- 安全设置
- 深入理解 Linux 内核【重点】
Linux 应用领域:
- 项目部署
- 嵌入式
- 运维
- 服务器
Linux 常用发型版本
乌班图、CentOS、红帽
Linux 分区
Linux 主要分区:文件系统 ext4
-
boot 分区(引导分区) 大小 1G
- 交换分区(虚拟内存) 和内存大小一致
- 根分区
虚拟机 Linux 中安装 VMtools
- 进入 CentOS
- 点击 VM 菜单的 -> install vmware tools
- CentOs 会出现一个 VM 的安装包
- 拷贝到 /opt
- 使用解压命令 tar,得到一个安装文件
cd /opt
,tar -zxvf xx.tar.gz
- 进入 vm 解压的目录,
cd vmware..
- 安装
./vmwaee-install.pl
- 全部使用默认设置即可,就可以安装成功
注意:安装 vmtools,需要有 gcc 支持 ,GCC 检查命令gcc -v
9. 然后虚拟机中点击该系统,设置->选项->共享文件夹->点击总是开启->选择文件夹即可
10. 在CentOS里如何找到共享文件夹目录是:`/mnt/hgfs/共享文件夹`
Linux 基础目录
-
/bin
:装有常用的指令 -
/sbin
:存放系统管理员使用的系统管理程序命令 -
/home
:存放普通用户的主目录,在 linux 中一个用户就会在该目录下创建一个与用户名相同的文件夹 -
/root
:系统管理员主目录 -
/lib
:系统开机所需要的基本的动态链接库 -
/lost+found
:这个目录一般是空的,当系统非法关闭后,这里就存放一些文件 -
/etc
:所有系统管理所需要的配置文件和子目录 my.conf -
/usr
:这是一个非常重要的目录,用户的很多应用程序和文件都会放在这个目录下。类似 windows 下的 program files 目录 -
/boot
:存放启动 Linux 时使用的一些核心文件,包括一些连接文件和镜像文件 -
/proc
:虚拟目录,是系统内存的映射,访问这个目录来获取系统信息 -
/srv
:service 缩写,该目录存放一些服务启动之后需要提取的数据 -
/sys
:这是 linux2.6 内核的一个很大变化,该目录下安装了 Linux2.6 内核中新出现的一个文件系统 sysfs -
/tmp
:这个目录是存放一些临时文件的 -
/dev
:类似于 windows 的设备管理器,所有硬件用文件形式存储 -
/media
:linux 系统会自动识别一些设备,如 U 盘,光驱,识别后会把设备挂载到该目录下 -
/mnt
:系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将外部的存储挂载到/mnt
上,然后进入该目录就可以查看内容了。 -
/opt
:这是给主机额外安装软件所存放的目录,如 ORACLE 数据库就可以放到该目录下。默认为空 -
/usr/local
:这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装程序 -
/var
:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件 -
/selinux
:SELinux 是一种安全子系统,它能控制程序只能访问特点文件,有三种工作方式
vim 基本使用
三种模式
插入模式
按下i
进入插入模式
正常模式
vim 打开文件后进入的就是正常模式,通过 esc 或 i 来进入不同的模式
命令模式
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符。比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。
以下是常用的几个命令:
-
i 切换到输入模式,以输入字符。
-
x 删除当前光标所在处的字符。
-
: 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动 Vim,进入了命令模式,按下 i,切换到输入模式。命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
基本使用
- 拷贝当前行
yy
,按p
粘贴。拷贝当行下 5 行输入5yy
- 删除当前行
dd
,删除当前行下的 5 行5dd
- 在文件中查找,在正常模式下输入
/你要查找的内容
,n 是下一个 - 设置文件的行号,取消文件的行号,命令分别是:
:set nu
和:set nonu
- 跳到最末行
G
,跳到首行gg
- 撤销命令是
u
,相当于 Ctrl+Z - 光标移动到 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 输出内容到控制台
- 输出环境变量 echo $PATH
- 打印字符串 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 中每个文件有
- 所有者
- 所在组
- 其他组
- 改变用户所在组
以上 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
任务调度:是系统在某个时间执行特定的命令和程序
任务调度分类
- 系统工作,有些重要的工作必须周而复始执行,如扫毒
- 用户需求,如备份 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 一次性任务
概述
- at 命令是一次性定时计划任务,at 的守护进程 atd 会在后台运行,检查作业队列来运行
- 默认情况下,atd 每 60 秒检测一次作业队列,有作业时,如果时间与当前作业时间匹配,则运行作业
- 在使用 at 任务的时候,一定要保证 atd 进程在后台执行,可以使用命令查看
ps -ef | grep atd
at [选项] [时间]
Ctrl + D 结束at任务命令的输入,输出两次
查询当前没有执行的任务 atq
删除已经创建还没有执行的任务 atrm 编号
选项
选项 | 含义 |
---|---|
-m | 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出 |
-I | atq 的别名 |
-d | atrm 的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q< 列队 > | 使用指定的列队 |
-f< 文件 > | 从指定文件读入任务而不是从标准输入读入 |
-t< 时间参数 > | 以时间参数的形式提交要运行的任务 |
at 指定时间的方法
- 接受在当前的 hh:mm(小时: 分钟 ) 这种方式的时间指定。假如该时间已过去,那么就第二天执行。
- 使用
midnight
(深夜 ),noon 中午、teatime 一般下午 4 点,等比较模式的词语来指定时间 - 采用 12 小时计时,即在时间后面加上 AM(上午)或 PM(下午)来说是上午还是下午。例如
12pm
- 指定命令执行的具体日期,指定格式为
月 日
或mm/dd/yy(月/日/年)
或dd.mm.yy(日.月.年)
指定的日期必须跟在指定时间的后面。例如04:00 2021-03-01
- 使用相对计时法,指定格式为
now + count time-unis
,now 是当前时间,time-units 是时间单位,这里能够是 minutes 分钟、hous 小时、days 天、weeks 星期。count 是时间的数量,几天,几小时。例如now + 5minutes
- 直接使用 today(今天)、tomorrow 明天来制定完成命令的时间
使用举例
-
2 天后的下午 5 点执行 /bin/ls /home
at 5pm + 2days at> ls /home
-
明天 17 点执行
at 5pm + tomorrow at> date > /home/date.txt
磁盘分区、挂载
分区原理
- Linux 来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个目录,一个独立唯一的文件结构,Linux 中每个分区都是用来组成整个文件系统的一部分。
- 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,
- 浏览器先检查缓存中有没有该域名的 IP 地址,有就先调用,如果没有,就检查 DNS 解析器缓存,如果有直接返回 IP 完成解析。
- windows 上的指令:
ipconfig /displaydns
DNS 域名解析缓存 ipconfig /flushdns
手动清理 dns 缓存- 如果本地缓存解析器没有,就去检查 Hosts 文件,如果也没有就回去互联网上的 DNS 服务器解析
进程
查看进程
ps
参数:
-a 显示当前中断的所有进程信息
-u 以用户的格式显示进程信息
-x 显示后台进程运行的参数
ps -aux 和 ps -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 软件包名
注意事项
- 强制删除代码是
rpm -e --nodeps 软件包名
- 一般一个包依赖于另一个包,如果某个包你强制删除了,那么另个包运行应该会有问题
安装 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 文件名
这样使用
变量
变量的规范
- 变量名同意大写
- 等号两边不能有空格
变量的分类
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}
- 具体说明:n 为数字,$0 代表命令本身,$1~$9 代表第一到 9 个参数,十以上的参数,需要使用大括号,如
$*
:获取所有参数,把所有参数看成一个整体$@
:也是获取所有参数,不过$@
把每个参数区分对待@#
:获取所有参数的个数
# 获取参数
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 "上一条指令的状态=$?"
运算符
运算符使用的三种方式
$(( 运算符 ))
:需要注意的是,运算符两边都必须有空格$[ 运算符 ]
:推荐使用这种,编写方便,但是两边也必须有空格expr m - n
:m 和 n 都是数值,然后两边都必须有空格- expr 的运算符号:+、-、
\*
、/、% 对应的是加减乘除以及取余
- expr 的运算符号:+、-、
案例
- 计算 (2+3)*4 的结果
- 请求出命令行两个参数的和 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
循环
循环的有三种方式
-
for 变量 in 值1 值2... # 就是说变量的值是值1或值2里面的 do 程序代码 done
-
for (( 初始值;循环控制;变量变化 )) do 程序代码 done
-
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 查看,而是使用w 、who 、users 等命令查看 |
案例
使用 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 | 打印 |
邮件 | |
mark(syslog)-rsyslog | 服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix to nuix copy 主机之间相关的通信 |
local 1-7 | 自定义的日志设备 |
日志级别
级别 | 说明 |
---|---|
debug | 有调试信息,日志信息最多 |
info | 一般信息日志,最常用 |
notice | 最具有重要性的普通条件的信息 |
warning | 警告级别 |
err | 错误级别,阻止某个功能或模块不能正常工作的信息 |
crit | 严重级别,阻止整个系统或整个软件不能正常工作的信息 |
alert | 需要立刻修改的信息 |
emerg | 内核崩溃等重要信息 |
none | 什么都不记录 |
注意:从上到下,是从最低级别到最高级别,信息越来越少
日志字段说明
由日志服务rsyslogd
记录的日志文件,日志文件的格式包含以下 4 列
- 事件产生的时间
- 产生事件的服务器的主机名
- 产生事件的服务名或程序名
- 事件的具体信息
日志轮替
简单说日志轮替就是,删除时间过早的日志,节省磁盘空间,如果不删除旧的日志,那么日志的信息会越来越大,占用空间也是如此,所以就需要日志轮替
如果日志轮替配置文件中有dateext
参数,那么日志就会使用时间来作为日志的后缀。如果没有该参数,那么就会使用日志名.1
的方式
日志轮替有两种方式:
- 全局配置,路径在
/etc/logrotate.conf
文件 - 对单个日志文件进行配置,路径在
/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 | 在日志轮替之后执行脚本命令 |
把自己的日志加入日志轮替
- 在
/etc/logrotate.conf
文件中,写上类型和级别 以及自己日志的路径 - 配置日志轮替规则,在
/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__