我已经写了这个bash守护进程,它关注了一个命名pipe道,logging了一个名为$LOG_FILE_BASENAME.$DATE的文件,并在$ACTIONABLE_LOG_FILE创build了它的过滤版本:
while true do DATE=`date +%Y%m%d` cat $NAMED_PIPE | tee -a "$LOG_FILE_BASENAME.$DATE" | grep -P -v "$EXCEPTIONS" >> "$ACTIONABLE_LOG_FILE" done pkill -P $$ # Here it's where it should kill it's children exit 0
当守护进程运行时,这就是进程表的外观:
/bin/sh the_daemon.sh _ cat the_fifo_queue _ tee -a log_file.20150807 _ grep -P -v "regexp" > filtered_log_file
问题是当我杀死守护进程(SIGTERM)时,由守护进程产生的cat,tee和grep进程不会被父进程收集。 相反,他们成为孤儿,并继续等待命名pipe道上的input。
一旦FIFO接收到一些input,则它们按照指示处理该input并死亡。
将node.js + expressjs应用程序的NODE_ENV设置为ubuntu下的守护程序
如何用setuptools打包Python守护进程
守护进程不停止在Linux中
附加守护进程valgrind并收集每个守护进程调用的日志
我如何在Linux Ubuntu中创build.sh扩展文件
如何让守护进程在死亡之前杀死自己的孩子? 为什么他们不死于pkill -P $$ ?
PHP作为守护进程/服务
在Linux上守护Java应用程序的最佳方式
修改python守护进程脚本,停止不起作用
我怎么要求一个低编号的端口作为非根的“正确的方式”
Linux / Bash文件描述符在执行守护进程时
你想为你的脚本设置一个信号处理程序,以防脚本自身得到信号时终止其进程组的所有成员(它的子程序):
#!/bin/bash function handle_sigterm() { pkill -P $$ exit 0 } trap handle_sigterm SIGTERM while true do DATE=`date +%Y%m%d` cat $NAMED_PIPE | tee -a "$LOG_FILE_BASENAME.$DATE" | grep -P -v "$EXCEPTIONS" >> "$ACTIONABLE_LOG_FILE" done handle_sigterm exit 0
更新:
根据pilcrow的评论替换
cat $NAMED_PIPE | tee -a "$LOG_FILE_BASENAME.$DATE" | grep -P -v "$EXCEPTIONS" >> "$ACTIONABLE_LOG_FILE"
通过
cat $NAMED_PIPE | tee -a "$LOG_FILE_BASENAME.$DATE" | grep -P -v "$EXCEPTIONS" >> "$ACTIONABLE_LOG_FILE" & wait $!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。