一、Linux的两种软件安装方式
1、Yum源配置
使用yum命令进行软件安装是linux安装文件的一个重要部分。
yum install -y 软件的名字
-y 一路yes
它会通过一个yum源配置的网址进行软件的下载,并安装
1、要联网
2、网址的网速要快
yum 源默认的网址是国外的,所以,一般修改yum源为国内的。
将yum源地址修改为国内的阿里的。
修改阿里云的镜像文件:
1、cd /etc/yum.repos.d/
2、备份⼀下:cp CentOS-Base.repo CentOS-Base.repo.bak
3、下载阿⾥云镜像到本地:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
4、清除yum的缓存
yum clean all
yum makecache
5、yum install -y ntpdate
1、yum search ifconfig 用于查看某个命令是哪个安装包下的命令
search 只能检索出来一个软件,如果这个命令在多个软件中都有,可以使用如下方式:
yum search all ifconfig
发现net-tools.x86_64 软件中包含了这个命令,所以应该安装这个软件才对。
yum install -y net-tools.x86_64
使用这个命令 ifconfig == ip addr
如果是在windows电脑上,ipconfig 用于查看windows上的ip地址
软件的升级 yum -y update 软件的名字
卸载 yum -y remove 软件的名字
yum源安装本质上也是rpm安装,因为它是先将rpm 安装包下载下来之后,又使用命令给你安装了一遍而已。
2、linux中软件安装的另一种方式 rpm
就好比是别人给了一个 exe 文件,只是我们的linux上是没有exe文件的,跟exe文件类似的是 rpm 安装包。
安装
rpm -ivh rpm安装包的名字
卸载
rpm -e rpm的名字
rpm -e rpm的名字 --nodeps (强制卸载)
查看哪些软件是rpm安装的。
rpm -aq
这个可以查询到所有的,使用rpm安装包安装过的软件的名字,如果想删除的话,直接使用这个名字删除即可。
可以使用如下方式,查看某个服务是否安装:
rpm -qa | grep jdk
rpm -e mysql-community-common-5.7.28-ex.x86_64 --nodeps
可以通过这种方式删除一个个的软件。
3、安装mysql8.0
1、上传,解压
tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar
2、查看是否有mysql数据库
rpm -qa | grep mariadb
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
mariadb 其实和mysql 是同父异母的兄弟
mysql --> SUN公司 -->Java --> Oracle --> 所以外界一直担心mysql被干死 -->mysql创始人单干了
--> mysql5.5的基础之上写了一个mariadb 外界也开始使用mariadb。
3、依次安装所需服务
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm
yum install -y net-tools
yum install -y perl
yum install libaio
rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm
4、服务启动
systemctl start mysqld 这个是启动mysql
systemctl status mysqld 查看mysql的状态
systemctl stop mysqld 关闭服务
5、修改密码
1、先查看默认密码
grep password /var/log/mysqld.log
先将密码修改成一个复杂的密码:
alter user root@localhost identified by 'Y1u2n3h4e5!';
修改mysql的密码校验规则:
show variables like '%validate_password%'; # 查看密码策略
set global validate_password.policy=LOW; # 修改密码策略等级为LOW
set global validate_password.length=4; # 密码的最小长度
set global validate_password.mixed_case_count=0; # 设置密码中至少要包含0个大写字母和小写字母
set global validate_password.number_count=0; # 设置密码中至少要包含0个数字
set global validate_password.special_char_count=0; # 设置密码中至少要包含0个特殊字符
# 2. 修改密码
alter user root@localhost identified by '123456';
mysql8.0密码不能设置为root,否则报错!
修改mysql可以远程连接:
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;// 刷新权限,让其立即起作用。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
使用这个sql语句可以修复上面的错误!
二、对虚拟机进行克隆
1、先关机
2、最新的状态,整个快照
3、开始克隆
4、修改克隆的服务器的硬件设置
5、修改克隆机的IP地址(因为跟第一台重复了)
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将IP地址修改为 192.168.32.129
保存退出
重启网络服务: systemctl restart network
检查一下 ifconfig 以及是否可以ping 通百度。
6、修改克隆机的主机名
hostname bigdata02
1、vi /etc/hostname 修改保存即可
2、还有一种方式可以永久修改主机名:hostnamectl set-hostname bigdata02
跟 修改文件 这两种方式二选一
7、修改映射关系
vi /etc/hosts
三、SCP远程拷贝命令
cp 是拷贝的命令,只能在一台电脑上,拷贝文件或者文件夹,无法跨电脑拷贝。
scp 可以实现将A电脑上的文件,拷贝到B电脑上。
scp A电脑上的文件 用户名@主机名:路径
实战一下:
scp /etc/hosts root@bigdata01:/etc/
需要输入bigdata01的密码。
如果想拷贝文件夹,需要添加 -r 参数
scp -r A电脑上的文件夹 B电脑用户名@B电脑的主机名:路径
还可以这样写:
scp /etc/hosts root@192.168.233.128:/etc/
还可以这样写:
先进入到 /etc/
scp /etc/hosts root@bigdata01:$PWD
四、服务器之间的免密操作
比如:bigdata01 这个电脑想免密登录到bigdata02 如何做?
1、需要在bigdata01上生成公钥和私钥
ssh-keygen -t rsa
一路回车即可。
2、生成的公钥和私钥在哪里?
/root/.ssh/id_rsa
3、将公钥传递给你想免密登录的电脑,比如bigdata02
ssh-copy-id bigdata02
本质是将bigdata01中的公钥拷贝到了bigdata02中的/root/.ssh/authorized_keys
验证bigdata01 是否可以远程连接bigdata02:
ssh bigdata02 发现不需要输入密码即可完成登录
exit 退出当前的登录
为了将来hadoop集群可以顺利启动,我们还需要让bigdata01免密登录自己。
-------- ssh-copy-id bigdata01
1、bigdata02随机生成了一串字符串,通过公钥进行加密,传递给bigdata01
2、bigdata01 通过私钥,对这个密文进行解密,再传递给bigdata02
3、bigddata02 拿到bigdata01的明文和自己当初的明文对比一下,发现正确就可以免密登录了。
五、Linux定时任务
1、什么是定时任务
只要是一个开发语言,都有定时任务。
今天要学习的是Linux的定时任务,其他技术,比如Java也有定时任务。
2、Linux中的定时任务(crontab)
1) 定时任务如何开启和关闭
cron服务的相关命令:
启动定时任务的服务: service crond start --> systemctl start crond
关闭定时任务的服务: service crond stop --> systemctl stop crond
重启定时任务的服务: service crond restart --> systemctl restart crond
重新载⼊定时任务的配置: service crond reload
查看定时任务的状态: service crond status
不管是网络服务,还是防火墙,还是其他的,都是 start stop restart status
而且在CentOS6.X 跟CentOS 7 之间命令差距很大。
2)如何编写定时任务
crontab -e 进入定时任务的编辑界面
*/1 * * * * echo "Good Moring" >> /tmp/test.txt
每隔一分钟,在/tmp/test.txt 中,追加一条记录 "Good Moring"
每次新建了一个定时任务后,一定要reload 一下
service crond reload --> systemctl reload crond
可以使用tail -f /tmp/test.txt
查看一个滚动的文件(一直追加的文件),ctrl + c 结束查看。
3) 定时任务的语法格式(通用,跟正则表达式)
格式如下:
* * * * * user-name command to be executed
共有六部分组成,分别表示: 分 时 ⽇ ⽉ 星期 要运⾏的命令 解析:
minute: ⼀⼩时中的哪⼀分钟 [0~59]
hour: ⼀天中的哪个⼩时 [0~23]
day: ⼀⽉中的哪⼀天 [1~31]
month: ⼀年中的哪⼀⽉ [1~12]
week: ⼀周中的哪⼀天 [0~6] 星期日是0 ,星期6 是 6
commands: 执⾏的命令
1、执行的命令是否可以执行 ntpdate
2、可执行的脚本你是否赋予了权限 比如自定义的脚本需要赋予权限才能运行
3、*/num 表示频率
4、如果是相连的时间使用 - 比如,周一到周五 1-5
如果时间不是相邻的,使用逗号(,)即可。 比如 8,10,12
每天晚上12点半执行
30 0 * * *
练习:
1、每天早上6点
0 6 * * *
2、每隔两个⼩时
0 */2 * * *
3、晚上11点到早上8点之间每隔2个⼩时和早上⼋点
0 23-8/2,8 * * *
4、周⼀到周五,下午五点半
30 17 * * 1-5
5、每⽉的1,10,22 的 4:15分
15 4 1,10,22 * *
6、每周的周六周⽇1:10分
10 1 * * 6,0
7、每天18:00 到 23:00 每隔 30分钟
0,30 18-22 * * *
0 23 * * *
8、每星期六的下午11点
0 23 * * 6
每次进行任务编辑的时候,其实修改的是一个文件,位置在/var/spool/cron,文件的名字是以用户名命名的。比如root.
service crond reload 其实就是重新加载这个文件而已。
在定时任务中,可以同时定义多个定时任务:
*/1 * * * * echo "Good Moring" >> /tmp/test.txt
*/1 * * * * echo "Good Afternooing" >> /tmp/test1.txt
history 命令可以查看以往所有执行过的命令,配合grep 非常的nice