我刚刚开始为一家公司工作,他们使用“自制”调度程序在他们的批处理上运行了数百个shell脚本,其他一些脚本由陆上/海上的某人手动运行
所以我正在考虑执行以下步骤来查明脚本是否超出运行,运行速度是否太快,或者生成的输出文件是否太小,太大等等:
*如果不触及任何现有的unix脚本,就可以 * **** < / p>
1 - 创建一个新的shell脚本,该脚本将监视所有正在运行的其他脚本,并实时创建/更新以下文件(每天1个文件)
Script Name pid StartTime EndTime Elapsed time Output files
/app/scripts/scriptA.sh -x 222 1234 18/12/2013 12:00:00 18/12/2013 12:01:00 00:01:00 /app/data/customers222_20131218120000.dat
/app/data/temp/customers222_20131218120000.dat
/app/scripts/scriptA.sh -x 222 2223 18/12/2013 14:00:00 18/12/2013 14:01:00 00:01:00 /app/data/customers222_20131218140000.dat
/app/data/temp/customers222_20131218140000.dat
/app/scripts/scriptA.sh -x 333 1235 18/12/2013 12:00:00 18/12/2013 12:01:00 00:20:00 /app/data/customers222_20131218120000.dat
/app/scripts/scriptB.sh -y 8888 1236 18/12/2013 13:00:00 18/12/2013 13:00:05 00:00:05 /app/data/suppliers888_20131318130005.dat
2 - 在数据库中加载monitor_running_scripts_YYYYMMDD.dat以构建我的统计信息或者使用文件 收集统计数据几天后,我会知道
/app/scripts/scriptA.sh -x 222输出2个文件,avarage运行时间为1分钟 /app/scripts/scriptA.sh -x 333输出2个文件,avarage运行时间为20分钟
3 - 创建警报触发器
如果步骤1已经到位,我没有任何问题需要构建步骤2和3。所以我想听听一些关于如何开始执行第1步的建议
操作系统:AIX
答案 0 :(得分:1)
基本上你可以用包裹shell执行和日志到该文件的脚本替换/bin/bash
或/bin/sh
或任何shell。包装bash可能看起来像:
# backup shell
cp /bin/bash{,_orig}
# create wrapper (overwrite shell)
cat <<EOF > /bin/bash
#!/bin/bash_orig
# get starting time
time_start=$(date)
command="$0"
# start original shell
bash_orig $@
pid=$!
# stop time
time_stop=$(date)
# write to log
echo "$command $pid $time_start $time_stop" >> monitor.log
EOF
如果你的系统上有更多的shell,它需要更多关注,但这应该指向正确的方向。
如果您曾经完成监控,可以使用以下方法禁用此功能:
mv /bin/bash{_orig,}
取回原始外壳。