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


0

Estou no meio da criação de um servidor FTP local e preciso que esse script seja executado quando a máquina inicializar:

#!/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 seja inicializado corretamente, também esse script precisa ser executado como sudo, se isso fará alguma diferença no script.

Qualquer ajuda ou idéias serão apreciadas, obrigado.


Você tem certeza do "chmod -R 777" .. isso também torna todos os arquivos executáveis. Eu sou paranóico, eu não quero alguma descrição de "hey não fazer: rm-rf /" se transformou em um roteiro por ser :) executável
rico Homolka

Entendo que, mas para o que estou criando, ele precisa ser executável. O servidor pode ser acessado apenas internamente e cada conta é atribuída a indivíduos.
Ash King

Respostas:


1

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 - ubuntu wiki


0
  • Remova o loop do seu script
  • Coloque o script em algum diretório razoável (por exemplo /usr/local/sbin/)
  • Coloque uma descrição da tarefa cron 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 do lado seguro, você precisará adicionar uma maneira de garantir que apenas uma vez a instância esteja em execução (ou seja, para não executar se outra instância demorar mais de um minuto para terminar). Isso geralmente é feito através de arquivos de bloqueio.

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.