日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 启动/关闭多个py脚本

發布時間:2023/12/1 linux 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 启动/关闭多个py脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

后臺運行腳本

需求:很多時候我們會在 linux 服務器上執行 python 腳本,然而腳本程序執行的時間可能比較長,當耗時過長的情況下,我們使用 ssh 遠程登錄到 linux 服務器上容易造成超時自動斷開連接,當用戶注銷時,終端會收到 hup(hangup)信號從而關閉其所有子進程,會導致正在執行中的 python 腳本被中斷,為了解決這一問題,我們使用 nohup 命令并結合 & 解決此問題。

命令格式:nohup command &

nohup 指:在忽略掛起信號的情況下運行給定的命令,以便在注銷后命令可以在后臺繼續運行;nohup 并不支持后臺運行,它是忽略內部的掛斷信號,不掛斷運行

& 指:后臺運行,即將進程放到后臺運行,這里的后臺,其實指的是當前登陸終端的后臺,如果在命令尚未執行完畢時就退出登陸,則此命令的執行會被中斷。

那么,如果將 nohup 與 & 結合在一起使用,這樣就可以不掛斷的永久在后臺執行。

命令示例:(將 test.py 輸出的內容寫入到 test.out 文件中)nohup python -u test.py 參數1 參數2 參數3 > test.out 2>&1 &

其中 “2>&1” 表示:將錯誤和輸出都傳到 test.out 文件中,默認狀態只把輸出輸出到文件中

如果去掉末尾的 ‘&’ ,則表示此命令會在終端前臺工作,所有輸出的內容會寫入到 test.out 文件。

實時查看 test.py 輸出的內容:tail -f -n 20 test.out

啟動腳本

例如我要同時運行多個python腳本,可以這么創建一個start.sh

#!/bin/bash cd ./middle_back_end/backend/ nohup python -u backend_today.py >/home/hanhan/InternShipProject/out/today.out 2>&1 & nohup python -u backend_yestoday.py >/home/hanhan/InternShipProject/out/yestoday.out 2>&1 & nohup python -u backend_getnums.py >/home/hanhan/InternShipProject/out/getnums.out 2>&1 & cd /home/hanhan/InternShipProject/front_middle_end/backend/ nohup python -u backend.py >/home/hanhan/InternShipProject/out/flask.out 2>&1 &

然后在sh文件目錄下,通過命令sh start.sh運行腳本。然后我們看看是否運行成功:
運行命令ps -ef | grep backend(因為我這邊腳本名字中都有backend這個字眼),可以看到確實都在運行

[root@VM-90-225-centos /home/hanhan/InternShipProject]# ps -ef | grep backend root 13618 1 8 14:26 pts/7 00:00:35 python -u backend_today.py root 13619 1 8 14:26 pts/7 00:00:35 python -u backend_yestoday.py root 13620 1 0 14:26 pts/7 00:00:00 python -u backend_getnums.py root 13621 1 0 14:26 pts/7 00:00:00 python -u backend.py root 13846 13621 0 14:26 pts/7 00:00:02 /usr/bin/python /var/www/html/InternShipProject/front_middle_end/backend/backend.py root 24194 23153 0 14:33 pts/3 00:00:00 grep --color=auto backend

關閉腳本

將剛剛創建的幾個進程一次性kill掉,創建stop.sh

#!/bin/sh ps -ef |grep backend | grep -v grep | awk '{print $2}' | xargs kill -9

第一段前面兩節不陌生,是查找某個進程,第三節的意思是過濾grep(一般調用前兩節命令后顯示的有兩段數據,過濾的就是第二段無用的數據),第四節的意思是找出進程號
$2:表示第二個字段
print $2 : 打印第二個字段,第五節的意思是殺死找出的進程號.

然后在sh文件目錄下,通過命令sh stop.sh運行腳本。
最后再通過ps -ef |grep backend命令觀察,發現kill成功。

參考

Linux 自動關閉某個進程腳本
nohup運行python腳本_linux 下 Python 腳本后臺執行(nohup command &)
Linux中執行shell腳本的4種方法總結

總結

以上是生活随笔為你收集整理的linux 启动/关闭多个py脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。