내 init.d 스크립트에 어떤 문제가 있나요? [세그먼트 오류]

내 init.d 스크립트에 어떤 문제가 있나요? [세그먼트 오류]

현재 MQTT 라이브 스트림에서 데이터를 필터링하고 있습니다. 그런 다음 이 데이터를 이라는 csv 파일에 덤프했습니다 mqtt.csv. 덤프 프로세스는 executor_start_up_job.txtBASH로 작성되었습니다.

필터 데몬을 덤프하고 싶습니다. 즉, 백그라운드에서 수행하고 시스템을 다시 시작할 때마다 자동으로 수행되도록 시스템에 덤프하고 싶습니다. 그래서 저는 init.d스크립트를 작성하기로 결정했습니다. 제 코드 내용은 다음과 같습니다.

#!/bin/bash
세트-x

요청된 명령=$1

시작() {

        /home/ed/start_up_job/executor_start_up_job.txt &
}
# 덤프 다시 시작
멈추다() {

        Killproc executor_start_up_job.txt
        에코
}
###주요 논리###
$requested_command의 경우
  시작)
        시작
        ;;
  멈추다)
        멈추다
        ;;
  상태)
        last_line=`cat mqtt.csv|tail-1`
        echo "마지막으로 인쇄된 줄: $last_line"
        ;;
  재시작)
        멈추다
        시작
        ;;
  *)
        echo "사용량: $0 {start|stop|restart|status}"
        1번출구
        ;;
이삭
0번 출구

삽입 후 set -x다음과 같은 결과가 출력됩니다.


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

묻다:이것은 처음으로 글을 쓰는 init.d것이며 이를 기반으로 코드를 작성했습니다.segmentation fault' ' 오류가 발생하여 작동하지 않습니다.

답변1

아니요, 여러 구문 오류가 있기 때문에 작동하지 않습니다.

또한 모범 사례를 일부 위반했습니다.

오류를 수정한 후 파일에 bash -x를 사용하여 실행되는지 확인하세요. 스크립트를 주의 깊게 읽고 구문 오류를 수정하세요.

몇 가지 실수:

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

나는 더 이상 3에 관심을 두지 않는다. 또한 실행 파일의 경로를 지정하는 것은 일반적으로 변수를 사용하여 지정하는 것입니다. "txt" 파일을 실행하는 것도 정상적이지 않습니다. 또한 사용자에게 'condrestart'를 지원한다는 사실을 알리지 않았습니다.

관련 정보