현재 MQTT 라이브 스트림에서 데이터를 필터링하고 있습니다. 그런 다음 이 데이터를 이라는 csv 파일에 덤프했습니다 mqtt.csv
. 덤프 프로세스는 executor_start_up_job.txt
BASH로 작성되었습니다.
필터 데몬을 덤프하고 싶습니다. 즉, 백그라운드에서 수행하고 시스템을 다시 시작할 때마다 자동으로 수행되도록 시스템에 덤프하고 싶습니다. 그래서 저는 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'를 지원한다는 사실을 알리지 않았습니다.