Como executar o script de shell periodicamente sem usar o Crontab?

0

Eu não tenho previlage para usar crontab -e para executar o meu script. Existe outra maneira de executar periodicamente meu script? Basicamente eu preciso executá-lo uma vez por semana.

user196833
fonte

Respostas:

1

Se ativado e instalado, você pode usar o atcomando. No entanto, é uma única vez agendamento .... você teria que executar um novo atcomando dentro da coisa que você queria reagendar.

Confira as manpáginas para ajuda no atcomando.

Mas lembre-se, nem sempre é instalado / habilitado em todos os sistemas Linux / UNIX.

mdpc
fonte
E alguém que não tem o privilégio de usar cronpode não ser capaz de executar attambém.
Scott
Verdade, em geral, cron e at são administrados através de duas listas de acesso diferentes.
mdpc
1

A verdadeira resposta para isso é entrar em contato com o seu administrador de sistemas de vizinhança amigável, explicar seu problema e pedir que eles ativem o acesso do cron para você. Você deve explicar como seu programa é executado, seus requisitos de recursos e geralmente fazer uma promessa de que você não prejudicará o sistema se você obtiver privs de acesso ao cron.

mdpc
fonte
você não deveria postar os dois como uma resposta?
Journeyman Geek
Eu percebi que eram duas respostas completamente diferentes.
mdpc
Mesmo se fossem, é prática aceita publicá-los juntos. "Você pode fazer X, ou alternativamente Y" em vez de postar duas respostas.
Journeyman Geek
0

Se você não pode / não quer manter um terminal aberto, você pode executá-lo no GNU Screen / tmux ou com o nohup.

Exemplos:

screen sh -c 'while sleep 7d; do mycommand; done'

ou

tmux 'while sleep 7d; do mycommand; done'

Nota: estes comandos serão executados mycommandpela primeira vez após uma semana e depois periodicamente, não diretamente. Mude de acordo com a preferência.

Consulte a documentação dos projetos para obter mais informações sobre como anexar / desanexar sessões.

( 7dé específico do GNU, creio eu. Basta colocar 604800lá em vez disso, se a sleepversão só suporta segundos.)

Daniel Andersson
fonte
Como administrador de sistemas, eu realmente odeio ver esse tipo de coisa. Eles ocupam vagas de trabalho, e não são muito confiáveis, se a máquina for inicializada, então o trabalho, obviamente, para e você tem um problema.
mdpc
0

Outra abordagem seria ter um cronjob rodando em uma máquina diferente, que usa sshpara executar um determinado comando no servidor de destino. Se você configurar o login baseado em chave, isso será fácil.

Basta configurar um cronjob em outra máquina que pareça, por exemplo,

0 0 * * 7   /usr/bin/ssh remoteuser@remotehost mycommand

Com a exceção do servidor remoto estar offline no tempo de execução, isso seria confiável em relação a reinicializações remotas do servidor e outras coisas.

Daniel Andersson
fonte
Tenho certeza de que um administrador ficaria feliz com isso.
mdpc