Необходимо смочь изменить имена устройств с правилом 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-…
опция) для повторного применения правил к уже-подключенным-устройствам.
Короткий ответ: нет.
Длинный ответ: можно выполнить итерацию по клавишам (вывод KEYS
- не используйте эту команду в производстве! Используйте вместо этого SCAN
, вызывайте для каждого ключа команду OBJECT IDLETIME
и удаляйте в зависимости от ответа.
Длительный ответ: вы можете изменить источник скрупплера на автоматическое истечение срока действия ключей Redis через 30 дней. Подозрительный файл выглядит как lib/data/redis.js
, и патч требует простого использования команд SET...EX
или EXPIRE
на каждой клавише после ее записи в (комната, плата, карта).
Вы можете воспользоваться командой 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