Execute um script bash na inicialização do servidor Ubuntu que faz um loop constante

Execute um script bash na inicialização do servidor Ubuntu que faz um loop constante

Estou criando um servidor FTP local e preciso que este script seja executado quando a máquina for inicializada:

#!/bin/bash
while [ 1 ];
do
chmod 2777 /home/ftp/folder;
chmod -R 777 /home/ftp/folder;
sleep 60;
done

Qual é a melhor maneira de fazer isso?

Eu tentei colocá-lo no arquivo rc.local, mas isso não permite que o servidor inicialize corretamente, também este script precisa ser executado como sudo, se isso fizer diferença na execução do script.

Qualquer ajuda ou ideia seria apreciada, obrigado.

Responder1

que tal usar um cronjob?

colocar

#!/bin/bash
chmod 2777 /home/ftp/folder
chmod -R 777 /home/ftp/folder

em um arquivo de script e invoque-o a cada minuto:

sudo crontab -e

e invoque com o seguinte:

* * * * * /path/to/script.sh

mais informações - wiki do Ubuntu

Responder2

  • Remova o loop do seu script
  • Coloque o script em algum diretório razoável (por exemplo /usr/local/sbin/)
  • Coloque uma descrição do cron job em /etc/cron.d/ , por exemplo

* * * * * myuser /usr/local/sbin/myscript

Isso fará com que seu script seja executado a cada minuto. Então, para estar completamente seguro, você precisa adicionar alguma maneira de garantir que apenas uma instância esteja em execução (ou seja, não seja executada se outra instância demorar mais de um minuto para terminar). Isso geralmente é feito por meio de arquivos de bloqueio.

informação relacionada