1 挂载新的硬盘
1.1 目标
- 虚拟机 增加一块 硬盘
1.2 路径
- 第一步: 了解linux系统分区的原理
- 第二步: 查看系统分区情况
- 第三步: 虚拟机 增加 硬盘
- 第四步: 分区
- 第五步: 格式化
- 第六步: 挂载
- 第七步: 设置重启后 挂载不失效
1.3 实现
第一步: 了解linux系统分区的原理
- 一个硬盘可以分成多个分区
- 用户不能直接操作硬件, 需要 让硬件和系统的目录 建立映射关系(挂载) 才可以操作, 称为 挂载
[外链图片转存失败(img-vta995gu-1568724147696)(assets/1558956599018.png)]
第二步: 查看系统分区挂载情况
命令 | 英文 | 含义 |
---|---|---|
lsblk -f | list block devices | 查看所有设备的挂载情况 |
参数 | 英文 | 含义 |
---|---|---|
-f | file system | 文件系统 |
[外链图片转存失败(img-1hzbIKJi-1568724147697)(assets/1558957195965.png)]
lsblk
的记忆小窍门: 老师不离开 的首字母
第三步: 虚拟机 增加 硬盘
- 模拟将买的硬盘插入到 服务器中
- 选中 目标虚拟机 右键 设置
- 选中 硬盘 点击 添加按钮
- 点击 下一步
- 选择 创建新虚拟磁盘
- 指定 磁盘大小为10G
- 完成
- 注意: 重启 才可以生效
[外链图片转存失败(img-ZvhDhzwl-1568724147697)(assets/1558958276486.png)]
第四步: 分区
命令 | 英文 | 含义 |
---|---|---|
fdisk /dev/sdb | partition | 开始指定磁盘分区 |
分区命令可选项
选项 | 英文 | 含义 |
---|---|---|
m | menu | 显示命令列表 |
n | new | 新增分区 |
p | partition | 显示磁盘分区 |
d | delete | 删除分区 |
w | write and exit | 写入 并 退出 |
操作如下:
fdisk /dev/sdb
开始分区- 输入
m
, 进入 目录列表 - 输入
n
, 新增分区 - 输入
p
, 开始分区, 后面按回车 - 最后 输入
w
, 保存 且 退出 lsblk -f
查看是否成功
[外链图片转存失败(img-J3ScU7W3-1568724147698)(assets/1558959380950.png)]
第五步: 格式化
命令 | 英文 | 含义 |
---|---|---|
mkfs -t ext4 /dev/sdb1 | build a Linux file system | 格式化指定分区 |
参数 | 英文 | 含义 |
---|---|---|
-t | file system type | 指定文件系统类型 |
操作如下
mkfs -t ext4 /dev/sdb1
格式化指定分区lsblk -f
查看是否成功
[外链图片转存失败(img-PkxKMhau-1568724147698)(assets/1558959798742.png)]
第六步: 挂载
[外链图片转存失败(img-46A2i3lG-1568724147699)(assets/1558959972626.png)]
命令 | 含义 |
---|---|
mount 设备名称 挂载目录 | 建立 设备分区 和 系统目录 的映射关系 |
umount 设备名称 或 umount 挂载目录 | 取消 设备分区 和 系统目录 的映射关系 |
操作步骤
- 创建目录
mkdir -p /home/newdisk
mount /dev/sdb1 /home/newdisk
建立 设备分区 和 系统目录 的映射关系lsblk -f
查看是否挂载成功
[外链图片转存失败(img-TESLRbXv-1568724147699)(assets/1558960469613.png)]
- 注意: 重启后 挂载失效
第七步: 设置重启不失效
操作步骤
- 第一步: 将映射关系写到配置文件中
/etc/fstab
- 第二步:
mount -a
重新加载/etc/fstab
文件 ;mount
显示/etc/fstab
文件内容 - 第三步: 重启操作系统后, 测试
lsblk -f
1.4 小结
- 用户不能直接访问 硬件设备
- 需要将硬件设备 挂载到 系统目录上, 用户才可以让用户访问
1.5 挂载 持有系统镜像 光驱
1.5.1 目标
- 因为 linux系统镜像中包含了常用的软件包, 就不用从网上下载了
- 所以需要挂载 持有系统镜像 的 光驱
1.5.2 路径
[外链图片转存失败(img-0iGrXFph-1568724147700)(assets/1559232643477.png)]
1.5.3 实现
-
目标虚拟机, 右键 设置
-
选中 CD/DVD, 浏览 选中本地的 centOS 镜像
[外链图片转存失败(img-V0xG9FOG-1568724147701)(assets/1559003152261.png)]
-
创建目录
mkdir -p /home/mnt
-
挂载镜像文件
mount /dev/cdrom /mnt/cdrom
-
进入挂载目录, 找到 安照包
# 切换到安装包目录中 cd /mnt/cdrom/Packages/ # 搜索tree安装包 ls | grep tree
1.5.4 小结
2 rpm 软件包管理器
2.1 目标
- 通过
rpm命令
实现对软件 的安装、查询、卸载 - RPM 是Red-Hat Package Manager(RPM软件包管理器)的缩写
- 虽然 打上了 red-hat 的标记, 但是理念开放, 很多发行版都采用, 已经成为行业标准
2.2 路径
- 第一步: rpm包 的 查询命令
- 第二步: rpm包 的 卸载
- 第三步: rpm包 的 安装
2.3 实现
第一步: rpm包 的 查询命令
选项 | 英文 | 含义 |
---|---|---|
-q | query | 查询 |
-a | all | 所有 |
-i | info | 信息 |
-l | list | 显示所有相关文件 |
-f | file | 文件, 显示文件对应 rpm 包 |
-
查询已安装的rpm列表
rpm -qa | grep XXX rpm -qa | less
-
查询软件包信息
rpm -qi 软件全包名
-
查看一个rpm包中的文件安装到那里去了?
rpm -ql 软件全包名
-
查看指定文件归属于那个软件包
rpm -qf 文件的全路径
第二步: rpm包 的 卸载
命令 | 英文 | 含义 |
---|---|---|
rpm -e 软件包名称 | erase 清除 | 卸载rpm软件包 |
rpm -e --nodeps 软件包名称 | Don’t check dependencies | 卸载前 跳过 依赖检查 |
[外链图片转存失败(img-7LjmYlDE-1568724147701)(assets/1559195615885.png)]
第三步: rpm包 的 安装
命令 | 含义 |
---|---|
rpm -ivh rpm包的全路径 | 安装 rpm 包 |
参数 | 英文 | 含义 |
---|---|---|
-i | install | 安装 |
-v | verbose | 打印提示信息 |
-h | hase | 显示安装进度 |
2.4 小结
# 1 查询
rpm -qa | grep rpm包
# 2 卸载
rpm -e rpm全包名
rpm -e --nodeps rpm全包名
# 3 安装
rpm -ivh rpm包的全路径
3 yum
3.1 目标
Yum
(全称为Yellow dog Updater, Modified
)本质上 也是一个 软件包管理器。- 特点: 基于
RPM
包管理,能够从指定的服务器 自动下载、 自动安装、 自动处理依赖性关系
3.2 路径
3.3 实现
3.3.1 yum的原理
[外链图片转存失败(img-OivN16Hh-1568724147701)(assets/1559213467056.png)]
[外链图片转存失败(img-nUUFS8sv-1568724147702)(assets/1559213519625.png)]
3.3.2 常用命令(重点)
注意: 必须联网
命令 | 含义 |
---|---|
yum list | grep 需要的软件名 | 查询服务器是否有需要安装的软件 |
yum -y install 需要的软件包 | 下载安装 |
yum -y remove 需要卸载的软件包 | 卸载 |
yum repolist | 列出设定yum源信息 |
yum clean all | 清除yum缓存信息 |
3.3.3 制作本地yum源
-
原因: 因为大数据集群 为了安全, 不让连接外网
-
原理
[外链图片转存失败(img-t6mwOcD1-1568724147702)(assets/1559237181246.png)]
-
实现
# 切换到保存yum信息的目录 cd /etc/yum.repos.d/ # 备份所有的配置文件 rename .repo .repo.bak * # 查看是否备份成功 ll
[外链图片转存失败(img-AqvzUVOe-1568724147703)(…/…/…/…/…/00_%E8%AF%BE%E4%BB%B6/01_linux/201905/day04_%E5%A4%A7%E6%95%B0%E6%8D%AE%E9%9B%86%E7%BE%A4_rpm_yum/%E7%AC%94%E8%AE%B0/assets/1559005714539.png)]
vi CentOS-Local.repo
编辑内容如下
[base] name=CentOS-Local baseurl=file:///mnt/cdrom gpgcheck=0 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[外链图片转存失败(img-AQLcrlkV-1568724147703)(assets/1559235999870.png)]
- 注意: 必须以
.repo
结尾
- 注意: 必须以
3.3.4 制作局域网yum源
3.3.5.1 安装httpd软件
-
安装httpd:
yum -y install httpd
-
启动 httpd 服务
service httpd start
-
测试
http://192.168.100.201:80
-
问题: 发现无法访问?
3.3.5.2 防火墙
-
方式一: 开放指定端口
-
修改指定配置
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
[外链图片转存失败(img-3qehPqbm-1568724147704)(assets/1559221875874.png)]
-
重启 防火墙服务
service iptables restart
-
查看防火墙
service iptables status
-
再次访问 httpd 对应的端口号
http://192.168.100.201:80/
-
-
方式二: 关闭防火墙
3.3.4.3 制作局域网 yum源
-
使用浏览器访问
http://192.168.100:201:80
[外链图片转存失败(img-rf1AkCpH-1568724147705)(assets/1559003991020.png)]
-
第一步: 将常用软件包 复制到指定目录下
# 拷贝yum源到httpd服务的默认工作路径下 cp -r /mnt/cdrom/ /var/www/html/CentOS-6.9
-
第二步: 浏览器访问
http://192.168.100.201/CentOS-6.9/
[外链图片转存失败(img-xhhN08O1-1568724147705)(assets/1559004235896.png)]
-
第三步: 更新其他节点的 本地yum源(在其他节点上测试)
-
第四步: 测试是否成功(在其他节点上测试)
yum clean all yum repolist yum install -y gcc
3.4 小结
# 安装软件
yum -y install 软件包
卸载软件
yum -y remove 软件包
4 安装jdk
4.1 路径
-
第一步: 卸载linux系统 提供的jdk
-
第二步: 上传按照包到
/export/soft
, 解压到/export/install
-
第三步: 将 jdk路径 放到 环境变量中
-
第四步: 重新加载 环境变量的配置文件
-
第五步: 测试是否安装成功
4.2 实现
第一步: 卸载linux系统 提供的jdk
# 查询已安装的jdk
rpm -qa | grep java
# 卸载
rpm -e --nodeps 软件包名
第二步: 上传按照包到 /export/soft
, 解压到 /export/install
# 1 创建保存软件包目录
mkdir -p /export/soft/
cd /export/soft/ && ll
# 2 上传软件包
# 3 创建安装软件目录
mkdir -p /export/install
# 4 将压缩包解压到指定目录
tar -zxvf jdk-8u141-linux-x64.tar.gz -C /export/install
cd /export/install && ll
第三步: 将 jdk路径 放到 环境变量中
- 目的: 为了能够在任何目录下都可以使用
javac
和java
JAVA_HOME=/export/install/jdk1.8.0_141
PATH=/export/install/jdk1.8.0_141/bin:$PATH
export JAVA_HOM PATH
第四步: 重新加载 环境变量的配置文件
- 为了生效, 要么重启电脑, 要么 重新加载配置文件
source /etc/profile
# 测试
java -version
第五步: 测试是否安装成功
需求: 编写一个简单的Hello.java, 输出 Hello World!
vim Hello.java
[root@hadoop01 export]# cat Hello.java
public class Hello{
public static void main(String[] args) {
System.out.println("Hello java!");
}
}
使用 javac Hello.java
编译
执行 java Hello
5 安装tomcat
5.1 目标
5.2 路径
5.3 实现
-
第一步: 将安装包上传到
/export/soft
, 解压到/export/install
# 切换到保存软件的目录 cd /export/soft # 解压到 /export/install 安装目录 tar -zxvf apache-tomcat-7.0.82.tar.gz -C /export/install/
-
第二步: 启动tomcat 且 查看日志
# 切换启动命令的目录 cd /export/install/apache-tomcat-7.0.82/bin # 启动 且 查看日志 ./startup.sh && tail -100f ../logs/catalina.out
-
第三步: 测试
http://192.168.100.201:8080/
[外链图片转存失败(img-LMKFV8AA-1568724147706)(assets/1559021688305.png)]
6 安装mysql
6.1 yum安装原理:
6.2 yum安装优点:
6.3 缺点:
6.4 yum安装实战
- 下面看看如何在CentOS7系统上安装 MySQL5.6.44
1 查询系统自带的mysql
[root@hadoop01 yum.repos.d]# rpm -qa | grep mysql
mysql-libs-5.1.73-8.el6_8.x86_64
2 卸载系统自带的mysql
rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64
3 下载安装官网yum源
wget -P /export/soft http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
-
注意: 需要联网
[外链图片转存失败(img-2SMuwgcJ-1568724147706)(assets/1559026195739.png)]
4 安装下载好的rpm文件
cd /export/soft
rpm -ivh mysql-community-release-el6-5.noarch.rpm
[外链图片转存失败(img-VIb3DOX0-1568724147706)(assets/1559026586412.png)]
5 安装mysql 服务器
yum -y install mysql-community-server
-
注意: 需要联网下载, 估计需要等待十几分钟!
-
测试是否安装成功
[外链图片转存失败(img-xGPxy2eS-1568724147707)(assets/1559027313765.png)]
6 启动服务
service mysqld start
[外链图片转存失败(img-Ck4c3CIt-1568724147707)(assets/1559027389601.png)]
7 修改密码
[外链图片转存失败(img-4yiXvyyn-1568724147708)(assets/1559025747654.png)]
# 设置密码
/usr/bin/mysqladmin -u root password '123'
# 进入mysql
mysql -uroot -p123
8 问题1: 解决中文乱码
由于MySQL编码原因会导致数据库出现乱码。
解决办法:
修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码。
具体操作:
1 进入MySQL控制台
# 进入mysql
mysql -uroot -p123
# 查看编码集 发现不是utf8
show variables like 'character_set_%';
[外链图片转存失败(img-iolb8mIM-1568724147708)(assets/1559290263489.png)]
2 修改mysql配置文件
# 清空 mysql 配置文件内容
[root@Hadoop-NN-01 ~]# >/etc/my.cnf
# 修改mysql 软件的编码集
[root@Hadoop-NN-01 ~]# vi /etc/my.cnf
修改内容如下:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
3 重启MySQL服务
[root@Hadoop-NN-01 ~]# service mysqld restart
#查看MySQL字符集
show variables like 'character_set_%';
[外链图片转存失败(img-0VqNgSON-1568724147709)(assets/309981-20160517105959326-1102421669.png)]
MySQL数据库字符集编码修改完成!
9 问题2: 默认情况下 mysql服务端不允许客户端远程访问
-
问题: 使用客户端 远程 连接mysql报错?
[外链图片转存失败(img-yjMVoPgj-1568724147709)(assets/1559028200288.png)]
-
原因: 因为 用户 没有 远程访问的权限
-
解决: 授权
# 给root授权:既可以本地访问, 也可以远程访问 grant all privileges on *.* to 'root'@'%' identified by '123' with grant option; # 刷新权限(可选) flush privileges;
7 集群(三台)
7.1 新增linux系统
[外链图片转存失败(img-hAErKYJ9-1568724147710)(assets/1559290977385.png)]
第一步: 克隆虚拟机
[外链图片转存失败(img-ptAN7VTm-1568724147710)(assets/1559030271892.png)]
[外链图片转存失败(img-0qUz74Ga-1568724147711)(assets/1559030329561.png)]
[外链图片转存失败(img-sU1uZFc5-1568724147711)(assets/1559032650027.png)]
[外链图片转存失败(img-t9NAnX9V-1568724147712)(assets/1559031320290.png)]
第二步: 更改新增系统的mac地址
vim /etc/udev/rules.d/70-persistent-net.rules
[外链图片转存失败(img-b9J5KyNQ-1568724147712)(assets/1559032034492.png)]
[外链图片转存失败(img-nX0EkWh3-1568724147713)(assets/1559032101359.png)]
[外链图片转存失败(img-UbVC1jOQ-1568724147713)(assets/1559032120387.png)]
第三步: 更改网卡信息
vim /etc/sysconfig/network-scripts/ifcfg-eth0
[外链图片转存失败(img-SGkp5BVW-1568724147714)(assets/1559032313968.png)]
第四步: 重启生效
reboot
7.2 三台机器 关闭防火墙
三台机器执行以下命令(root用户来执行)
# 查看防火墙的状态
service iptables status
# 启动防火墙服务
service iptables start
# 重启 防火墙 服务
service iptables restart
# 停止 防火墙 服务
service iptables stop
# 彻底关闭防火墙
chkconfig iptables off
[外链图片转存失败(img-QzhXwJcy-1568724147714)(assets/1559034120134.png)]
7.3 三台机器关闭selinux
vim /etc/selinux/config
[外链图片转存失败(img-VwpE4EDF-1568724147715)(…/…/…/…/…/00_%E8%AF%BE%E4%BB%B6/01_linux/201905/day04_%E5%A4%A7%E6%95%B0%E6%8D%AE%E9%9B%86%E7%BE%A4_rpm_yum/%E7%AC%94%E8%AE%B0/assets/1559037313794.png)]
- 注意: 重启才会生效
7.4 三台机器更改主机名
vim /etc/sysconfig/network
[外链图片转存失败(img-a15nH83x-1568724147716)(assets/1559034666896.png)]
[外链图片转存失败(img-478PllKV-1568724147717)(assets/1559034689399.png)]
[外链图片转存失败(img-paezvzrh-1568724147718)(assets/1559034714045.png)]
7.5 三台机器 给ip地址起别名
7.5.1 给ip地址起别名
vim /etc/hosts
192.168.100.201 hadoop01
192.168.100.202 hadoop02
192.168.100.203 hadoop03
7.5.2 测试
ping 192.168.100.202
ping hadoop02
[外链图片转存失败(img-ect2clyP-1568724147718)(assets/1559035342799.png)]
7.6 scp
远程文件拷贝
7.6.1 是什么?
7.6.2 从本地拷贝到远程机器上
[外链图片转存失败(img-gazpIypI-1568724147718)(assets/1559296554464.png)]
-
准备工作
# 创建目录 mkdir -p /export/aaa/bbb/ccc # 创建文件 touch /export/aaa/01.txt /export/aaa/02.txt # 显示 tree /export/aaa
1 文件
-
语法格式
# 拷贝文件 scp local_file remote_username@remote_ip:remote_folder
-
需求: 将本地 01.txt 文件 复制到 192.168.100.202 机器的 /export目录下
scp /export/aaa/01.txt root@192.168.100.202:/export
scp /export/aaa/02.txt root@hadoop02:/export
scp /export/aaa/02.txt hadoop02:/export
2 文件夹
-
语法格式
# 拷贝目录 scp -r local_folder remote_username@remote_ip:remote_folder
-
需求: 将本地 aaa 目录 复制到 192.168.100.202 机器的 /export 目录下
scp -r /export/aaa root@192.168.100.202:/export
scp -r /export/aaa root@hadoop02:/export
scp -r /export/aaa hadoop02:/export
7.6.3 将远程机器内容复制到本地机器上
[外链图片转存失败(img-cS2T1GFI-1568724147720)(assets/1559296584970.png)]
-
准备工作
# 创建目录 mkdir -p /export/a1/b1/c1 # 创建文件 touch /export/a1/111.txt touch /export/a1/222.txt # 显示内容 tree /export/a1
1 文件
-
语法格式
scp remote_username@remote_ip:remote_file local_folder
-
练习3: 将 hadoop02的 111.txt 文件 复制到 hadoop01的 export目录下
scp root@192.168.100.202:/export/a1/111.txt /export
scp root@hadoop02:/export/a1/222.txt /export
scp hadoop02:/export/a1/222.txt /export
2 目录
-
语法格式
scp -r remote_username@remote_ip:remote_folder local_folder
-
练习4: 将hadoop02的 /export/a1/ 目录 复制到 hadoop01 的 export目录下
scp -r root@192.168.100.202:/export/a1 /export
scp -r hadoop02:/export/a1 /export
7.7 ssh远程登录
[外链图片转存失败(img-9HNExm0V-1568724147720)(assets/1559305910984.png)]
7.7.1 目标
7.7.2 路径
7.7.3 实现
方式一 使用 ssh
基于密码的远程登录
命令 | 含义 |
---|---|
ssh ip地址 | 远程登录到指定服务器上(必须知道正确的密码) |
-
在第三台机器上登录到第二台机器上
[外链图片转存失败(img-GOeQhLQ2-1568724147721)(…/…/…/…/…/00_%E8%AF%BE%E4%BB%B6/01_linux/201905/day04_%E5%A4%A7%E6%95%B0%E6%8D%AE%E9%9B%86%E7%BE%A4_rpm_yum/%E7%AC%94%E8%AE%B0/assets/1559302684534.png)]
-
细节: 首次远程登录会询问
yes/no
, 以后可能就不会了
方式二: 使用 ssh + expect
实现 免密码登录
1 路径
2 实现
第一步: 概述
- expect是一款自动化的脚本解释型的工具。
- expect对一些需要交互输入的命令很有帮助,比如ssh ftp scp telnet。
- 远程登录linux服务器的时候,ssh命令需要手工输入密码,当登录多台机器的时候就会非常繁琐。
- expect就可以根据设定的规则,自动帮我们输入密码,大大节省了时间。
第二步: 常用指令
-
- 定义脚本执行的expect
#!/usr/bin/expect
- 功能类似于
sh
脚本的 第一行#!/bin/bash
-
set timeout 30
- 设置超时时间, 单位是秒, 如果设为
timeout -1
含义为 永不超时
-
spawn command
- spawn 是进入 expect 环境后执行的内部命令, 不能直接在默认的shell环境中执行
- 主要功能: 传递交互命令
-
expect
- 这里的expect同样是 expect的内部命令
- 主要功能: 判断输入结果是否包含 某项字符串, 没有立即返回; 否则等待一段时间后返回, 等待时间通过
timeout
进行设置.
-
send
- 执行交互动作, 将交互要执行的动作 进行 输入交互命令
- 命令字符串结尾要加上
\r
, 如果出现异常等待的状态可以进行核查
-
interact
- 执行完后保持交互状态, 把控制权交给控制台
- 如果不加这一项, 交互完成会自动退出
-
exp_continue
- 继续执行接下来的交互操作.
-
$argv
- expect 脚本可以接受从bash 传递过来的参数,
- 可以使用
[ lindex $argv n ]
获取参数, n 从0开始, 分别代表 第一个, 第二个, 第三个… …
第三步: 实现 免交互的远程拷贝
-
安装 expect 软件
yum -y install expect
-
1 远程登录的事实
[外链图片转存失败(img-b7it6OyG-1568724147721)(assets/1559304392054.png)]
-
2 创建目录 和 编辑expect脚本
mkdir -p /export/expect/ && cd /export/expect/ vim expect_ssh.exp
#!/usr/bin/expect set ipaddress "192.168.100.202" set passwd "123456" set timeout 30 spawn ssh $ipaddress expect { "yes/no" {send "yes\r"; exp_continue} "password:" {send "$passwd\r"} } interact
- 保存且退出
-
3 给文件增加可以执行的权限
chmod +x /export/expect/expect_ssh.exp
-
4 执行
/export/expect/expect_ssh.exp
[外链图片转存失败(img-kcgvLld0-1568724147721)(assets/1559305048427.png)]
-
5 在202 机器 检测是否上传成功
ifconfig eth0
-
6 优化: 传递参数 ip
# 备份文件 cp expect_ssh.exp expect_ssh2.exp # 编辑文件 vim expect_ssh2.exp
#!/usr/bin/expect set ipaddress [ lindex $argv 0 ] set passwd "123456" set timeout 30 spawn ssh $ipaddress expect { "yes/no" {send "yes\r"; exp_continue} "password:" {send "$passwd\r"} } interact
[外链图片转存失败(img-nCmPBTao-1568724147722)(assets/1559305235031.png)]
-
执行脚本
/export/expect/expect_ssh2.exp hadoop03
[外链图片转存失败(img-xHZGy5PY-1568724147722)(assets/1559305387794.png)]
方式三: 使用 ssh
基于密匙 实现 免密码登录
[外链图片转存失败(img-X6XGZEra-1568724147724)(file:///C:/Users/86186/Documents/My Knowledge/temp/27ceaeac-0ee8-4d88-8c07-24ff33d51c58/128/index_files/1539509297795.png)]
[外链图片转存失败(img-1pXA0rpK-1568724147724)(file:///C:/Users/86186/Documents/My Knowledge/temp/27ceaeac-0ee8-4d88-8c07-24ff33d51c58/128/index_files/1536999790300.png)]
第一步: ssh-keygen -t rsa 在hadoop1和hadoop2和hadoop3上面都要执行,产生公钥和私钥
第二步:ssh-copy-id hadoop01 将公钥拷贝到hadoop1上面去
第三步:
scp authorized_keys hadoop02:/root/.ssh/
scp authorized_keys hadoop03:/root/.ssh/
注意1: 第三步需要在/root/.ssh/目录下.
7.8 crontab 任务调度
7.8.1 原理
[外链图片转存失败(img-vY9a7iuZ-1568724147724)(assets/1559060740748.png)]
7.8.2 概述
7.8.3 案例: 每隔1分钟将时间打印到 /export/文件
中
方案一: 直接式
-
第一步:
date >> /export/mydate1.txt
测试命令 -
第二步: 通过
crontab -e
进入 定时任务 -
第三步: 编辑定时任务命令
*/1 * * * * date >> /export/mydate1.txt
-
第四步: 检测是否成功
cd /export/ && tail -f mydate1.txxt
方式二: 脚本式
-
第一步: 书写测试命令
echo `date +"%Y-%m-%d %H:%M:%S"` >> mydate2.txt
-
第二步: 将命令放到脚本中
vim /export/task.sh
echo `date +"%Y-%m-%d %H:%M:%S"` >> /export/mydate2.txt
-
第三步: 增加可执行权限
chmod +x /export/task.sh
-
第四步: 执行脚本
/export/task.sh
-
第五步: 进入 定时任务
crontab -e
*/1 * * * * date >> /export/mydate1.txt */1 * * * * /export/task.sh
-
第六步: 测试 观察结果
tail -f /export/mydate2.txt
7.8.4 参数细节说明(学会查)
5个占位符的说明
[外链图片转存失败(img-2jlVDNon-1568724147725)(assets/1559059301285.png)]
含义 | 范围 | |
---|---|---|
第一个 * | 一小时当中的第几分钟 | 0~59 |
第二个 * | 一天当中的第几小时 | 0~23 |
第三个 * | 一个月当中的第几天 | 1~31 |
第四个 * | 一年当中的第几月 | 1~12 |
第五个 | 一周当中的星期几 | 0~7(0和7都代表星期日) |
例子
命令 | 含义 |
---|---|
* * * * * command | 实例1:每1分钟执行一次command |
3,15 * * * * command | 实例2: 每小时的第3和第15分钟执行 |
3,15 8-11 * * * command | 实例3: 在上午8点到11点的第3和第15分钟执行 |
3,15 8-11 */2 * * command | 实例4: 每隔两天的上午8点到11点的第3和第15分钟执行 |
3,15 8-11 * * 1 command | 实例5: 每个星期一的上午8点到11点的第3和第15分钟执行 |
30 21 * * * /etc/init.d/smb restart | 实例6: 每晚的21:30重启smb |
45 4 1,10,22 * * /etc/init.d/smb restart | 实例7: 每月1、10、22日的4 : 45重启smb |
10 1 * * 6,0 /etc/init.d/smb restart | 实例8:每周六、周日的1 : 10重启smb |
0,30 18-23 * * * /etc/init.d/smb restart | 实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb |
7.9 三台机器时钟同步
7.9.1 同步互联网时间
[外链图片转存失败(img-cPLtUJje-1568724147725)(assets/1559315973292.png)]
[外链图片转存失败(img-ZDl01xl2-1568724147726)(assets/1559062981123.png)]
命令 | 英文 | 含义 |
---|---|---|
ntpdate 互联网时间服务器地址; | Network Time Protocol | 同步时间 |
-
阿里云时钟同步服务器
ntpdate ntp4.aliyun.com
-
三台机器定时任务 : 直接与阿里云服务器进行时钟同步
crontab -e */1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
-
准备工作: 删除三台服务器定时任务
crontab -r
7.9.2 跟内网某台机器同步时间
[外链图片转存失败(img-iJ6HYU6I-1568724147726)(assets/1559063428113.png)]
- 以192.168.100.201 这台服务器的时间为准进行时钟同步
第一步:确定是否安装了ntpd的服务
rpm -qa | grep ntpd
[外链图片转存失败(img-RLQXGidO-1568724147726)(assets/1559323516074.png)]
-
如果没有安装,可以进行在线安装
yum -y install ntpd
-
查看ntpd的状态
service ntpd status
-
启动ntpd的服务
service ntpd start
-
设置ntpd的服务开机启动
chkconfig ntpd on
第二步:编辑 /etc/ntp.conf
-
编辑第一台机器的 /etc/ntp.conf
-
vim /etc/ntp.conf
-
在文件中添加如下内容, 配置我们的时钟广播地址
restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap
-
注释一下四行内容
#server0.centos.pool.ntp.org #server1.centos.pool.ntp.org #server2.centos.pool.ntp.org #server3.centos.pool.ntp.org
-
去掉以下内容的注释,如果没有这两行注释,那就自己添加上
server 127.127.1.0 # localclock fudge 127.127.1.0 stratum 10
[外链图片转存失败(img-haprKtA5-1568724147727)(assets/1559064293763.png)]
-
-
配置以下内容,保证BIOS与系统时间同步
vim /etc/sysconfig/ntpd
-
添加一行内容
SYNC_HWLOCK=yes
[外链图片转存失败(img-JL4X4kMO-1568724147727)(assets/1559064435582.png)]
-
-
重启ntpd 服务
service ntpd restart
第三步:另外两台机器与第一台机器时间同步
-
先手动同步时间
ntpdate 192.168.100.201
-
再使用 定时任务 同步时间
crontab -e
*/1 * * * * /usr/sbin/ntpdate 192.168.100.201
另外两台机器与192.168.52.201进行时钟同步