linux脚本中action什么意思,常用的shell脚本

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`" [email protected] < /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

-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" [email protected] < 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'

你可能感兴趣的:(linux脚本中action什么意思,常用的shell脚本)