Init.d 代码无法正常工作

Init.d 代码无法正常工作

从 MQTT 实时流中过滤出来的数据被转储到一个名为的 csv 文件中mqtt.csv,转储过程由executor_start_up_job.txtBASH(具有 shebang)编写完成。

我想在后台转储过滤器守护进程,即,还想让它每次重新启动系统时都自动完成。所以我决定编写一个 init.d 脚本,我的代码内容如下:

#!/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

插入后set -x我得到以下输出:

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

问:如果我能让这段代码运行,我会把它放到目录中/etc/init.d/,这样它每次都能运行。但是目前它不起作用,没有 the 的输出set -x什么都没有,就好像我刚刚在终端上按了回车键一样。

答案1

您需要删除exit 0脚本末尾的,否则每次运行时它都会退出。

您可以查看cat /etc/init.d/skeleton一个可以运行的 init.d 脚本的示例。(对于您想要做的事情来说可能有点过头了,但它可以帮您做一些事情)。

相关内容