Начался учебный год и пришли проблемы невыполненных уроков. Это повлекло за собой необходимость контроля времени, проведённого ребёнком за компьютером. Если под Windows есть приложение TimeBoss, которое гибко настраивается и позволяет оградить чадо от чрезмерного нахождения за компьютером, то под linux я ничего подобного не нашёл. Не нашёл и ладно – сам написал. Нет, C и C++ я не владею, но есть опыт написания скриптов под bash.
Примечание. Писалось под свои нужды, а не как средство "массового применения". Соответственно, не всё может вас устроить, либо не устроить вовсе.
Итак, что мы имеем:
limits (После выкачивания, переименуйте файл в "limits")
who
"). timecheck.sh
timecheck (После выкачивания, переименуйте файл в "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 "ну, ещё на полчаса!"
Вроде, всё. Если возникнут вопросы, адрес на Главной.