Linux4--SSH, awk, cut, crontab, 时间同步

xiaoxiao2025-05-29  34

文章目录

一.SSH免密码登录二.数据处理工具 : cut三.awk四.crontab配置五.时间同步六.集群的基本需求

一.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安装好,配置好环境变量 安装一个数据库(一台机器上就可以)

​ ​

转载请注明原文地址: https://www.6miu.com/read-5030883.html

最新回复(0)