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.

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).


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.