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

一、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 将标准错误输出也重定向到标准输出,这样所有输出都会被保存到日志文件中。
  • & 符号用于将命令放到后台执行,这样你可以继续在终端中执行其他命令。

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

杀进程:

kill: taskkill /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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值