Karp 的技术博客
操作系统
echo '' > 1.log 和 true >1.log 哪种清理日志方式更合理

2024-09-28T08:57:02.png
在 Linux 系统中,清空日志文件的方式有多种,包括 echo '' > 1.logtrue > 1.log。两种方式都可以清空文件内容,但它们略有不同的作用和效果:

编程语言
Shell 扫描目录下文件, 格式化生成SQL分割文件.
[root@data table]# ls
20230717  20230725  20230802  20230810  20230818  20230826  20230903  20230911  20230919  20230927  20231005  20231013  20231021  20231029  20231106
20230718  20230726  20230803  20230811  20230819  20230827  20230904  20230912  20230920  20230928  20231006  20231014  20231022  20231030  20231107
20230719  20230727  20230804  20230812  20230820  20230828  20230905  20230913  20230921  20230929  20231007  20231015  20231023  20231031  20231108
20230720  20230728  20230805  20230813  20230821  20230829  20230906  20230914  20230922  20230930  20231008  20231016  20231024  20231101  20231109
20230721  20230729  20230806  20230814  20230822  20230830  20230907  20230915  20230923  20231001  20231009  20231017  20231025  20231102  20231110
20230722  20230730  20230807  20230815  20230823  20230831  20230908  20230916  20230924  20231002  20231010  20231018  20231026  20231103  20231111
操作系统
Mac shell 指令 修改文本最后一行的 , 换成 ;

你可以使用以下命令来修改文本文件中最后一行的逗号(,)为分号(;):

编程语言
shell 脚本获取今天、昨天、前天以及n天前的日期

1、获取今天的日期

编程语言
Shell 监控文件新增数据并将数据发送钉钉机器人
#!/bin/sh

# 监控日志新增内容数据

# 告警通用API
NOTICE_URL='https://oapi.dingtalk.com/robot/send?access_token=670316378281374a7150b6303cbc722f5cb9438ede6c251624c4d6057eaeafa68'

# 获取当前所在机器IP
LOCAL_IP=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`

# 日志文件
LOG_FILE=$1

# 判断文件是否存在
if [ ! -f $LOG_FILE ]; then
        echo '文件未找到'
        exit 1
fi

# 最后行数临时存储 
LAST_LINE_TMP=${LOG_FILE}".line_tmp"

# 判断临时文件是否存在 不存在则初始化文件数据
if [ ! -f $LAST_LINE_TMP ]; then
        echo 0 > $LAST_LINE_TMP 
fi

# 获取临时行数
LAST_LINE=`cat $LAST_LINE_TMP`

# 获取当前文件行数
CUR_LINE=`cat $LOG_FILE |wc -l`

echo "Last行数 : $LAST_LINE"

echo "Current行数 : $CUR_LINE"

# MarkDown 标记
HEAD_TAG='###'
CONTENT_TAG='#####'

if [ $CUR_LINE == $LAST_LINE ]; then
        echo '无异常'
else
        // 计算提取行数
        tail_line=$[CUR_LINE-LAST_LINE]
        
        # 日志数据处理
        content=`tail -n $tail_line $LOG_FILE |head -n 100 |xargs echo `
        CONTENT_STRING=`echo $content`
        
        # 机器报警标题描述
        TITLE="机器IP : "$LOCAL_IP" ; 监控文件:"$LOG_FILE

        # 测试输出
        echo "------------ REQUERT START  -----------------------------------------------------------------------------"
        echo "curl "${NOTICE_URL}" -H 'Content-Type: application/json' -d '{\"msgtype\": \"markdown\",\"markdown\":{\"title\":\""$TITLE"\",\"text\":\""$CONTENT_STRING"\"},\"at\":{\"isAtAll\":true}}"
        echo "------------ REQUERT END    -----------------------------------------------------------------------------"


        RESULT=`curl $NOTICE_URL -H 'Content-Type: application/json' -d "{\"msgtype\":\"markdown\",\"markdown\":{\"title\":\"$TITLE\",\"text\":\"$HEAD_TAG $TITLE \r\n$CONTENT_TAG $CONTENT_STRING\"},\"at\":{\"isAtAll\":true}}"`
        
        # 输出响应效果
        echo "Result: $RESULT"

        # 更新临时行数存储
        echo $CUR_LINE > $LAST_LINE_TMP 
fi