当前位置:   article > 正文

python脚本后台运行(win|liunx)_python后台执行

python后台执行

一、windows

python.exe和pythonw.exe区别

python.exe在运行程序的时候,会弹出一个黑色的控制台窗口(也叫命令行窗口、DOS/CMD窗口);

pythonw.exe是无窗口的Python可执行程序,意思是在运行程序的时候,没有窗口,代码在后台执行。

windows 前台运行并输出日志文件

命令:python AgApi.py >> logs.log 2>&1 &

窗口关闭后程序也就关闭也

windows 后台运行并输出日志文件

命令: pythonw AgApi.py >> logs.log 2>&1

其中,AgApi.py  是你要执行的 Python 程序, logs.log是要保存输出的日志文件名。

  • pythonw的python程序用于使程序在后台运行,并且不会受到终端关闭的影响。
  • > 符号将程序的输出重定向每次清空写入日志文件中。
  • >> 符号将程序的输出重定向追加到到日志文件中
  • 2>&1 将标准错误输出也重定向到标准输出,这样所有输出都会被保存到日志文件中。
  • & 符号用于将命令放到后台执行,这样你可以继续在终端中执行其他命令。

执行该命令后,程序会在后台运行,并且所有输出都会被保存到指定的日志文件中。

杀进程:

killtaskkill /f /t /im pythonw.exe

或者:

 查端口:1. netstat -ano | findstr [端口号]  //说明: netstat -ano | findstr用于查找进程
 杀进程:2. taskkill /F /PID [PID]          //说明: taskkill /F /PID用于`强制终止`指定PID的进程

或者

写一个bat文件

echo off
::update field
::kill_type 1 port kill process 2 program name kill process
set kill_type=1
set listen_port=5000
set program_name=pythonw.exe

set KILL_PORT=1
set KILL_NAME=2

if %KILL_PORT% EQU %kill_type% (
    echo kill process port:%listen_port%
    for /f "tokens=5" %%m in ('netstat -aon ^| findstr "%listen_port%"') do (
        taskkill /f /pid %%m
    )
) else if %kill_type% EQU %KILL_NAME% (
    echo kill process name:%program_name%
    taskkill /f /im %program_name%
) else (
    echo data type invalid parameter
)
pause

二、linux

命令: nohup python -u AgApi.py >> logs.log 2>&1 &

其中,AgApi.py  是你要执行的 Python 程序, logs.log是要保存输出的日志文件名。

  • nohup命令用于使程序在后台运行,并且不会受到终端关闭的影响。
  • -u 使得python不启用缓冲,日志能及时输出日志文件中,python的输出默认是有有缓冲。
  • > 符号将程序的输出重定向每次清空写入日志文件中。
  • >> 符号将程序的输出重定向追加到到日志文件中
  • 2>&1 将标准错误输出也重定向到标准输出,这样所有输出都会被保存到日志文件中。
  • & 符号用于将命令放到后台执行,这样你可以继续在终端中执行其他命令。

执行该命令后,程序会在后台运行,并且所有输出都会被保存到指定的日志文件中。你可以使用 tail -f logs.log  命令来实时查看日志文件中的输出。

kill进程:

sudo kill -9 $(lsof -i:5000 -t)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/51832
推荐阅读
相关标签
  

闽ICP备14008679号