Re,
Voilà une façon de le faire.
D'abord créer un script ( je l'ai enregistré dans /root avec le nom kill_user_session )
[root@localhost ~]# cat /root/kill_user_session
#! /usr/bin/perl
use warnings;
use strict;
my @user_pid = grep { /.*/ } qx(ps -ef | grep 'monfils');
foreach(@user_pid){
my $pid=(split /\s+/,$_)[1];
system "kill", "-9","$pid"; # tuer les processus de monfils
}
system "passwd","-l","monfils"; # verrouiller le compte
Ensuite j'ai edité crontab
[root@localhost ~]# crontab -e
et j'ai ajouté les lignes
00 21 * * * (/usr/bin/perl /root/kill_user_session)
00 10 * * * (passwd -u monfils)
la 1ère ligne arrête la session de monfils mais n'éteint pas le pc et verrouille son compte. Donc s'il veut se connecter il ne pourras pas puisque son compte est verrouiller.
la 2ème ligne doit deverrouiller sont compte à 10 h (heure d'ouverture de pc, c'est un exemple, à toi de voir)
Si le pc n'est pas allumé au moment quand le crontab dois s'éxécuter alors ça ne marche pas.
Par exemple si monfils sait que le crontab doit verrouiller son compte à 21h00 alors il peut eteindre l'ordinateur à 20h59 et l'allumer à 21h01.
En ce cas il faut peut être écrire comme ça la 1ère ligne
*/1 21-23 * * * (/usr/bin/perl /root/kill_user_session)
donc après de 21h00 à 24h00 toutes les minutes le script est exécuté donc monfils ne sera pas content d'allumer le pc toutes le minutes.
Pareil si tu n'as pas une heure fixe pour allumer le pc (et je crois que c'est le cas) la deuxième ligne peut être
0-58/1 6-20 * * * (passwd -u monfils)
man crontab
man 5 crontab
man passwd