赞
踩
在caht中输入一下内容
I want you to act as a Linux terminal. I will type commands and you will reply with what the
terminal should show. I want you to only reply with the terminal output inside one unique
code block, and nothing else. Do no write explanations. Do not type commands unless I
instruct you to do so. When I need to tell you something in English I will do so by putting
text inside curly brackets {like this}. My first command is pwd.
执行ll -ths
ip a
ps -ef
create a bash shell program that scans for open ports on a hostname.
上点难度,完了要失业了
我的需求
编写一个shell脚本
1、grep过滤这两个ORA报错'ORA-02063|ORA-08176' 将记录写入ora.error文件并在其中加上当前时间戳表明记录生成的时间,例如LoadEdcData_ARRAY,2022-12-27 12:12:12
2、从10.50.10.180 mysql的ch_qms数据库中执行以下sql获取JOB_NAME和ETL_TIMESTAMP,例如LoadEdcData_OC,2022-12-27 14:00:00
SELECT JOB_NAME,ETL_TIMESTAMP
FROM etl_conf_d
WHERE
1=1
AND JOB_NAME LIKE '%EDC%'
AND JOB_GROUP_NAME = 'EDC_ETL_HIS'
AND VALID_FLG = 'y'
3、将ora.error的第二列时间戳和第二步的ETL_TIMESTAMP时间做比较,如果超过1小时,执行etl -k job,然后再执行etl -s job,其中job取ora.error 得到第一列
经过我的调教,这个脚本就能用了
#!/bin/bash # 过滤这两个 ORA 报错,并将记录写入 ora.error 文件中 grep -E -l "ORA-02063|ORA-08176" /aplog/EDA_ETL/edc_log/*/info.log.* | while read line; do # 在记录中加上当前时间戳 echo "$line,$(date +"%Y-%m-%d %T")" >> ora.error done # 从 MySQL 数据库中执行 SQL 语句,获取 JOB_NAME 和 ETL_TIMESTAMP mysql -h 10.50.10.180 -uroot -pchot123 -D ch_qms -e "SELECT JOB_NAME,ETL_TIMESTAMP FROM etl_conf_d WHERE 1=1 AND JOB_NAME LIKE '%EDC%' AND JOB_GROUP_NAME = 'EDC_ETL_HIS' AND VALID_FLG = 'y'" > jobs.txt # 遍历 ora.error 文件,并比较时间戳 while read line; do # 将 ora.error 中的第二列时间戳转换为时间戳 orastr=`echo $line | cut -d "," -f 2` ora_timestamp=$(date -d "$(echo $line | cut -d "," -f 2)" +%s) # 获取 JOB_NAME jobstr=$(echo $line | cut -d "," -f 1 | awk -F "/" '{print $5}') echo "job_name: LoadEdcData_$jobstr"; job_name=LoadEdcData_${jobstr} # 从 jobs.txt 中查找与 JOB_NAME 匹配的 ETL_TIMESTAMP etl_timestampstr=$(grep -E "$job_name\b" jobs.txt | cut -f 2) etl_timestamp=$(grep -E "$job_name\b" jobs.txt | cut -f 2) # 将 ETL_TIMESTAMP 转换为时间戳 etl_timestamp=$(date -d "$etl_timestamp" +%s) echo "ora_timestamp: ${orastr, ora_timestamp-unix: ${ora_timestamp}}" echo "mysql etl_timestamp: $etl_timestampstr, etl_timestamp-unix:${etl_timestamp}" # 计算时间差(以秒为单位) time_diff=$((ora_timestamp-etl_timestamp)) echo "time_diff: ${time_diff}" # 如果时间差超过 1 小时(3600 秒),执行 etl -k 和 etl -s if [ $time_diff -gt 3600 ]; then #etl -k "$job_name" echo $job_name etl -c "$job_name" fi done < ora.error
对于Oracle的这个bug就可以优雅重启了. 监控报警是5个小时的延迟,我的这个重启计划是1小时的延迟。所以该类问题应该不会再报警了。
看来chatGPT有过度理解的嫌疑
这个插件的使用门槛很低,只需要把自己的API key丢进去就能用。前提是你有openAI的账户
创建API key
把api key贴进去即可。
到4月1 还有18刀的免费使用额度。
vscode中使用chatGPT优化Dockerfile,操作相当简单,直接选中代码右击选择即可。真的香
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。