1. 磁盘监控发信脚本

随着数据文件的增加,磁盘可能会满,因此需要监控某文件夹所在磁盘使用状态,当使用率到达70%时发出警报,直接发送邮件到指定邮箱,可以通过autosys调度系统结合shell命令写出如下JIL脚本:

/*----------------------adw_uxdw1_monitor----------------------*/
insert_job:adw_uxdw1_monitor job_type:CMD
command:/bin/df -kh /adw/dw/appdata | /bin/sed -n '3p' | /bin/awk '{print substr($4,1,length($4)-1)}' | /bin/awk '{if($0>=70) print "exit 1"; else print "exit 0"}' | ksh
machine:adw
ownner:user@adw
peimission:
date_conditions:1
days_of_week:all
start_times:"03:00,09:00,15:00,21:00"
description:"to check disk space usage of directory /adw/dw/appdata"
std_out_file:">/adw/dw/appdata/log/adw_uxdw1_monitor.out"
std_err_file:">/adw/dw/appdata/log/adw_uxdw1_monitor.err"
alarm_if_fail:0

 /*----------------------adw_uxdw1_alter_mail----------------------*/
insert_job:adw_uxdw1_alter_mail job_type:CMD
command:/bin/mailx -s "Alert - Disk space usage of directory /adw/dw/appdata is greater than 70% on `date`" shanshan@gmail.com < /dev/null
machine:adw
ownner:user@adw
peimission:
date_conditions:0
start_times:e(adw_uxdw1_monitor)=1
description:"send alter eamail if the disk space usage is greater than 70%"
std_out_file:">/adw/dw/appdata/log/adw_uxdw1_alter_mail.out"
std_err_file:">/adw/dw/appdata/log/adw_uxdw1_alter_mail.err"
alarm_if_fail:1

1. df [选项] [文件]

  • 用于显示目前在Linux系统上的文件系统的磁盘使用情况统计,这里针对一个文件夹,会显示该文件夹所在磁盘信息
  • -h human-readable用人类可读的方式显示,具体就是比如size是显示468M而不是479156
  • -k like --block_size=1K 这里可加可不加

2. sed -hnV-f<script文件> or nl /etc/file | sed 'action'

  • -n --silent 静静地去掉自动空间,仅显示处理后结果
  • '3p' print第三行。这里因为文件名长出字段长度单独占了一行,所以use%在第三行

3. ... | awk '{[pattern] action}' --用法之一

  • print 打印出第四个变量($4从1开始计数,这里因为文件名在上一行,所以第五个字段use%在这里是第四个字符)截取的从第一个到倒数第二个字符的内容。也就是去掉最后一个字符%
  • '{}'里面可以用if, else。 exit是一个状态,相当于返回值。

2. 任务完成发信脚本

任务完成时常常需要发信通知,这里仅列出发信命令,至于任务完成,这里通过脚本直接记录在文件OK.csv中(完成日,任务简称SRC,任务来源地,行数)这样记录。因此发信命令通过读取该文件完成。
/bin/mailx -s "$${REGION}-REGION: TheDate:bin\cat /usr/staging/OK.csv | grep SRC | awk -F"," '{print }'"

4. mailx -s "email subject" aaa@abc.com < file

  • 用于发送邮件的命令,-s是subject的意思,一般都要带
  • < file 指的是邮件内容为file的内容

3. 按日依次跑批脚本

#!/bin/bash
end_date="2019-05-03"
begin_date="2019-05-01"
while [[ $begin_date < $end_date  ]]
do
    beeline -u jdbc:hive2://ip -n user_name -p pswd  -hiveconf dt="${begin_date}" -f /var/lib/dw/script_s.sql 
    begin_date=date -d "+1 day $begin_date" +%Y-%m-%d
    echo $begin_date
done
echo 'sucess'

一闪一闪
7 声望2 粉丝