通过rc.local开机自启执行nohup命令运行Flask,nohup.out中没有Flask请求响应日志

需求

通过修改/etc/rc.d/rc.local,实现开机自启Flask服务,CentOS 7.9。rc.local参考链接1,参考链接2。

问题

在/etc/rc.d/rc.local中添加

/home/python/face_jiance/kaijiziqi.sh

在/home/python/face_jiance/kaijiziqi.sh中写

nohup /root/miniconda3/envs/face_jiance/bin/python /home/python/face_jiance/face_jiance.py > /home/python/face_jiance/nohup.out &

用chmod +x命令给rc.local和kaijiziqi.sh加可执行权限。

另外有些文章说还需要重启rc-local.service,我没重启这个服务,参考链接3。

重启服务器后,nohup.out中的信息不全,没有Flask接口收到的请求的记录,也没有Flask的启动ip和端口信息。而手动执行上面的nohup /root/miniconda3/envs/face_jiance/bin/python /home/python/face_jiance/face_jiance.py > /home/python/face_jiance/nohup.out &后nohup.out中的信息是完整的,有Flask接口收到的请求的记录,也有Flask的启动ip和端口信息。整个过程中外部一直在请求这个Flask接口。

手动执行nohup命令,启动flask服务​​​​
通过rc.local开机自启flask服务

 解决

有人说用python -u,我试了不行。

方法一

就是在原来命令末尾&前加2>&1

nohup /root/miniconda3/envs/face_jiance/bin/python /home/python/face_jiance/face_jiance.py > /home/python/face_jiance/nohup.out 2>&1 &

方法二

就是把原来命令中>改成&>

nohup /root/miniconda3/envs/face_jiance/bin/python /home/python/face_jiance/face_jiance.py &> /home/python/face_jiance/nohup.out &

原因

首先需要了解下标准输出stdout和标准错误stderr和重定向,在文章末尾的参考链接。

1.Flask的这些日志,默认交给stderr,这项默认设置也可以删除。Flask文档。

缺省配置

如果没有自己配置日志, Flask 会自动添加一个 StreamHandler 到 app.logger 。 在请求过程中,它会写到由 WSGI 服务器指定的,保存在 environ['wsgi.errors'] 变量中的日志流(通常是 sys.stderr ) 中。在请求之外,则会记录到 sys.stderr 。

移除缺省配置

如果在操作 app.logger 之后配置日志,并且需要 移除缺省的日志记录器,可以导入并移除它:

from flask.logging import default_handler
app.logger.removeHandler(default_handler)

2.nohup --help中有一句

If standard error is a terminal, redirect it to standard output.

所以手动执行nohup时,Flask日志被重定向到stdout,然后存到nohup.out中。这是手动执行nohup得到的信息就完整的原因。

3.那为什么手动执行可以,开机自启就不行?开机自启的stderr可能不是在terminal的,所以就没有自动重定向到stdout了,而手动指定的方式就是2>&1,或&>。

4.在rc.local文件中的命令的stderr输出到系统日志,如/var/log/syslog或/var/log/messages,参考链接4,参考链接5,参考链接6,也就是我的最开始的nohup命令

nohup /root/miniconda3/envs/face_jiance/bin/python /home/python/face_jiance/face_jiance.py > /home/python/face_jiance/nohup.out &

它的Flask的详细日志,我这里在/var/log/messages,收到的请求的记录也有,太多了没截图

还可以用tail -f /var/log/messages查看最新的日志。

排查过程 

以下大部分内容是咨询群友的。

怀疑终端环境变量让stderr重定向到了stdout。

理论上来说,在终端手动运行这句命令,stderr只会输出到终端。(后来知道实际是nohup自动重定向了)

strace -o strace.log -f sh kaijiziqi.sh看看dup2把stderr重定向到哪去了

然后cat strace.log | grep "dup2" 

把2重定向到1了,猜测是环境变量有问题。

然后群友自己又试了下,发现nohup会自动将2重定向到1,再就看了nohup --help就明白了。感谢群友的帮助。

参考链接

一文直接搞懂什么是标准输出/错误重定向 (qq.com)

到底什么是标准输入输出 (qq.com)

Linux的标准输入和输出 (qq.com)

一日一技:怎么>重定向不过去了? (qq.com)

第 B 章 Linux Shell 脚本 (brinnatt.com)

