Init.d código não está funcionando

0

Os dados filtrados de uma transmissão ao vivo do MQTT são despejados em um arquivo csv denominado mqtt.csv e o processo de despejo é feito por executor_start_up_job.txt , que está escrito em BASH (tem um shebang).

Eu quero fazer o despejo do daemon de filtro, ou seja, em segundo plano, e também quero fazê-lo de modo que toda vez que o sistema for reinicializado, ele seja feito automaticamente. Então, concluí que escrevi um script init.d e o conteúdo do meu código é:

#!/bin/bash
set -x

requested_command=$1

start() {

        /home/ed/start_up_job/executor_start_up_job.txt &
}
# Restart the Dump
stop() {

        killproc executor_start_up_job.txt
        echo
}
### main logic ###
case $requested_command in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        last_line='cat mqtt.csv | tail -1'
        echo "last print line: $last_line"
        ;;
  restart)
        stop
        start
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac
exit 0

Depois de inserir set -x , recebo a seguinte saída:

+ ./MySQL_table_update_daemon.sh start
+ requested_command=start
+ start
+ exit 0

P: Se eu puder fazer este código funcionar, então o colocarei no diretório /etc/init.d/ , para que ele funcione sempre. No entanto, atualmente ele não funciona e a saída sem o set -x não é nada, por exemplo, é como se eu tivesse acabado de inserir o terminal.

    
por 3kstc 09.03.2015 / 04:29

1 resposta

0

Você precisa remover o exit 0 no final do script, caso contrário, ele será encerrado toda vez que for executado.

Você pode verificar cat /etc/init.d/skeleton para um exemplo de um script init.d de trabalho. (Provavelmente é um exagero para o que você quer fazer, mas pode ajudar com algumas coisas).

    
por ShadowMitia 09.03.2015 / 19:09