目录
一、Linux的两种软件安装方式
1、Yum源配置
2、linux中软件安装的另一种方式 rpm
3、安装mysql8.0
二、对虚拟机进行克隆
1、先关机
2、最新的状态,整个快照
3、开始克隆
4、修改克隆的服务器的硬件设置
5、修改克隆机的IP地址(因为跟第一台重复了)
6、修改克隆机的主机名
7、修改映射关系
三、SCP远程拷贝命令
四、服务器之间的免密操作
五、Linux定时任务
1、什么是定时任务
2、Linux中的定时任务(crontab)
1) 定时任务如何开启和关闭
2)如何编写定时任务
3) 定时任务的语法格式(通用,跟正则表达式)
六、Linux实战
1、grep
2、find
3、实战一下:
find+tar指令
find+cp
一、Linux的两种软件安装方式
1、Yum源配置
使用yum命令进行软件安装是linux安装文件的一个重要部分。
yum install -y 软件的名字
-y 一路yes
它会通过一个yum源配置的网址进行软件的下载,并安装
1、要联网(不是废话)
2、网址的网速要快
yum 源默认的网址是国外的,所以,一般修改yum源为国内的。
将yum源地址修改为国内的阿里的。
其实如果是修改yum源为aliyun的话,只需要执行一句:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
修改阿里云的镜像文件:
1、cd /etc/yum.repos.d/
2、备份⼀下:mv 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
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 安装包下载下来之后,又使用命令给你安装了一遍而已。
yum源安装软件的时候,如果一个软件依赖于另一个软件,都会一并安装。
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 mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
可以通过这种方式删除一个个的软件。
3、安装mysql8.0
1、上传,解压
tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar
z 代表的意思是使用到了gzip这个软件,一般用于解压 .gz 压缩包,假如没有,就不要使用 z
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
先进入mysql:
mysql -uroot -p 敲回车
粘贴密码即可
如何整一个非常好记的复杂密码:
cfxj 12345
可以这么干:c1f2x3j45!
先将密码修改成一个复杂的密码:
alter user root@localhost identified by c1f2x3j45!;
修改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;// 刷新权限,让其立即起作用。
使用navicat 去连接mysql新版,会报错:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
使用这个sql语句可以修复上面的错误!
exit 退出mysql客户端
二、对虚拟机进行克隆
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
可能会遇到的问题:
1、远程拷贝,需要两台都启动
2、无法识别bigdata02 解决办法:修改 /etc/hosts 文件
四、服务器之间的免密操作
比如: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的明文和自己当初的明文对比一下,发现正确就可以免密登录了。
参考图:
1、免密登录是单项的,bigdata01可以免密登录bigdata02,但是02却不能免密登录01
2、如果bigdata01想免密登录自己,也需要拷贝公钥给自己 ssh-copy-id bigdata01
五、Linux定时任务
1、什么是定时任务
只要是一个开发语言,都有定时任务。
今天要学习的是Linux的定时任务,其他技术,比如Java也有定时任务。
2、Linux中的定时任务(crontab)
1) 定时任务如何开启和关闭
cron服务的相关命令:
启动定时任务的服务: systemctl start crond
关闭定时任务的服务: systemctl stop crond
重启定时任务的服务: systemctl restart crond
重新载⼊定时任务的配置:systemctl reload crond
查看定时任务的状态: systemctl status crond
不管是网络服务,还是防火墙,还是其他的,都是 start stop restart status
而且在CentOS6.X 跟CentOS 7 之间命令差距很大。
2)如何编写定时任务
crontab -e 进入定时任务的编辑界面
cd /home
touch test.txt
*/1 * * * * echo "Good Moring" >> /home/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
crontab在线生成器 - kjson在线工具
每天晚上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。
六、Linux实战
1、grep
在文件中查找内容
#常规用法
#grep 内容 路径下的文件
#1.在/etc/passwd文件中,查找'root'
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologinroot' /etc/passwd
#2.在在/etc/passwd文件中,查找'root',并显示在行号
[root@localhost ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
#3.过滤出secure文件中failed password的行不区分大小写
[root@localhost ~]# grep -n -i 'root' /etc/passwd
取反:
grep -v root /etc/passwd
#***************高级+正则***************
#在/etc/passwd中查找root开始的用户信息;
[root@bigdata01 home]# grep -n '^root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
不是root开头的:
[root@localhost ~]# grep -nv '^root' /etc/passwd
练习:
1.在/var/log/secure中过滤出'Failed';
grep -n 'Failed' /var/log/secure
2.在/var/log/secure中过滤出'Failed',并统计有多少行数;
grep -c 'Failed' /var/log/secure
grep Failed /var/log/secure | wc -l
wc test.txt
4 8 52 test.txt
第一个数字代码:行数
第二个数字代表:单词数量
第三个数字代表:文件大小
– 统计文件的行数:
wc -l filename
比如: wc -l test.txt
– 统计文件的字符数:
wc -c filename
– 统计文件的单词数:
wc -w filename
实战一下:
[root@bigdata01 home]# wc -l test.txt
4 test.txt
[root@bigdata01 home]# wc -w test.txt
8 test.txt
[root@bigdata01 home]# wc -c test.txt
52 test.txt
2、find
#语法格式
find 目录 指定类型 指定名字
#复习1.在/etc/目录中找出文件名叫hostname文件
[root@localhost ~]# find /etc -name hosts
/etc/hosts
#复习2.在找出/etc/下面以.conf结尾的文件
[root@localhost ~]# find /etc -name *.conf
大于 使用+加号 -size +10k 大于10k文件
小于 使用-减号 -size -10k 小于10k文件
#3.根据大小找出文件 在/etc/目录下面找出大于10kb的文件
find /etc -size +10k
查找出来的内容如何验证是否正确呢?
[root@bigdata01 home]# du -h /etc/postfix/access
24K /etc/postfix/access
#未来主要用于查找系统日志文件,旧的日志文件。7天之前的文件
#4.找出/etc/目录下以.conf结尾的,最近7天之前的文件
[root@localhost ~]# find /etc -name *.conf -mtime -7
/etc/resolv.conf
/etc/X11/xorg.conf.d/00-keyboard.conf
/etc/nsswitch.conf
#5.找出/etc/目录下以.conf结尾的,7天之前的文件
[root@localhost ~]# find /etc -type f -name *.conf -mtime +7
查找出来的文件如何知道是正确的呢?
stat 验证
stat 文件名 可以查看这个文件的所有详细信息
[root@bigdata01 home]# stat /etc/chrony.conf
文件:"/etc/chrony.conf"
大小:1108 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33633337 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:etc_t:s0
最近访问:2018-04-13 01:37:54.000000000 +0800
最近更改:2018-04-13 01:37:54.000000000 +0800
最近改动:2024-07-22 09:50:38.952097093 +0800
由以上 时间轴可以看出,最右边为当前时,+5 代表大于等于 6 天前的文件名, -5 代表小于等于 5 天内的文件名, 5 则是代表 5-6 那一天的文件名。
#6.找出/etc/中以.conf结尾大于10kb修改时间是7天之前的文件
[root@localhost ~]# find /etc -name *.conf -mtime +7 -size +10k
/etc/lvm/lvm.conf
#7.查找文件的时候指定最多找多少层目录
#-maxdepth 1 选项位置第1个,指定find命令查找的最大深度,不加上就是所有层。
find / -maxdepth 2 -type f -name "*.conf"
[root@localhost ~]# find / -maxdepth 2 -name "*.conf"
/etc/resolv.conf
/etc/libaudit.conf
/etc/dracut.conf
-maxdepth 属性不能在 name 之后,否则报错!!!
#8.结合``符号案例,目标将所有查询的文件以列表形式显示,类似于ll
[root@bigdata01 home]# ls -l `find /etc -maxdepth 2 -name *.conf -mtime +7 -size +10k`
-rw-r--r--. 1 root root 94435 4月 11 2018 /etc/lvm/lvm.conf
#下述方式也可以
[root@bigdata01 home]# ls -l $(find /etc -maxdepth 2 -name *.conf -mtime +7 -size +10k)
-rw-r--r--. 1 root root 94435 4月 11 2018 /etc/lvm/lvm.conf
不是所有命令都可以使用管道符来解决:
[root@bigdata01 home]# find /etc -maxdepth 2 -name *.conf -mtime +7 -size +10k | ls -l
查找出来的结果就是错误的。
#解决方案:xargs 参数传递,主要让一些不支持管道的命令可以使用管道技术
[root@bigdata01 home]# find /etc -maxdepth 2 -name *.conf -mtime +7 -size +10k | xargs ls -l
-rw-r--r--. 1 root root 94435 4月 11 2018 /etc/lvm/lvm.conf
#理解xargs把前面命令传递过来的字符串转换为后面命令可以识别的参数。
#温馨提示: |xargs后面无法使用 ll,它是别名。
#exec方式(了解即可)
[root@bigdata01 home]# find /etc -maxdepth 2 -name *.conf -mtime +7 -size +10k -exec ls -l {} \;
-rw-r--r--. 1 root root 94435 4月 11 2018 /etc/lvm/lvm.conf
-exec选项用于对每个找到的文件执行指定的命令。在这个例子中,-exec ls -lh {} \;表示对于每个匹配到
的.conf文件,执行ls -lh命令来显示其详细信息。
具体来说,{}是一个占位符,代表当前找到的文件路径。\;是-exec选项的结束标志。
3、实战一下:
find+tar指令
#find找出/etc/ 以.conf结尾的文件放在/tmp/find.tar.gz
[root@localhost ~]# tar zcf /tmp/find01.tar.gz `find / -maxdepth 2 -name "*.conf"`
[root@localhost ~]# find / -maxdepth 2 -type f -name "*.conf" | xargs tar -czf
/tmp/find02.tar.gz
find+cp
mkdir /tmp/log
[root@localhost ~]# cp `find /var/log -name yum*.log ` /tmp/log/
[root@localhost ~]# ll /tmp/log/
总用量 0-rw-------. 1 root root 0 7月 10 23:45 yum.log