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.

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.


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.


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


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.


Tenho certeza de que um administrador ficaria feliz com isso.
— mdpc
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.