我的 init.d 脚本出了什么问题

我的 init.d 脚本出了什么问题

我目前从 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 |尾巴-1`
        echo "最后打印行: $last_line"
        ;;
  重新开始)
        停止
        开始
        ;;
  *)
        echo“用法:$0 {开始|停止|重新启动|状态}”
        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' 。

相关内容