Удалите ключи советов, которые были неактивны в течение 30 дней

Необходимо смочь изменить имена устройств с правилом udev. Выполненный udevadm info -a -n /dev/ttyS2 получить характеристики Вашего устройства. Найдите атрибуты, которые однозначно определяют многопортовую карту и один атрибут, который определяет порт. Затем запишите правила udev для каждого порта. Правила могли бы быть похожими на это:

SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{vendor}=="Yoyodyne", ATTRS{port}=="0xdf00", NAME="ttyS2"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{vendor}=="Yoyodyne", ATTRS{port}=="0xdf80", NAME="ttyS3"
…

Выполненный udevadm trigger (с правом --attr-match-… опция) для повторного применения правил к уже-подключенным-устройствам.

5
29.09.2016, 00:40
2 ответа

Короткий ответ: нет.

Длинный ответ: можно выполнить итерацию по клавишам (вывод KEYS - не используйте эту команду в производстве! Используйте вместо этого SCAN, вызывайте для каждого ключа команду OBJECT IDLETIME и удаляйте в зависимости от ответа.

Длительный ответ: вы можете изменить источник скрупплера на автоматическое истечение срока действия ключей Redis через 30 дней. Подозрительный файл выглядит как lib/data/redis.js, и патч требует простого использования команд SET...EX или EXPIRE на каждой клавише после ее записи в (комната, плата, карта).

2
27.01.2020, 20:38

Вы можете воспользоваться командой OBJECT IDLETIME , которая возвращает количество секунд, в течение которых объект, хранящийся на указанном ключе, бездействует (не запрашивается операциями чтения или записи).

Пример кода выглядит следующим образом:

#!/bin/sh

redis-cli -p 6379 keys "*" | while read LINE ;
do
val=`redis-cli -p 6379 object idletime $LINE`;
if [ $val -gt $((30 * 24 * 60 * 60)) ];
then
  echo "$LINE";
  # del=`redis-cli -p 6379 del $LINE`;  # be careful with del
  # echo $del;
fi
done;

В вашей ситуации вы можете заменить redis-cli -p 6379 на:

redis-cli -h redis_host -p redis_port -a redis_password

4
27.01.2020, 20:38

Теги

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