1С. Удаляем старые сессии

/ Просмотров: 13
1С. Удаляем старые сессии

Скрипт для удаление старых сессий на 1С сервере. В данном виде скрипт получает список всех сессий, складывает их во временный файл, сортирует по дате последней активности (сначала свежие), потом нумерует и удаляет те что больше 9.

#!/bin/bash
log="/tmp/termsession.log"
tmp="/tmp/termsession.tmp"
rm $tmp
echo "$(date +"%F %T") Begin" >> $log
/opt/1C/v8.3/x86_64/ras --daemon cluster
clusterID=$(/opt/1C/v8.3/x86_64/rac cluster list|grep cluster|sed 's/cluster                       : //')
#echo "$(date +"%F %T") clusterID : $clusterID" >> $log
cd /opt/1C/v8.3/x86_64/
./rac session --cluster=$clusterID list | grep "session                          :" | awk '{print $3}' | \
while read sessionID; do 
    ./rac session --cluster=$clusterID info --session=$sessionID | \
    while read param1 param2 param3; do
    if [ "$param1" = "session" ] || [ "$param1" = "last-active-at" ] || [ "$param1" = "hibernate" ]
    then
        echo -n "$param3 " >> $tmp;
    fi
    done;
    echo "" >> $tmp;
done
#echo "$(date +"%F %T") pre session list :" >> $log
#cat $tmp >> $log
let "i = 0";
cat $tmp | sort -r -k2 | \
while read param1 param2 param3; do
    let "i += 1";
    if [ "$i" -gt 9 ]
    then 
    echo "$(date +"%F %T") terminate session $param1 ($param2)" >> $log
    cd /opt/1C/v8.3/x86_64/
    ./rac session --cluster=$clusterID terminate --session=$param1
    fi
done
echo "$(date +"%F %T") End" >> $log
echo "" >> $log