剑指数据仓库-Shell命令五

一、上次课程回顾

二、Linux基础命令五

  • 2.1、vi命令解读
  • 2.2、命令行模式中的快捷键
  • 2.3、常见的系统命令
  • 2.4、查看进程端口号
  • 2.5、yum安装httpd服务
  • 2.6、httpd测试127.0.0.1地址访问
  • 2.7、高危命令之kill
  • 2.8、yum软件的安装和卸载(卸载的时候不去校验依赖)
  • 2.9、wget下载安装包、压缩、解压

三、作业

一、上次课程回顾

  • 若泽大数据github博客:https://ruozedata.github.io/archives/
    hexo自行搭建github博客的好处:可以自行修改时间,为了以后未来找工作嘿嘿嘿;使用csdn这些时间都是固定的死的。
  • Linux Shell命令四:https://blog.csdn.net/SparkOnYarn/article/details/104830312

二、Linux基础命令五

2.1、大数据crontab的使用

1、关于大数据的调度工具:

  • airflow、azkaban、ozzie、rundeck(哔哩哔哩若泽大数据)
  • Linux自带的crontab工具:

2、shell脚本的测试使用:

1、打印shell脚本的时间:
[hadoop@hadoop001 test]$ cat test.sh
#!/bin/bash
date
[hadoop@hadoop001 test]$ ll
total 8
-rw-rw-r-- 1 hadoop hadoop 172 Mar 14 13:03 1.zip
-rw-rw-r-- 1 hadoop hadoop   0 Mar 13 16:14 rz.log
-rw-rw-r-- 1 hadoop hadoop  17 Mar 14 23:05 test.sh
[hadoop@hadoop001 test]$ ll
total 8
-rw-rw-r-- 1 hadoop hadoop 172 Mar 14 13:03 1.zip
-rw-rw-r-- 1 hadoop hadoop   0 Mar 13 16:14 rz.log
-rw-rw-r-- 1 hadoop hadoop  17 Mar 14 23:05 test.sh
[hadoop@hadoop001 test]$ ./test.sh
-bash: ./test.sh: Permission denied
[hadoop@hadoop001 test]$ chmod 744 test.sh 
[hadoop@hadoop001 test]$ ./test.sh 
Sat Mar 14 23:13:26 CST 2020

2、正常的xxx.sh的shell脚本:
#!/bin/bash
shell脚本执行需要rwx中的x执行权限
./xxx.sh
或者sh ./xxx.sh

后缀.sh	第一行#!/bin/bash 的解释器没有的话,直接使用sh ./test来执行也是可以的。

3、crontab的使用:

1、crontab --help查询如何使用:
[hadoop@hadoop001 test]$ crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
Usage:
 crontab [options] file
 crontab [options]
 crontab -n [hostname]

Options:
 -u <user>  define user
 -e         edit user's crontab
 -l         list user's crontab
 -r         delete user's crontab
 -i         prompt before deleting
 -n   set host in cluster to run users' crontabs
 -c         get host in cluster to run users' crontabs
 -s         selinux context
 -x <mask>  enable debugging

Default operation is replace, per 1003.2

2、crontab -e来编辑使用脚本:
* * * * * /home/hadoop/test/test.sh >> /home/hadoop/test.log

//这5个*分别代表分、小时、日、月、周

3、保存退出提示如下:这个目录是临时的保存完了就没有了:
"/tmp/crontab.Dn9VxW" 2L, 62C written
crontab: installing new crontab

面试题:crontab调度的shell脚本怎么做到每隔10秒执行一次?

1、编辑test.sh shell脚本
vi /home/hadoop/test/test.sh
[hadoop@hadoop001 test]$ cat test.sh 
#!/bin/bash

for ((i=1;i<=6;i++))

do
        date
        sleep 10s
done

exit

2、赋予x执行权限:
chmod 744 /home/hadoop/test/test.sh

3、编写调度脚本:crontab -e
* * * * * /home/hadoop/test/test.sh >> /home/hadoop/test1.log

4、tail -F /home/hadoop/test1.log

2.2、crontab如何后台执行

