从 MQTT 实时流中过滤出来的数据被转储到一个名为的 csv 文件中mqtt.csv
,转储过程由executor_start_up_job.txt
BASH(具有 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 脚本的示例。(对于您想要做的事情来说可能有点过头了,但它可以帮您做一些事情)。