一.SSH免密码登录
## Same thing without a password ##可以配置不输入密码
# %wheel ALL=(ALL) NOPASSWD: ALL
user ALL=(ALL) NOPASSWD: ALL
二.数据处理工具 : cut
cut : 高级文本处理命令
cut是一个选取命令,就是将一段数据经过分析,取出我们想要的数据,一般来说,选取的
信息通常针对行来进行,并不是整篇信息一起分析
cut的语法
cut [-bn] [file]
cut [-c] [file]
cut [-df] [file]
-b 表示byte,以字节为单位取出固定的字节区间,这些字节位置忽略多字节边界,除
非与-n一起使用
-n 表示取消分割多字节字符,只与-b一起使用;如果字符的最够一个字节落在了参数
区间内,那就会将这个字符取出,如果不在参数区间内,那么就舍弃
中国 -nb 2-5 中
-c 表示char 以字符为单位,取出固定字符区间
中国人 -c 1-2 中国
-d 表示自定义分隔符,默认是制表符,与-f一起使用
-f 表示field 依据-d分割字符,将一段信息分割成多个字段,用-f表示取出第几个字段
-b的使用
取出每行的第三个字节who | cut -b 3
取出每行第三个到最后一个字节 who | cut -b 3-
取出每行第一个到第三个字节 who | cut -b -3
取出每行第2-4个和第10个字节 who | cut -b 10,2-4
注意:cut命令如果使用-b选项,name执行该命令时,cut会将后面的定位进行从小到
大排序,然后按照排好的顺序取出数据
who | cut -b -3,2-
注意:取出全部的内容,排除重复的定位
-c的使用
vi 1.txt
-------------
星期一
星期二
星期三
星期四
星期五
星期六
星期七
星期八
--------------
cut -c 1,2 1.txt
cut -c -2,1- 1.txt
vi cls.txt
-------------------
苍老师是个好老师
喜欢中国文化
爱好写大字
------------------
cut -b 2-5 cls.txt
cut -nb 2-5 cls.txt
cut -c 2-5 cls.txt
-f的使用 表示field
echo $PATH | cut -d ':' -f 4,3
[root@hadoop01 home]# echo $PATH | cut -d ':/' -f 4,3
cut: the delimiter must be a single character
Try `cut --help' for more information.
注意:分割符只能是一个字符,或者空格,如果分割符是多个字节或字符,cut无效
cut的缺陷
处理多分割符的数据时,cut不支持,只支持单字符的分割
三.awk
文本分析工具 : 将数据逐行读入,默认以空格进行切片切开的部分再进行各种分析处理
使用方法 : awk '{pattern + action}'
pattern表示awk在数据中查找的内容,action表示在查找到的匹配内容执行的动作或者
说一系列指令
{}不需要在程序中始终出现,但是他们用于根据特定的形式进行一系列的执行进行分组
awk {begin}{}{end}
通常来说:awk是以文件的一行为处理单位,awk每接收一行数据执行相应的命令
awk的调用方式:
1.命令行 awk [-F files -separator] 'command' input-files
command : awk的指令的集合
-F files : 域分隔符
input-files : 要处理的文件(可以由多个)
2.shell脚本方式将所有的awk命令写入一个文件,并使用awk脚本可执行,然后用awk
命令解析器作为脚本的首行,以便通过awk脚本来解析调用,相当于shell脚本首行的
#!/bin/bash
3.将所有的awk命令插入一个单独的文件然后调用awk -f + awk脚本 + input-files
-f 表示要加载的awk命令集合的文件
input-files 表示要处理的文件
相当于awk -f awk.sh /data/cls.txt
命令行执行(practese)
1.打印last -5结果的第一个字段(以空格切分)
last -5 | awk '{print $1}'
last -5 | awk '{print $1,$2}'
last -5 | awk '{print $1","$2}'
逗号加上引号就可以原样输出
2.显示/etc/passwd的文件的账号信息
cat /etc/passwd | awk -F ':' '{print $1}'
显示/etc/passwd/的第一列与第七列的内容,之间用'\t'分割
awk -F ":" '{print $1'\t'$7}' /etc/passwd
3.输出账户和对应的shell,在首行加入name,shell,尾行加入youxiu,如下:
name,shell
user,/bin/bash
.
.
.
youxiu
awk -F ':' 'BEGIN{print "name,shell"}{print $1","$7}END{print "youxiu"}' /etc/passwd
4.记录每一行的行号
awk -F ':' 'BEGIN{print "name,shell" ;a=0}{a++; print a,$1","$7}END{print "youxiu"}' /etc/passwd
5.awk内置变量的使用
awk -F ':' '{print "filename:" FILENAME",linenumber:"NR",cloimns:"NF",line"$0}' /etc/passwd
6.变量的声明和赋值
变量的声明在BEGIN中声明,不声明可以直接使用,初始值是0;但是一般使用变量尽量先声明后使用,可读性更好
awk -F ':' 'BEGIN{print "name,shell" }{a++; print a,$1","$7}END{print "youxiu"}' /etc/passwd
在BEGIN中声明一个变量count,记录系统中用户的个数,在END中输出用户的总数
7.awk的执行流程
先分割,BEGIN;ACTION;END
BEGIN和END只执行一次,ACTION执行多次(有多少行数据就执行多少次)
ACTION 可以由多个语句,以分号隔开
8.统计某个文件夹下文件占用的字节数
ll | awk 'BEGIN{size=0}{size=size+$5}END{print size}'
9.统计某个目录实际占用的磁盘的大小 /mnt/centos
ll -R /mnt/centos | awk 'BEGIN{size=0}{size=size+$5}END{print size}'
10.统计某个文件夹下,文件占用的字节数,大小为4096的是目录
size用于记录文件占用的字节数,count用于记录当前目录下目录的个数
ll | awk 'BEGIN{size=0;count=0}{if($5!=4096){size=size+$5}else{count++}}END{print size","count}'
11.循环语句
awk循环语句while,dowhile,for,支持break,continue
12.数组
awk中的数组的下标可以是数字和字母,数组的下标通常被称为关键字(key),值和
关键字存储在一张哈希表里,不是顺序存储.数组和变量一样,都是在使用时创建的,
awk会自动判断其存储的类型是数字还是字符串.一般来说,awk中的数组收集记录中
的信息,可以用于计算总和,统计单词,跟踪模板匹配次数
练习1:将所有/etc/passwd用户名放在一个数组中,在END中循环输出用户名的数组及数组的key
awk -F ':' 'BEGIN{count=0;}{name[count]=$1;count++;}END{for(i=0;i<NR;i++){print i,name[i]}}' /etc/passwd
练习2:用户id的累加和
练习3:用户id的最大值
练习4:uid的平局值
四.crontab配置
通过crontab命令,我们可以在固定的时间执行指定的系统指令和shell脚本
时间间隔的单位可以是分钟,小时,日,周,月以及上述的组合
非常适合周期性的日志分析,或者数据的备份工作
服务的管理:
service crond start/stop/restart/status
命令的格式:
crontab [-u user] file
crontab [-u user] [-e | -l | -r]
参数:
-u user : 用来设置某个用户crontab服务 crontab -u hadoop
file : 命令文件的名字,表示该文件作为crontab任务的执行列表文件并载入crontab
任务 crontab -u hadoop file
-e : 编辑某个用户的crontab任务,如果不指定用户,则表示编辑当前用户
-l : 列举某个用户的crontab任务
-r : 删除某个用户的crontab任务
配置说明:
* * * * * command
分 时 日 月 周 命令
分:表示分钟从1-59,每分钟用*/1表示
时:表示0-23小时
天:1-31,表示日期
月:1-12,表示月份
周:0-6,表示星期几,0表示日
crontab -e
五.时间同步
1.date -s "2018-10-18 16:38" hwclock -w
2.配置时间服务器,集群的其他机器都跟其中一台机器同步时间---定时任务执行时间同步的操作
(1)时间同步服务器需要安装ntp服务 hadoop01
>yum list | grep ntp
>yum -y install ntp.x86_64
>vi /etc/ntp.conf
--------------------------------------
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.91.0 mask 255.255.255.0 nomodify notrap ##添加网段
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool. ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0##先禁用4个自带的服务,添加server 127.127.1.0
---------------------------------------
>service ntpd start
(2)客户端(需要做时间同步的机器) 需要安装另一个软件 ntpdate hadoop02 和 hadoop03
yum list | grep ntp
yum -y install ntpdate.x96_64
六.集群的基本需求
网络互通
主机映射
防火墙关闭
时间同步
SSH免密码登录
每台机器进jdk安装好,配置好环境变量
安装一个数据库(一台机器上就可以)