私は現在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」をサポートしていることを知らなかった。