1/6
首先,在脚本的编辑器中,编辑器输入所需的脚本信息。
2/6
然后点击sqldbx的菜单中的文件菜单。
3/6
点击文件菜单后,弹出下拉菜单,选择保存文件的选项。
4/6
这样会弹出另存为窗口界面,选择要保存的路径。
5/6
然后在重命名中输入脚本文件的名称,然后单击保存按钮。
6/6
然后查看相应路径下保存的文件。
trap是linux的内置命令,用来捕获信号。trap命令可以指定当接收到某个信号时要执行的命令。陷阱命令的格式如下:陷阱命令sig1,当接收到sinn中的任意一个信号时,执行command命令,command命令完成后继续接收信号前的操作,直到脚本结束。用trap命令捕获int信号(即绑定到ctrlc的中断信号)。trap也可以忽略一些信号,只是用空字符串替换命令,比如traptermint,忽略kill%n和ctrlc发送的信号(kill发送一个$term信号)。linux和更强大的杀死进程的命令:kill-9进程号(或kill-9%nnjob号)相当于kill-kill进程号。
例如
:
最近,小啊需要制作2015年全年的kpi数据报告。现在小啊已经编写了生产脚本,生产脚本一次只能生成指定日期的kpi数据。假设运行一次生产脚本需要5分钟,那么:
如果循环顺序执行,需要时间:5*3651825分钟,大概是6天。
如果将它一次性放入linux后台并发执行,系统可以t承担365后台任务!
因为365任务可以t在linux后台一次执行,n个任务能不能一次自动在后台执行?你当然可以。
#!/bin/bash
来源/etc/配置文件
#-
t:shloop_kpi2015-12-012015-12-07
2号出口
船方不负担装货费用
#-
陷阱执行1000gtamp-执行1000
mkfifo$tempfifo
exec1000$tempfifo
rm-rf$tempfifo
for((i1i
做
echogtamp1000
完成的
while[$begin_date!$end_date]
做
阅读-u1000
{
echo$begin_date
hive-fkpi_report.sql-hivevardate$begin_date
echogtamp1000
}安培
begin_date`date-d第1天$begin_date%y-%m-%d`天
完成的
等待
回声完毕!!!!!!!!!!
第6-22行:例如:shloop_kpi_2015-01-012015-12-01:
$1表示脚本的第一个参数,等于2015-01-01。
$2表示脚本的第二个参数,等于2015-12-01。
$#表示脚本参数的数量,等于2。
第13行用于比较两个传入日期的大小,gt是escape。
第26行:表示脚本运行时,如果收到ctrlc中断命令,将关闭文件描述符1000的读写,脚本正常退出。
exec1000gtamp-表示关闭文件描述符1000的写入。
exec1000
trap是一个捕获中断命令。
第27-29行:
第27行,创建一个管道文件。
第28行,将文件描述符1000绑定到fifo。如果文件描述符1000被绑定,则表明对文件描述符1000的所有操作都等同于对流水线文件$tempfifo的操作。
第29行,可能会有这样的疑问:为什么不直接使用管道文件?其实这也不是没有必要。管道的一个重要特征是读和写必须同时存在。如果缺少一个操作,另一个操作就会被搁置,第28行的绑定文件描述符(读写绑定)正好解决了这个问题。
第31-34行:写文件描述符1000。通过循环书写8空行,这个8是我们要定义的后台并发线程数。为什么要写空行而不是其他字符?因为管道文件是以行为单位读取的。
第37-42行:
第37行,read-u1000的功能是读取流水线中的一行,本例中为空行;每次读取管道时,都会减少一个空行。
第39-41行,注意第42行末尾的放大器?这意味着该进程在linux后台执行。
第41行:在执行后台任务后,在文件描述符1000中写入一个空行。这是重点,因为read-u1000的每一次操作都会导致流水线中减少一个空行。当八个任务放在linux后台时,read-u1000会一直等待,因为在文件描述符1000中没有空行可以读取。