Ubuntu: onde adicionar um script executando SQL no início da máquina?

1

Cada vez que o Ubuntu está iniciando, eu preciso executar um script, que está executando alguns SQLs. Então, preciso executá-lo depois que o MySQL já foi iniciado.

Onde devo colocar esse script?

    
por Pavel Bernshtam 01.09.2014 / 11:42

2 respostas

2
O arquivo

deve ser colocado em /etc/init.d e um link em /etc/rc2.d (supondo que você esteja no nível de execução 2 (consulte who -r ).

O link deve estar no formato S99sql , todos os arquivos em rc2.d são executados em ordem alfabética.

para resumir,

crie um arquivo de passeio em /etc/init.d/mysqlcmd.sh

altere o diretório para /etc/rc2.d ans ln -s ../init.d/mysqlcmd.sh S99mysql

    
por 01.09.2014 / 12:29
0

systemd

Se a versão do Ubuntu que você está usando estiver usando systemd (14.04 em diante), você pode modificar o arquivo .service e adicionar outro script para ser executado quando MySQL estiver pronto.

# vi /usr/lib/systemd/system/mysqld.service

Adicione outra entrada para:

ExecStartPost=/usr/libexec/mysqld-wait-ready $MAINPID

acrescentando um ponto e vírgula e o nome do seu script:

ExecStartPost=/usr/libexec/mysqld-wait-ready $MAINPID ; <path to my script>

Observe que esses scripts não são executados usando um shell, então você precisará incluir o seu em bash ou similar se precisar de redirecionamento, etc.

O script mysqld-wait-ready faz exatamente o que ele diz e aguarda até que mysqld esteja pronto para aceitar conexões. Seu script deve, portanto, ser capaz de executar SQL no servidor.

Upstart

Para versões anteriores ao 14.04 do Ubuntu, você pode criar um arquivo upstart conf

description     "My Post-MySQL Start Script"
author "Pavel Bernshtam"

start on started mysql

task
script
    # do my stuff here
end script

Salve o arquivo em /etc/init/<my script name>.conf

Mais informações sobre upstart scripts estão disponíveis em aqui

    
por 01.09.2014 / 12:26