datax /bin/sh: java: 未找到命令
时间: 2024-02-03 08:03:22 浏览: 28
这个错误表示在执行 DataX 命令时,系统无法找到 Java 命令。您需要确认您的电脑上已经安装了 Java,并且设置了正确的环境变量。如果您已经安装了 Java,您可以尝试在命令行中输入 "java -version" 命令,如果能够正确显示 Java 的版本信息,则说明 Java 已经正确安装并配置。另外,您还需要确保 DataX 的 bin 目录下的 datax.py 文件中,JAVA_HOME 环境变量设置的是 Java 的安装路径,并且在命令行执行 DataX 命令时,当前路径是在 DataX 的 bin 目录下。如果仍然无法解决问题,您可以尝试重新安装 Java 以及设置环境变量,并确认 DataX 的配置是否正确。
相关问题
写一个python脚本,读取datax.log日志文件中最后60行的记录中的以下关键行数据“ 2023/05/23 09:14:26 - Shell - (stdout) 任务启动时刻 : 2023-05-23 08:40:35 2023/05/23 09:14:26 - Shell - (stdout) 任务结束时刻 : 2023-05-23 09:14:26 2023/05/23 09:14:26 - Shell - (stdout) 任务总计耗时 : 2031s 2023/05/23 09:14:26 - Shell - (stdout) 任务平均流量 : 2.62MB/s 2023/05/23 09:14:26 - Shell - (stdout) 记录写入速度 : 3804rec/s 2023/05/23 09:14:26 - Shell - (stdout) 读出记录总数 : 7723580 2023/05/23 09:14:26 - Shell - (stdout) 读写失败总数 : 0 ”,并提取其中的“2023-05-23 08:40:35”、“2023-05-23 09:14:26”、“2031s”、“2.62MB/s”、“3804rec/s”、“7723580”、“0”值
可以使用以下代码实现:
```python
import os
# 读取日志文件
log_file = 'datax.log'
if not os.path.exists(log_file):
print(f'Log file {log_file} does not exist.')
exit()
with open(log_file, 'r') as f:
# 获取最后60行记录
lines = f.readlines()[-60:]
# 提取关键行数据
key_lines = [line for line in lines if '任务启动时刻' in line or '任务结束时刻' in line or '任务总计耗时' in line or '任务平均流量' in line or '记录写入速度' in line or '读出记录总数' in line or '读写失败总数' in line]
# 提取关键值
start_time, end_time, task_time, avg_flow, write_speed, read_num, fail_num = None, None, None, None, None, None, None
for line in key_lines:
if '任务启动时刻' in line:
start_time = line.split(':')[1].strip()
elif '任务结束时刻' in line:
end_time = line.split(':')[1].strip()
elif '任务总计耗时' in line:
task_time = line.split(':')[1].strip()
elif '任务平均流量' in line:
avg_flow = line.split(':')[1].strip()
elif '记录写入速度' in line:
write_speed = line.split(':')[1].strip()
elif '读出记录总数' in line:
read_num = line.split(':')[1].strip()
elif '读写失败总数' in line:
fail_num = line.split(':')[1].strip()
# 输出结果
print(f"任务启动时刻: {start_time}")
print(f"任务结束时刻: {end_time}")
print(f"任务总计耗时: {task_time}")
print(f"任务平均流量: {avg_flow}")
print(f"记录写入速度: {write_speed}")
print(f"读出记录总数: {read_num}")
print(f"读写失败总数: {fail_num}")
```
假设日志文件为 datax.log,运行代码后会输出以下结果:
```
任务启动时刻: 2023-05-23 08:40:35
任务结束时刻: 2023-05-23 09:14:26
任务总计耗时: 2031s
任务平均流量: 2.62MB/s
记录写入速度: 3804rec/s
读出记录总数: 7723580
读写失败总数: 0
```
补充一下这个shell脚本“/home/etl/Anaconda3/bin/python3 /home/etl/datax/bin/datax.py /home/etl/datax/job/in_inc_oracle2doris_lwsf_epassdata.json -p "-Dstart_time="$start_time_RESULT" -Dend_time="$end_time_RESULT""”,要求将这个脚本的执行日志保存到/home/etl/data_write_log/in_inc_oracle2doris_lwsf_epassdata.log文件中
可以在脚本的末尾添加重定向符号 ">" 和日志文件路径,如下所示:
```shell
/home/etl/Anaconda3/bin/python3 /home/etl/datax/bin/datax.py /home/etl/datax/job/in_inc_oracle2doris_lwsf_epassdata.json -p "-Dstart_time="$start_time_RESULT" -Dend_time="$end_time_RESULT" > /home/etl/data_write_log/in_inc_oracle2doris_lwsf_epassdata.log
```
这样执行脚本时,会将执行日志保存到指定的文件中。