通過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.pswp.cn/news/208604.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208604.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208604.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據可視化軟件的興起:背后的驅動力

在當今信息時代,數據變得比以往任何時候都更為重要。數據可視化軟件的廣泛應用成為了一種趨勢。那么,為什么越來越多的人選擇使用數據可視化軟件呢?今天我就以自己的工作經驗為基礎,進行簡單的分析。 數據可視化軟件能將枯燥的數…

react-lazyload 的介紹、安裝、使用。

目錄 基本介紹 安裝 使用 基本使用 詳細屬性 基本介紹 react-lazyload 是一個 React 組件,用于延遲加載(懶加載)頁面上的圖片或其他資源。懶加載是一種優化手段,它允許頁面在初次加載時只加載可視區域內的內容,…

【Harmony】鴻蒙操作系統架構

目錄 導論 第一部分:內核與核心組件 1.1 鴻蒙微內核的設計 1.2 分布式能力的強化 1.3 HarmonyOS的分層架構 1.4 分布式數據管理 第二部分:鴻蒙的核心能力 2.1 華為 ARK Compiler的引入 2.2 分布式圖形界面的實現 2.3 統一的設備驅動框架 2.4 輕…

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 實例需求…

Webpack技術入門與實踐

1.概念: 本質上, webpack是一個現代JavaScript應用程序的靜態模塊打包器,當webpack處理應用程序時,它會遞歸地構建一個依賴關系圖,其中包含應用程序需要的每個模塊,然后將所有這些模塊打包成一個或多個bund…

【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;可以更快更高…

數據結構:單鏈表——定義、插入、刪除

1、定義 注&#xff0c;以下都是帶頭節點的單鏈表 typedef struct LNode {ElementType data;struct LNode *next; }LNode,*LinkList;bool InitList(LinkList &L){L (LNode *)malloc(sizeof(LNode));if(LNULL){//內存不足return false;}L->nextNULL;return true; }這里…

Mint Blockchain,一個聚焦在 NFT 領域的 L2 網絡

Mint 是什么&#xff1f; Mint 是一個聚焦在 NFT 領域的創新型 L2 網絡。Mint Blockchain 致力于促進 NFT 資產協議標準的創新和現實商業場景中 NFT 資產的大規模采用。 不管是過去 3 年在以太坊網絡涌現的 NFT&#xff0c;還是當下在比特幣網絡活躍的“銘文” NFT&#xff0c…

通信協議 遠程調用RPC

1.通訊協議 所有的HDFS通訊協議都是建立在TCP/IP協議之上。 客戶端通過一個可配置的TCP端口連接到Namenode&#xff0c;通過ClientProtocol協議與Namenode交 互。而Datanode使用DatanodeProtocol協議與Namenode交互。 一個遠程過程調用(RPC)模型被抽象出來封裝ClientProtoc…

微信小程序引入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單向認證是一…

ELK架構監控MySQL慢日志

目錄 一、架構概述 二、安裝部署 三、Filebeat配置 四、Logstash配置 一、架構概述 本文使用將使用filebeat收集mysql日志信息&#xff0c;發送到redis中緩存&#xff0c;由logstash從redis中取出&#xff0c;發送es中存儲&#xff0c;再從kibana中展示。 二、安裝部署 ELK…

做數據分析為何要學統計學(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;估…