open-c-book/zh/chapters/02-chapter3.markdown at master · tinyclub/open-c-book · GitHub

apachecn-linux-zh/docs/rhel8-admin/03.md at master · apachecn/apachecn-linux-zh · GitHub

牛客网刷题错题记录(Linux)

Shell 脚本编程详解 | Front-End-Basics (chenfangxu.com)

Linux进阶(命令行,系统配置,内存管理,进程,信号) | 扔掉笔记 ᐛ (whatsrtos.github.io)

Flask Python Flask将访问日志写入标准错误流|极客笔记 (deepinout.com)

Python Flask writes access log to STDERR - Stack Overflow

skills_centos - mediocrep - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据可视化软件的兴起:背后的驱动力

在当今信息时代,数据变得比以往任何时候都更为重要。数据可视化软件的广泛应用成为了一种趋势。那么,为什么越来越多的人选择使用数据可视化软件呢?今天我就以自己的工作经验为基础,进行简单的分析。 数据可视化软件能将枯燥的数…

react-lazyload 的介绍、安装、使用。

目录 基本介绍 安装 使用 基本使用 详细属性 基本介绍 react-lazyload 是一个 React 组件,用于延迟加载(懒加载)页面上的图片或其他资源。懒加载是一种优化手段,它允许页面在初次加载时只加载可视区域内的内容,…

vue3移动端脚手架(纯净,集成丰富)

概述 一个纯净的移动端框架 ,用到了 Vue3 vuex Vite3 Vant3 sass eslint stylelint htmlhint husky commitlint axios axios-adapter VConsole 自定义全局 loading ,自定义函数式 dialog (api模仿微信小程序)&#x…

增强现实中的真实人/机/环与虚拟人/机/环

在增强现实中,真实人与虚拟人、真实机器与虚拟机器、真实环境与虚拟环境之间有着密切的关系。增强现实技术通过将真实与虚拟相结合,打破了传统的现实世界与虚拟世界的界限,创造出了一种新的体验方式。真实人、真实机器和真实环境与其对应的虚…

linux进入emergency mode

问题描述 linux系统进入emergency mode模式 解决方法 查看问题原因 journalctl -xb -p3 使用fsck 不一定是sda2,也可能是其他,我的是/dev/sda6,然后接受所有的option,完毕后重启电脑 fsck /dev/sda2接受所有的选项&#xff…

Python与ArcGIS系列(十六)重复节点检测

目录 0 简述1 实例需求2 arcpy开发脚本0 简述 在处理gis线图层和面图层数据时,有时候会遇到这种情况:数据存在重复节点或伪重复节点(两个节点距离极小),往往我们需要对这种数据进行检测标注或进行修改。本篇将介绍如何利用arcpy及arcgis的工具箱实现这个功能。 1 实例需求…

【UE 材质】任务目标点效果

效果 步骤 1. 新建一个工程,创建一个Basic关卡 2. 新建一个材质,这里命名为“M_GoalPoint” 打开“M_GoalPoint”,设置混合模式为“半透明”,勾选“双面” 在材质图表中添加如下节点 此时预览效果如下 继续添加如下节点 此时效果…

无人机巡检中台揭秘,无人机管控平台助力巡查无人机巡检方案落地

随着无人机智能巡检的飞速发展,巡查无人机应用场景也日益多元,无人机巡检方案被频繁落地到工业生产及巡检巡逻业务中。而无人机管控平台应运而生,成为推动无人机智能巡检的关键工具。那我们一起来看一下无人机管控平台的作用: 一、…

微信小程序引入Vant Weapp修改样式不起作用,使用外部样式类进行覆盖

一、引入Vant Weapp后样式问题 在项目中使用第三方组件修改css样式时,总是出现各种各样问题,修改的css样式不起作用,没有效果,效果不符合预期等。 栗子(引入一个搜索框组件)实现效果: 左侧有一个搜索文字背景为蓝色,接着跟一个搜索框 wxml <view class"container&q…

【Python】 Python web开发库大全

库排序是按照使用人数和文档的活跃度为参考进行的&#xff0c;建议大家使用排名靠前的框架&#xff0c;因为它们的文档更齐全&#xff0c;技术积累要更多&#xff0c;社区更繁盛&#xff0c;能得到更好的支持&#xff0c;这样在遇到自己无法解决的问题&#xff0c;可以更快更高…

