Eu tenho um script que me lembra de reiniciar meu computador se uptime
for mais de, digamos, 3 dias (embora esteja definido como 0 dias agora apenas para verificar se o script está sendo executado, pois meu computador está ativo há apenas um dia ..).
Sei que não é o roteiro mais elegante, mas estou tentando! :)
#!/bin/bash
up=$(uptime | grep "day" > /home/username/uptime.foo && awk < /home/username/uptime.foo '{ print $3 }')
[[ $up -gt 0 ]] && xmessage -center "Restart!"
Eu o tornei executável chmod + x checkup.sh
e funciona bem quando o executo no terminal via./checkup.sh
Minha entrada do crontab para este script é:
46 14 * * * /home/username/Desktop/./checkup.sh
Por isso, é executado às 14: 46hrs diariamente ...
Então ... eu estou pensando que deve funcionar, a menos que eu não tenha feito algo realmente bobo. Além disso, você acha que é bom mudar esse script do bash /bin
?
/home/dnaneet/Desktop/./checkup.sh
funciona bem. Mas/home/dnaneet/Desktop/checkup.sh
pode não funcionar certo? Porque precisa de um./
?Respostas:
Uma coisa de cada vez:
Primeiro, vamos fornecer uma pasta bin baseada no usuário:
Você quer usar o crontab. Vamos começar com algo realmente simples:
Ok, então isso funciona
Agora vamos tentar executar um script que faça o mesmo
executar uma vez por minuto até que funcione
Não, você não precisa de ./ no meio da linha. ./ é para quando você fornece URLs relativos.
Ok, então isso funciona
Agora vamos tentar executar um script que chama xmessage
não está funcionando
Primeiro, não precisamos depender de variáveis de ambiente. Isso inclui configurações de caminho, configurações x11 ou qualquer outra coisa (variáveis de ambiente python e ruby vêm à mente ...)
Vamos fazer com que o nosso pareça um pouco com o arquivo cron apropriado do anacron. Eu salvei isso como teste
Defina para executar uma vez por minuto
crontab test
para importá-loPara o script
Ok, então isso funciona ... o que fizemos?
Alteramos todos os comandos para não depender de caminhos que não definimos explicitamente
. Executamos nosso script explicitamente com bash
. Dissemos ao script que esperamos estar em DISPLAY: 0.0
fonte
:-/
=
da linha especificandoDISPLAY
. Segundo, quando editei meu arquivo crontab e adicionei oPATH
sugerido e defina o horário para execução posterior, a janela pop-up não será exibida. No entanto, a janela pop-up mostrou-se bem ao executar o script usando/bin/bash
... o que dá?export DISPLAY=:0.0
, funcionou bem. Embora tenha havido um intervalo significativo de cerca de 5 segundos após o relógio bater a hora em que minha janela pop-up deveria ter mostrado ... Alguma sugestão? Mas sim, você altera o trabalho do script!O problema foi resolvido, leia o manual no Google:
descrição:
#!/bin/bash
como cabeçalho/home/wc3/palert/
análise:
responda:
coloque seu ambiente usando esta linha abaixo em seu script com:
mude isto:
/home/wc3/palert
com: o lugar que você colocou seu script
/home/budi/script.sh
amostra:
Tente colocar seu script no crontab.
fonte