1、后台执行:
./test.sh &		
nohup ./test.sh &	工作中这种比较常用
nohup ./test.sh >> /home/hadoop/test.log 2>&1 &		生产上使用这种

2、生产上的后台执行:
[hadoop@hadoop001 test]$ nohup ./test.sh &
[1] 1521
[hadoop@hadoop001 test]$ nohup: ignoring input and appending output to 鈥榥ohup.out鈥
^C
[hadoop@hadoop001 test]$ nohup ./test.sh > /home/hadoop/test2.log 2>&1 &
[2] 1553
[1]   Done                    nohup ./test.sh

3、打印
[hadoop@hadoop001 test]$ cat nohup.out
Sat Mar 14 23:54:14 CST 2020
Sat Mar 14 23:54:24 CST 2020
Sat Mar 14 23:54:34 CST 2020
Sat Mar 14 23:54:44 CST 2020
Sat Mar 14 23:54:54 CST 2020
Sat Mar 14 23:55:04 CST 2020
[2]+  Done                    nohup ./test.sh > /home/hadoop/test2.log 2>&1

2.3、软连接

  • 目的为了软件升级

  • 场景:比如生产上有两个mysql版本,mysql5.6和mysql5.7;

1、语法:ln -s mysql-5.7.11-linux-glibc2.5-x86_64 mysql
lrwxrwxrwx   1 mysqladmin dba    35 Mar  5 16:14 mysql -> mysql-5.7.11-linux-glibc2.5-x86_64/
drwxr-xr-x  13 mysqladmin dba  4096 Mar  9 12:36 mysql-5.7.11-linux-glibc2.5-x86_64
  • 做了软连接之后,以后配置环境变量的时候就可以直接/usr/localmysql,软连接就相当于是一个快捷方式。

  • 语法:ln -s 原path 目标path

生产中遇到的情况:

CDH升级,原文件丢失,现在的文件过来路径找不到;

1、创建mysql-5.7.11-linux文件夹:
[root@hadoop001 hadoop]# mkdir mysql-5.7.11-linux

2、做一个软连接:
[root@hadoop001 hadoop]# ln -s mysql-5.7.11-linux mysql
[root@hadoop001 hadoop]# pwd
/home/hadoop

3、测试把mysql-5.7.11-linux mysql这个目录删除,会发现光标软连接的光标跳动:
[root@hadoop001 hadoop]# rm -rf mysql-5.7.11-linux/
[root@hadoop001 hadoop]# ll
total 16
drwxrwxr-x 2 hadoop hadoop 4096 Mar  5 15:58 app
drwxrwxr-x 2 hadoop hadoop 4096 Mar  5 15:59 data
drwxrwxr-x 2 hadoop hadoop 4096 Mar  5 15:58 lib
lrwxrwxrwx 1 root   root     19 Mar 15 00:07 mysql -> mysql-5.7.11-linux/
drwxrwxr-x 2 hadoop hadoop 4096 Mar 11 14:32 software
-rw-r--r-- 1 hadoop hadoop    0 Mar 15 00:06 test1.log

4、删除快捷方式:
rm -rf mysql

解决:

1、找到原文件的文件夹:
2、删除快捷键的文件、文件夹 --> 重新做软连接,大胆的删除快捷方式:rm -rf mysql

a.带有版本号的文件绝对不能配置在文件中,不要给自己挖坑:
b.J总个人建议使用绝对路径(别把自己绕晕,不好维护,全路径直观明了)

生产问题:

比如系统盘50G,数据盘data01有1T,
CDH的log文件都是在/var/log/hbase/xxx.log 1G,这个文件保存10份,但是这台机器不可能单单只布置一个服务,系统盘50个G的数据光日志文件就10G肯定是吃不消的。

解决方法:

mkdir /data01/log/
mv /var/log/hbase /data01/log
ln -s /data01/log/hbase /var/log/hbase

忽略了一个问题:当前盘要撑爆的时候,在进行日志文件迁移的时候,有可能存在权限的变更;看另外一台机器的权限(chown和chmod权限又是什么),不光光针对软连接进行修改,还针对文件夹进行修改。

三、本次课程作业

你可能感兴趣的:(剑指数据仓库-Shell命令)