Linux crontab、软连接、后台执行

Posted by Jackson on 2017-07-15

1.调度工具的选择

  • airflow
  • azkaban 用的比较多
  • rundeck 用的比较多
  • crontab 定时脚本(Linux自带)

sh脚本文件:

开头:#!/bin/bash ===>解释器
命名:xxx.sh
没有开头和后缀命名的时候,使用sh命令也可以执行
脚本需要执行的权限

2.crontab的使用

查看命令帮助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost /]# 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 <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-x <mask> enable debugging

crontab -e

* * * * * sh /root/test.sh >> /root/test.log

* 代表的是每的意思
前面的五位依次代表的是:分钟 小时 日 月 周 最后是要执行的命令

使用crontab -r 清除定时任务

这里的crontab是从分钟开始的,那么如果要是从秒开始应该怎么做?比如10秒执行一次

解决:可以在定时任务里面用for循环控制

1
2
3
4
5
6
7
8
9
#bin/bash

for((i=1;i<6;i++))
do
date
sleep 10s
done

exit

3.后台执行脚本

1
2
3
4
三种形式:
./test.sh & ===>开发测试使用
nohup /root/test.sh &
nohup /root/test.sh 2>&1 & ===>生产上面使用

4.软连接

软连接的作用:可以防止以后升级版本带来的不便
语法: ln -s originPath desPath
使用场景:

1
2
3
4
5
6
7
8
 a.CDH 升级的时候可以将原来版本文件夹删掉,用软连接指向新的版本
b.做软连接的时候最好使用绝对路径(建议)
c.磁盘挂载的时候
比如数据盘不够了,可以将数据文件夹移动到新的磁盘挂载目录,然后用软连接指向过去
有CDH的log日志文件,磁盘空间不足,新的磁盘已经挂载在/data01/log下面
mv /var/log/hbase /data01/log
ln -s /data01/log/hbase /var/log/hbase
在指向的方向是后面目录指向前面目录,单向指向

注意:在大数据环境中想要查看某个文件夹的权限可以从不同的机器进行查看