O que há de errado com meu script init.d [falha de segmentação]

0

Atualmente, estou filtrando dados de uma transmissão ao vivo do MQTT. Em seguida, despejo esse dado em um arquivo csv chamado mqtt.csv e o processo de despejo é feito por executor_start_up_job.txt , que está escrito em BASH.

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

Q: É minha primeira vez escrevendo um init.d e eu escrevi meu código baseado neste exemplo não funciona, pois recebo o erro" segmentation fault "

    
por 3kstc 09.03.2015 / 01:23

1 resposta

1

Não, não funcionará porque você tem vários erros de sintaxe.

Você também tem algumas violações de práticas recomendadas.

Use o bash -x em seu arquivo depois de corrigir os erros para vê-lo rodar. Leia o seu script com cuidado e corrija os erros de sintaxe.

Alguns erros:

echo "last print line: 'cat mqtt.csv | tail -1"
echo $"Usage: $0 {start|stop|restart|reload|status}"
# missing ;;

Eu parei de cuidar 3. Note também que é normal especificar caminhos para arquivos executáveis, geralmente com variáveis. Também não é normal executar arquivos 'txt'. Você também não está dizendo ao usuário que você suporta 'condrestart'.

    
por 09.03.2015 / 01:38