Como posso executar este script na inicialização, reinicialização e desligamento?

1

Estou usando o Ubuntu 11.10.

Eu escrevi um script que sincroniza um diretório em ~ com um diretório em /dev/sda4 , usando o Unison. Antes, eu tinha este script rodando a cada cinco minutos sem problemas, usando o crontab. No momento, quero executar esse script na inicialização, reiniciar e desligar apenas.

É assim que o script se parece:

#!/bin/bash
unison -perms 0 -batch "/mnt/Data/Syncfolder/" "/home/myname/Syncfolder/"

Eu gostaria que o script fosse executado com mecanismos como o Upstart, se possível. Então, eu ficaria mais feliz com um arquivo *.conf configurado corretamente em /etc/init .

Obrigado antecipadamente.

    
por Exeleration-G 02.03.2012 / 20:56

4 respostas

1

Depois de pesquisar e perguntar aqui, consegui que funcionasse:

Antes de fazer o seguinte, certifique-se de não usar unison-gtk (a Unison GUI) também. Eu tive uma situação em que unison e unison-gtk conflitavam. Remova unison-gtk via sudo apt-get remove unison-gtk e desative os arquivos de configuração antigos do Unison renomeando a pasta que contém: mv .unison .unison.old

Quando você fizer isso, é hora de seguir em frente.

Primeiro eu corri o script como superusuário. Eu fiz isso porque o Unison precisa ser executado uma vez quando você cria um novo script, para criar alguns arquivos de log. Os scripts Upstart provavelmente são executados como root, então é melhor fazer isso também quando você executa o script pela primeira vez:

sudo su

unison -perms 0 -batch "/home/MyName/Syncfolder" "/mnt/Data/Syncfolder" >> /var/log/unison.log

exit

Em seguida, eu corri: sudo gedit /etc/init/unison.conf . Eu colei o seguinte e salvei o arquivo:

description "My File Sync"
author "My Name"
env HOME=/home/MyName
start on runlevel [0123456]

pre-start script
    echo "Starts syncscript"
end script

post-stop script
    echo "Ends syncscript"
end script

exec unison -perms 0 -batch "/home/MyName/Syncfolder" "/mnt/Data/Syncfolder" >> /var/log/unison.log

Reinicie e pronto.

    
por Exeleration-G 06.04.2012 / 15:41
3

Sugiro que você esqueça o SysV, se possível, e use /etc/init novos scripts de estilo. Algo parecido com isto (coloque em /etc/init/unison.conf , por exemplo):

start on (runlevel [06] or local-filesystems)
task
# If it needs to run other than root (you need Upstart 1.4, otherwise use "su" on exec line
setuid <username>

script
  # You can place your entire script here, no need for separate script
  exec unison -perms 0 -batch "/mnt/Data/Syncfolder/" "/home/myname/Syncfolder/"
end script
    
por Tuminoid 08.03.2012 / 12:28
0

teste seu script ... se funcionar você pode fazer o seu crontab assim

@reboot sh /usr/local/bin/s4lj.bash

Desta forma, vai funcionar no arranque

info: link link link

    
por maniat1k 02.03.2012 / 21:28
0

O modo antigo (usando /etc/init.d e links para ele de /etc/rc?.d/[SK]* ) é manipulado por /etc/init.d/rc . Leia atentamente esse script e descubra qual das suas regras o impede de ser executado. Talvez eu queira reafirmar isso.

O Upstart emite ganchos para trabalhos SysV? tem um bom Resposta inicial.

    
por waltinator 02.03.2012 / 23:56