Я новичок в syslog-ng, и все, что я прошу, может показаться очень наивным для немногих.
В качестве задачи мне нужно сделать следующее через syslog-ng: 1) прочитать целое число из файл / var / log / myfile 2) Увеличьте это значение при определенной ошибке c (я ищу другой файл журнала для определенной ошибки c). 3) Запишите увеличенное значение обратно в / var / log / myfile
Однако файл журнала имеет значение NULL / BLANK, когда я его обнаруживаю. Может ли кто-нибудь просмотреть мой код и предположить, что я здесь делаю не так?
/var/log/messages {
9 size=512k
10 sharedscripts
11 postrotate
12 MCP_QF_ERR_COUNT=0
13 MCP_RESTART_CNT=0
14 MCP_QF_ERR_THRHOLD=10
15 STAT_FILE="/var/log/mcp_qf_restart_cnt"
16 if [ -f $STAT_FILE ]; then
17 # Read previous retry count from file
18 MCP_RESTART_CNT=$(< "$STAT_FILE")
19 else
20 touch $STAT_FILE # Create an empty error count file, if it doesnt exist
21 echo "0" > $STAT_FILE # Initialize file with zero count
22 MCP_RESTART_CNT=0
23 fi
24
25 # Grep /var/log/messages for mcp queue full error and store number of lines
26 MCP_QF_ERR_COUNT=$(cat /var/log/messages | grep -c "MM_1_MCP enqueue failed")
27 wait $! # Wait for last command to finish
28 MCP_QF_ERR_COUNT=$(expr $MCP_QF_ERR_COUNT) # convert from string integer to integer
29 MCP_QF_ERR_THRHOLD=$(expr $MCP_QF_ERR_THRHOLD)
30
31 # If line count is more than predefined lines, restart mcp service
32 if [ $MCP_QF_ERR_COUNT -gt $MCP_QF_ERR_THRHOLD ]; then
33 service mcp2 restart 2> /dev/null
34 MCP_RESTART_CNT=$(expr $MCP_RESTART_CNT + 1) # Incrememnt the restart count by 1
35 echo $MCP_RESTART_CNT > $STAT_FILE
36 fi
37
38 /bin/kill -HUP `cat /var/run/syslog-ng.pid 2> /dev/null` 2> /dev/null || true
39 endscript
40 }