Como bloquear meu Ubuntu por um período específico de tempo

0
#!/bin/bash

for i in {1..10}; do 
    timeout 1 gnome-screensaver-command -l
done

Executando isso como um comando de uma linha no terminal (sem #!/bin/bash) continuará bloqueando meu PC por 10 segundos, e desbloquear é impossível. Isso é desejado.

No entanto, quando eu executo isso via script, ele apenas bloqueia uma vez, mas depois disso eu posso desbloquear e usar o PC imediatamente. Por favor me ajude .. Eu quero automatizá-lo e usá-lo como um trabalho cron. Como fazer dar certo?

Isso é tudo o que tenho no meu arquivo cron:

1 * * * * for i in {1..5}; do timeout --foreground 1 gnome-screensaver-command -l; done > test

Nem vai funcionar. Nenhum arquivo de teste aparece. Quando executo service cron status, nenhum trabalho é executado recentemente, mesmo que eu tenha ordenado a execução do script a cada minuto.

MyWays
fonte

Respostas:

1

Uma questão maior é por que você está executando o comando 10 vezes por 1 segundo, em vez de 1 vez por 10 segundos? Você nem precisaria do loop então. Se for para impedir que outra pessoa digite a senha e desbloqueie o computador, talvez você deva apenas alterar a senha e mantê-la para si.


Há um software para ajudar a gerenciar o tempo. Você pode tentar um, como o Pomodoro :

Este aplicativo GNOME ajuda a gerenciar o tempo de acordo com a técnica Pomodoro . Pretende melhorar a produtividade e a qualidade do trabalho, lembrando-o de fazer pequenas pausas.

A técnica Pomodoro é baseada em dois princípios:

  • concentrando-se no trabalho por tempo limitado, cerca de meia hora,
  • limpando sua mente durante os intervalos.

Esse fluxo de trabalho pode melhorar o foco, a saúde física e a agilidade mental, dependendo de como você gasta seus intervalos e de quão rigorosamente você segue a rotina.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Veja esta pergunta no askubuntu Existe um aplicativo Pomodoro disponível? , também recomenda tomate entre outros.


Se você quiser "parar" um programa específico por um tempo, poderá usar kill -STOP pidou pkill -STOP pattern, como em

kill -STOP pid
sleep $seconds
kill -CONT pid

Parar qualquer programa que você queira interromper deixaria o restante do sistema funcionando. Eu realmente não gostaria de tentar parar algo mais importante, como o gerenciador de janelas ou o X / xorg.


O Cron não se comporta exatamente como o terminal do usuário comum, talvez nem saiba onde estão alguns comandos. Você poderia tentar:

  • Executando o comando como seu usuário, via sudo -u [YourUser] command(consulte man sudo para obter mais informações -u).

  • Adicione o caminho completo ao comando (encontrado via which [command]ou pesquisando os arquivos instalados do pacote com dpkgou apt / synaptic, etc.


Parece que timeoutse comporta de maneira diferente quando é executado em um terminal interativo, vs em um script. A leitura da página de informações revela uma opção que acho que você poderia usar:

'--foreground'
Não crie um grupo de programas em segundo plano separado, para que o COMMAND gerenciado possa usar o TTY em primeiro plano normalmente. Isso é necessário para suportar comandos de tempo limite não iniciados diretamente de um shell interativo, em duas situações.

  1. COMMAND é interativo e precisa ler do terminal, por exemplo
  2. o usuário deseja suportar o envio de sinais diretamente para o COMMAND a partir do terminal (como Ctrl-C, por exemplo)

    Observe que neste modo de operação, qualquer filho do COMMAND não será atingido pelo tempo limite. Além disso, o SIGCONT não será enviado ao COMMAND, pois geralmente não é necessário nos processos em primeiro plano e pode causar problemas intermitentes de entrega de sinal com programas que são monitores próprios (como o GDB, por exemplo).

Xen2050
fonte
Isso não funciona. Atualizei minha pergunta com meu arquivo cron. Além disso, o script é para produtividade. Bloqueando o acesso ao PC para que eu possa fazer uma pausa. Posso mudar de 10s para 5min, se eu quiser.
MyWays
Eu adicionei algumas outras idéias ... mas apenas voluntariamente se levantar e fazer uma pausa pode ser a mais fácil, ou você está tentando forçar alguém a fazer uma pausa sem vontade?
Xen2050 14/01
"O script é para produtividade. Bloqueando o acesso ao PC para que eu possa fazer uma pausa" Considere um cronômetro físico silencioso, gentil. Eu diria "timer de ovo", mas esses são bem duros.
Christopher Hostage
@ChristopherHostage Isso é exatamente o que a Wikipedia sugere na página técnica vinculada de Pomodoro : "O ato físico de dar corda no cronômetro confirma a determinação do usuário em iniciar a tarefa; assinalar externaliza o desejo de concluir a tarefa; tocar toca anuncia uma pausa. Fluxo e foco se associam a esses estímulos físicos ". Eu também não gostaria de ouvir um sino alto de alarme de incêndio, mas um bom e silencioso musical pode ser bom. Afinal, esse é o SuperUser, e qualquer clipe de som pode ser usado ...
Xen2050 14/01