Начался учебный год и пришли проблемы невыполненных уроков. Это повлекло за собой необходимость контроля времени, проведённого ребёнком за компьютером. Если под Windows есть приложение TimeBoss, которое гибко настраивается и позволяет оградить чадо от чрезмерного нахождения за компьютером, то под linux я ничего подобного не нашёл. Не нашёл и ладно – сам написал. Нет, C и C++ я не владею, но есть опыт написания скриптов под bash.
Примечание. Писалось под свои нужды, а не как средство "массового применения".
Соответственно, не всё может вас устроить, либо не устроить вовсе.
Итак, что мы имеем:
limits (После выкачивания, переименуйте файл в "limits")who"). timecheck.shtimecheck (После выкачивания, переименуйте файл в "timecheck")prolong.shТеперь, что нужно сделать, чтобы это заработало:
sudo apt-get install libnotify-bin
для RedHat-based (у меня – CentOS)
yum install libnotify
Требуется "/usr/bin/notify-send"
/usr/local/timecheck/"), куда поместить все файлы описанные в предыдущем разделе. Список должен выглядеть так:limits prolong.sh timecheck timecheck.sh
(одна строка – один пользователь):ltest 2:30 0:05
Где:
ltest (первое значение) – имя пользователя,
2:30 (второе значение) – лимит времени работы,
0:05 (третье значение) – дополнительное время работы в выходные дни.
timecheck, а именно: исправить значение переменной "DIR=/path/to/scripts", например, на "DIR=/usr/local/timecheck".timecheck в /etc/init.d/ и выполнить:update-rc.d timecheck defaults
для RedHat-based
chkconfig --add timecheck
/etc/init.d/timecheck start
Во время работы будут созданы файлы:
/var/lock/timecheck.lock – файл блокировки, необходимый дабы исключить запуск второго экземпляра скрипта. После останова скрипта через /etc/init.d/timecheck, удаляется. В противном случае, нужно самому контролировать его наличие./var/run/${user}.remain – файлы, содержащие оставшееся время работы в секундах. Нужны для того, чтобы при повторном старте компьютера учитывать оставшийся лимит, а не начинать отсчёт времени заново. "${user}" – имя пользователя из "limits". Если дата последнего обращения к файлу отличается от текущей, подразумевается, что наступили новые сутки и файл пересоздаётся, отсчёт времени начинается по новой. Если пользователя из "limits" нет в системе (не вошёл он ещё), файл не создаётся (не пересоздаётся).
Если возникла необходимость добавить время работы, можно это сделать не корректируя "limits". Для этого нужно воспользоваться дополнительным скриптом "prolong.sh":
prolong.sh ltest 0:30
Продлеваем разрешённое на сегодняшний (!) день время работы пользователю ltest "ну, ещё на полчаса!"
Вроде, всё. Если возникнут вопросы, адрес на Главной.