Linux系统下脚本记录与循环执行参数示例

需积分: 10 1 下载量 21 浏览量 更新于2024-08-05 收藏 2KB TXT 举报
"这是关于在Linux系统下记录执行文件日志的一种方法,特别是针对脚本或命令行工具的运行。此范本展示了如何设置错误处理、记录开始时间、创建日志目录、保存日志以及循环遍历两个参数列表(年月数组和省份数组)来执行任务。" 在Linux环境中,正确记录程序的运行情况对于调试和问题排查至关重要。这个示例展示了如何创建一个日志系统,用于跟踪脚本或特定文件(在这个例子中是`hql_path`下的`sharemarket_allload.hql`文件)的执行情况。 首先,`source /etc/profile`用来激活环境变量,确保所有必要的路径和配置都已加载。`set -e`命令通常用来设置脚本的退出策略,使得一旦有任何命令返回非零状态(表示错误),脚本就会立即停止执行,但在这个范例中并未启用。 然后,`start_time`和`start_time1`分别获取了系统当前时间的Unix时间戳和易读格式,便于追踪任务的开始时间。 `parent_path`通过`cd ../; pwd`获取到当前目录的上一级路径,这样可以确保日志文件保存在与执行文件相同的目录结构中。`log_path`被定义为`parent_path`下的`log_files`子目录。如果该目录不存在,`mkdir -p`会创建它。 `hql_path`变量存储了HQL文件所在的路径,而`exe_file`指定了要执行的特定HQL文件。执行文件前,先将文件名和开始执行的时间写入日志文件`sharemarket_allload.log`。 接下来,有两个数组`ym_arr`和`province_arr`分别代表年月和省份。`arr_len_ym_arr`和`arr_len_province_arr`分别获取了它们的长度,用于后续的循环遍历。这两个数组的嵌套循环结构允许针对每一对年月和省份执行文件。 在循环内部,使用`echo`命令向日志文件记录进度,`执行文件的命令`这部分应替换为实际执行HQL文件的命令,例如`hive -f ${exe_file} -Dparam_ym=${param_ym} -Dparam_province=${param_province}`。执行后,`$?`保存了上一个命令的退出状态,用于检查是否成功。成功执行的标志(假设为0)会被写入日志,便于后期分析。 这个范本提供了一个可扩展的基础,可以根据实际需求调整参数列表,添加更复杂的错误处理和日志记录功能。对于大型数据处理或持续运行的服务来说,这样的日志记录机制是非常重要的。