Как настроить журнал для отказа от учетных записей старше определенного времени

Хорошо, наконец-то я сделал это. BASH работает быстрее и не требует сторонних инструментов. [обновлено 16:43]

#!/bin/bash
# Scheduled Script to check linux service status after every 5 minutes.
# If found stopped, send sms or email Alerts, but donot repeat it untill next status change.
# Syed Jahanzaib


# Run script with service name like
# ./status.sh mysqld


# Check if no service name is given
if [ "$1" == "" ]; then
echo No service name have been provided.
echo Usage exmaple:
echo
echo -e "./status.sh mysqld"
echo
fi

DATE=`date`
COMPANY="MYISP"


SERVICE1="$1"
SUBJECT="ALERT: $SERVICE1 is Down..."
STATUS_HOLDER="/tmp/$SERVICE1_STATUS_HOLDER.txt"

# KANNEL Gateway Info
KANNELURL="127.0.0.1:13013"
KANNELID="kannel"
KANNELPASS="password"
CELL1="0333xxxxxx"

# SMS Msgs test
MSG_UP="$COMPANY Info: $SERVICE1 is now UP @ $DATE"
MSG_DOWN="$COMPANY Alert: $SERVICE1 is now DOWN @ $DATE"

touch $STATUS_HOLDER

for SRVCHK in $SERVICE1
do
        PID=$(pgrep $SERVICE1)
        if [ "$PID" == "" ]; then
                echo "$SRVCHK is down"
                if  [ $(grep -c "$SRVCHK" "$STATUS_HOLDER") -eq 0 ]; then
                        echo "ALERT: $SERVICE1 is down at $(date) / SENDING SMS ...."
            echo "$MSG_DOWN" > /tmp/$SERVICE1_down.sms
# Sending DOWN SMS via KANNEL
cat /tmp/$SERVICE1_up.sms | curl "http://$KANNELURL/cgi-bin/sendsms?username=$KANNELID&password=$KANNELPASS&to=$CELL1" -G --data-urlencode text@-
                        echo "$SRVCHK" >> $STATUS_HOLDER
                fi
        else
                echo -e "$SRVCHK is alive and its PID are as follows...\n$PID"
                if  [ $(grep -c "$SRVCHK" "$STATUS_HOLDER") -eq 1 ]; then
                        echo "INFO ALERT : $SERVICE1 is UP at $(date) / SENDING SMS ...."
            echo "$MSG_UP" > /tmp/$SERVICE1_up.sms
# Sending UP SMS via KANNEL
cat /tmp/$SERVICE1_up.sms | curl "http://$KANNELURL/cgi-bin/sendsms?username=$KANNELID&password=$KANNELPASS&to=$CELL1" -G --data-urlencode text@-
                        sed -i "/$SRVCHK/d" "$STATUS_HOLDER"
                fi
        fi
done
1
14.02.2018, 18:18
2 ответа

Только что нашел этот блестящий ответ на стековой бирже askubuntu:https://askubuntu.com/a/1012913/36168

Напомним, что автор предлагает настроить cronjob для периодического запуска, например, для вашего варианта использования запускайте его ежедневно:

$ journalctl --vacuum-time=1y

Ссылка:

4
28.01.2020, 00:39

However my goal is to configure journald in a way such that all journal entries are stored within one file for a time span of one year.

Это означает, что файл будет ротироваться через 1 год и удаляться после того, как последней записи будет больше 1 года.

Невозможно делать то, что ты хочешь. Вы должны сделать как с syslogиlogrotate:повернуть на несколько файлов и удалить самые старые. Если вы не хотите тратить место на месячную загрузку журнала, вы чаще меняете ротацию.

The journal is rotated after every month such that accessing older entries is a hassle

Как это? Утилита journalctlбез проблем считывает все доступные файлы журналов.

0
28.01.2020, 00:39

Теги

Похожие вопросы