Mint Blockchain,一个聚焦在 NFT 领域的 L2 网络

Mint 是什么&#xff1f; Mint 是一个聚焦在 NFT 领域的创新型 L2 网络。Mint Blockchain 致力于促进 NFT 资产协议标准的创新和现实商业场景中 NFT 资产的大规模采用。 不管是过去 3 年在以太坊网络涌现的 NFT&#xff0c;还是当下在比特币网络活跃的“铭文” NFT&#xff0c…

微信小程序引入vant-weapp爬出坑

最新的微信小程序的项目结构跟之前的不一样&#xff0c;然后&#xff0c;按照vant-weapp上的官方文档&#xff0c;安装步骤失败&#xff0c;提示了各种错误。如果你的微信小程序结构跟我的一致&#xff0c;可以采用和我一样的方案。 微信小程序引入vant-weapp爬出坑 移动pack…

深入浅出:HTTPS单向与双向认证及证书解析20231208

介绍: 网络安全的核心之一是了解和实施HTTPS认证。本文将探讨HTTPS单向认证和双向认证的区别&#xff0c;以及SSL证书和CA证书在这些过程中的作用&#xff0c;并通过Nginx配置实例具体说明。 第一部分&#xff1a;HTTPS单向认证 定义及工作原理&#xff1a;HTTPS单向认证是一…

做数据分析为何要学统计学(5)——什么问题适合使用t检验?

t检验&#xff08;Students t test&#xff09;&#xff0c;主要依靠总体正态分布的小样本&#xff08;例如n < 30&#xff09;对总体均值水平进行差异性判断。 t检验要求样本不能超过两组&#xff0c;且每组样本总体服从正态分布&#xff08;对于三组以上样本的&#xff0…

同一个kmz数据同样的底图在QGIS上显示位置正常, 在Mars3d中显示就偏移了一些

问题&#xff1a; 1.同一个kmz数据同样的底图在QGIS上显示位置正常, 在网页中显示就偏移了一些 在qgis上的显示效果&#xff0c;和在mars3d的显示效果&#xff1a;数据明显存在偏移。 解决步骤&#xff1a; 1.查看了kmz数据&#xff0c;里面实际是tif图片数据&#xff0c;估…

MES管理系统在非标制造企业中的应用

在当今制造业中&#xff0c;非标制造企业逐渐成为一种重要的存在。与传统的批量生产制造企业不同&#xff0c;非标制造企业主要特点是能够根据客户需求进行定制化生产。这种定制化的生产模式对企业的管理提出了更高的要求&#xff0c;同时也带来了更多的挑战。在非标制造企业中…

mac苹果电脑清除数据软件CleanMyMac X4.16

在数字时代&#xff0c;保护个人隐私变得越来越重要。当我们出售个人使用的电脑&#xff0c;亦或者离职后需要上交电脑&#xff0c;都需要对存留在电脑的个人信息做彻底的清除。随着越来越多的人选择使用苹果电脑&#xff0c;很多人想要了解苹果电脑清除数据要怎样做才是最彻底…

ELK(三)—安装可视化工具

目录复制 目录 一、ElasticSearch-Head可视化工具介绍1.1特性&#xff1a;1.2用法&#xff1a; 二、安装2.1docker安装2.2Chrome插件安装 一、ElasticSearch-Head可视化工具介绍 ElasticSearch-Head 是一个基于浏览器的 Elasticsearch 可视化工具&#xff0c;它提供了一个直观…

【GAMES101】观测变换

图形学不等于 OpenGL&#xff0c;不等于光线追踪&#xff0c;而是一套生成整个虚拟世界的方法 记得有个概念叫光栅化&#xff0c;就是把三维虚拟世界的事物显示在二维的屏幕上&#xff0c;这里就涉及到观察变换 观察变换&#xff0c;叫viewing transformation&#xff0c;包括…

1、关于前端js-ajax绕过

1、Ajax知识 、js--Ajax 传统请求跟js--Ajax请求的差别 在实例中用的上js-ajax的有 表单验证&#xff1a; 在用户填写表单时&#xff0c;可以使用 Ajax 在不刷新页面的情况下验证表单字段&#xff0c;并提供即时反馈。 实时搜索&#xff1a; 在搜索框中输入内容时&#xff0…