да, тоже потом доперло. я предлагаю такую структуру: где-нибудь создается папка, например /etc/upctl
в ней куча папок формата $(date +%Y-%m-%d) , ну и в сегодняшнюю папку все-таки кидается файл, допустим, "uptime", в который пишется только числовое значение.
и тогда полный аптайм вычисляем как-то так
up="$[$(cat /proc/uptime | cut -d "." -f 1)+$(cat $upfile)]"
где файл, соответственно:
upfile="/etc/upctl/$(date +%Y-%m-%d)/uptime"
вот так все страшно с виду, хотя по сути просто.
естественно, все это вместе должно выполняться на уровне рута, судо тут явно не поможет. можно, пожалуй, и не париться с кроном, а оставить вариант с while...
ну, с echo "$uptime" > $upfile , думаю, сложностей на возникнет. таким образом получаем, что по превышении лимита на дневной аптайм вырубаем нафиг комп.
беда в том, что полученное изделие будет резать права всем юзерам вплоть до рута, что не есть гут. поэтому нужно еще прикрутить определение сидящего по ту сторону экрана юзера. для затравочки:
w | grep "dimas" -m 1 | tr -s [:space:] | cut -d " " -f 4
вместо "dimas" пишем юзернэйм по вкусу. сие выведет время, когда юзер впервые залогинился куда-либо (обычно в иксы) в формате HH:MM, например 14:00. ну а дальше с помощью того же cut разбиваем по двоеточию на два куска, умножаем там на 24/60/сколько_надо и скалдываем. сравниваем с текущим абсоюлютным временем и получаем аптайм для конкретного юзера, что и требовалось доказать. дальше по аналогии. простор для фантазии открыт, прикладываем немножко мозга и получаем искомое. можно усложнить задачу и вынести в начало конфиг-секцию, в коей задавать в переменных лимиты для отдельных юзеров, ну и кучу прочих улучшайзеров прикрутить. если есть желание и возможность - можем вместе чего-нибудь сляпать эдакое))
мог бы и сам взяться, но у меня свой прожект в состоянии постоянного развития...