家长控制 - 设定特定应用程序的时间限制( 如游戏)

分享于 

5分钟阅读

ubuntu

 

问题:

我想为( 如游戏) 上的某些特定应用程序设置时间限制。 Windows有很多应用程序可以做到这一点,包括HomeGuard Program Blocker,它可以将某些应用程序的使用限制在一天的特定时间,或者将应用程序的使用限制在特定的时间段。 Ubuntu有没有类似的软件?


回答 1:

我为这个目的写了以下脚本。 我把它命名为 timelimit:


#!/bin/bash



#timelimit - Set daily time limits for specific applications



#Licensed under the standard MIT license:


#Copyright 2013 Radu Rădeanu (https://askubuntu.com/users/147044/).


#Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the"Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:


#The 上面 copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


#THE SOFTWARE IS PROVIDED"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE



if [ $# -ne 1 ];then


 echo"Usage: `basename $0` APP_NAME"


 exit 1


fi



export DISPLAY=:0



app_name=$@


time_to_play_daily="2:30:00" # channge as you wish; the format is: H[:M[:S]]


file="$HOME/.count_time_$app_name"



if [ -a $file ]; then


 if ["$(head -1 $file)"!="$(date +%D)" ]; then


 echo $(date +%D)> $file


 echo $time_to_play_daily>> $file


 fi


else 


 touch $file


 echo $(date +%D)>> $file


 echo $time_to_play_daily>> $file


fi



time_to_play_left=$(sed -n '2p' $file)



sec_left=$(echo $time_to_play_left | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }')



function countdown


{


 sec_left=$(echo $time_to_play_left | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }')


 local start=$(date +%s)


 local end=$((start + sec_left))


 local cur=$start



 while [[ $cur -lt $end ]]; do


 pid=$(pgrep -x $app_name)


 if ["$pid"!="" ]; then


 cur=$(date +%s)


 sec_left=$((end-cur))


 time_to_play_left="$((sec_left/3600)):$(((sec_left/60)%60)):$((sec_left%60))"


 sed -i"2s/.*/$time_to_play_left/" $file


 # next line is useful only when you test from terminal


 printf"rTime left to play with %s: %02d:%02d:%02d" $app_name $((sec_left/3600)) $(((sec_left/60)%60)) $((sec_left%60))


 sleep 1


 else


 break


 fi


 done


}



while : ; do


 pid=$(pgrep -x $app_name)


 sleep 1


 if ["$pid"!="" ]; then


 if [ $sec_left -gt 0 ]; then


 notify-send -i $app_name"Time left to play with $app_name for today: $time_to_play_left"


 else


 notify-send -i"error""Your time to play with $app_name has finished for today!"


 fi


 countdown $time_to_play_left


 pid=$(pgrep -x $app_name)


 if ["$pid"!="" ]; then kill $pid; fi


 fi


done



不要忘记使它成为可以执行的:

 
chmod +x timelimit



 

语法:

timelimit APP_NAME

重要:

如果夜间不关闭计算机,则应在午夜重新启动这里脚本。 要执行这里操作,可以添加如下的作业:

00 00 * * * kill `pgrep -x timelimit` && timelimit APP_NAME

简单,但容易破解,但是用它来控制...

限制每次启动

编辑并添加 timeout 可以再次启动。 编辑并添加 timeout <sec> 到应用程序'。桌面 exec'文件字段



PAR  控制  SET  GAM  spec  Controls