一、常用调度工具
azkaban
rundeck
airflow:需要写Python
linux自带调度:crontab
- crontab -e:编辑
- crontab -l:查看
#编辑调度脚本
crontab -e
insert编辑
* * * * * /root/byy/test.sh >> /root/byy/test.log #将test.sh的内容追加到test.log文件中
保存退出
#查看调度文件内容
crontab -l
* * * * * /root/byy/test.sh >> /root/byy/test.log
调度周期即5个*:每分 每小时 每天 每月 每周(crontab最细周期到分钟)
被调度文件需要可执行
示例:每10秒调度一次
实现方式:每分钟调度6次(可以将调度文件设置成执行6次,每10秒执行一次;然后调度周期设置为1分钟)
#编辑源文件
vim /root/byy/test.sh
#让脚本循环执行6次
for ((i=1;i<=6;i++;do date;sleep 10s;done;exit
或
i=1
while [ $i -lt 6 ];do date;let i=$i+1;sleep 10s;done
保存退出
#编辑调度文件
crontab -e
* * * * * /root/byy/test.sh >> /root/byy/test.log #将test.sh的内容追加到test.log文件中
保存退出
#查看文件内容追加过程,即调度过程
tail -F /root/byy/test.log
Mon Feb 1 16:56:56 CST 2021
Mon Feb 1 16:57:06 CST 2021
Mon Feb 1 16:57:16 CST 2021
Mon Feb 1 16:57:26 CST 2021
Mon Feb 1 16:57:36 CST 2021
Mon Feb 1 16:57:46 CST 2021
二、后台执行(终端退出后命令仍旧执行)
- 路径/文件 &
- nohup 路径/文件 &
(常用)手动启动脚本、看日志是否报错、开发维护、测试(自动把执行结果放在nohup.out文件中,若执行报错,也会将错误显示在此文件中) - nohup 路径/文件 > 路径/目标文件 2>&1 &
生产上用(将标准错误2输出到标准输出&1中,标准输出&1再重定向输入到目标文件中,其实就是把错误日志输出到目标文件中)
若要停止运行,可以找到文件在后台执行的进程pid
ps -ef |grep 文件名
然后杀掉进程
kill -9 pid
chmod 644 ./byy4.txt #给文件赋予执行权限
nohup ./byy4.txt & #后台执行文件
cat nohup.out #查看执行结果(也可以看出是否报错)
ps -ef |grep byy4.txt #查看进程pid
kill -9 pid #杀掉进程
常见报错一:说明文件没有执行权限
输入 nohup ./byy4.txt & 出现以下报错
nohup: ignoring input and appending output to 'nohup.out'
nohup: failed to run command './byy4.txt': Permission denied
解决措施:给文件执行权限或用命令执行
chmod 644 ./byy4.txt
或
nohup /bin/bash ./byy4.txt &
常见报错二:说明文件没有加路径
文件要带路径,避免报错
输入 nohup byy4.txt & 出现以下报错
nohup: ignoring input and appending output to 'nohup.out'
nohup: failed to run command 'byy4.txt': No such file or directory
解决措施:给文件带上路径
nohup ./byy4.txt &
三、软连接(类似于一个文件夹映射到新文件夹中)
ln -s 源文件夹 目标文件夹
- 配置目标文件夹后,源文件夹也适用这个配置
软连接可以用于软件配置,以便于升级:每安装一款软件时,先建立软连接,然后在环境变量里把软连接的目标文件夹配置好。升级时,先删除低版本软件的软连接,再新建新版本软件的软连接(目标文件夹名称不变);这样就不需要配置新版本的源文件了,因为目标文件夹在环境变量里的配置可以直接适用与新版本文件夹 - CDH升级时,源文件不见后,目标文件名中的源文件名会跳动,此时可以寻找源文件是否被移走,或者直接删除目标文件夹,新建软连接
示例:升级软件
#在安装mysql5.6以后,就建立mysql软连接,配置好环境变量
ln -s /opt/mysql5.6 /opt/mysql
ll #查看软连接是否建立(mysql -> /opt/mysql5.6)
drwxr-xr-x. 2 root root 6 10月 31 2018 rh
drwxr-xr-x. 2 root root 6 10月 31 21:51 mysql5.6
lrwxrwxrwx. 1 root root 5 2月 1 21:59 mysql -> /opt/mysql5.6
#MySQL升级
mv /opt/mysql5.6 /tmp/mysql5.6 #此时mysql -> /opt/mysql5.6中的/opt/mysql5.6会跳动,表示/opt/mysql5.6已经不存在当前路径了
#删除mysql5.6的软连接,新建mysql5.7的软连接
rm -rf /opt/mysql
ln -s /opt/mysql5.7 /opt/mysql
ll #查看软连接是否建立(mysql -> /opt/mysql5.7)
drwxr-xr-x. 2 root root 6 10月 31 2018 rh
drwxr-xr-x. 2 root root 6 10月 31 21:51 mysql5.7
lrwxrwxrwx. 1 root root 5 2月 1 21:59 mysql -> /opt/mysql5.7
#新版本mysql的软连接建立成功,名称未变还是mysql,所以环境变量也不需要重新配置,直接使用mysql5.7即可
示例:CDH 的Hbase的log文件换盘
例如,系统盘 / 是50G,数据盘 /data01 是2T,而CDH的log文件是存储在系统盘/var/log/hbase/xx.log中,大小为1G;而/var/log/hbase/xx.log会自动备份10份,也就是占内存10G,此时对系统盘的占用过大,那么就可以将其转移到数据盘,然后建立软连接到系统盘,此时就减少了系统盘的内存压力
#在/data01中新建文件夹存储Habase日志,并将系统盘日志迁移到文件夹中
mkdir /data01/log
mv /var/log/hbase /data01/log
#新建软连接
ln -s /data01/log/hbase /var/log/hbase