V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
iamsunxin
V2EX  ›  Python

请教班里的大婶们, Windows 平台下如何获取正在运行的 Python 脚本名

  •  
  •   iamsunxin · 2019-03-18 11:24:00 +08:00 · 2492 次点击
    这是一个创建于 2102 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这几日在对公司的 windows 服务器做运维。。。。。。Linux 下跑的 python 脚本可以 ps 出来脚本名,服务挂了可以写个监控脚本拉起来。但是,windows 下服务脚本挂了,我的一种方法是在系统资源中查找对应脚本是否挂了,这个方法不知道有没有大婶试过,第二种就比较骚气了,把所有的服务打包成 exe,这样在系统资源中就能找到对应的 exe 名字。求轻喷。。。
    14 条回复    2019-03-19 17:18:11 +08:00
    wevsty
        1
    wevsty  
       2019-03-18 11:41:45 +08:00   ❤️ 1
    任务栏管理器进程选项卡—》表头右键选择列—》勾上命令行
    就可以看到 python 的启动参数了。

    要用代码解决的话那就自己调 API
    ZwQueryInformationProcess + ReadProcessMemory
    例子自己搜搜就是了。
    UnknownR
        2
    UnknownR  
       2019-03-18 12:37:26 +08:00
    Get-Process -Name [Process Name] | select Path
    xuyl
        3
    xuyl  
       2019-03-18 13:18:43 +08:00
    如果你是用 python script.py 这种方式运行脚本,脚本名 sys.argv[0]
    iamsunxin
        4
    iamsunxin  
    OP
       2019-03-18 13:24:30 +08:00
    @UnknownR 这个是 API,还是?
    liu19931020
        5
    liu19931020  
       2019-03-18 13:25:48 +08:00
    powershell 一样有 Get-Process,alias 就是 ps
    DAPTX4869
        6
    DAPTX4869  
       2019-03-18 13:30:13 +08:00
    之前在服务器直接用定时任务 kill 再重启的。。。不管服务有没有出问题
    不知道定时任务有没有判断程序存在的服务。。。。
    CallMeReznov
        7
    CallMeReznov  
       2019-03-18 13:45:48 +08:00 via Android
    有 zabbix 啊
    写个规则自动监控
    挂了自动拉取


    完全傻瓜
    UnknownR
        8
    UnknownR  
       2019-03-18 15:04:08 +08:00
    @iamsunxin
    get-process 是 powershell 的命令,也就是 linux 下的 ps,-Name 参数就是筛选出你想要查的 process 的名称,管道后是 select 语句,选择的‘ Path ’ 参数就是 taskmgr 图形界面里的 command line - 命令行 参数,也就是你这个 process 是运行的哪个程序、脚本,其具体值是程序、脚本的绝对路径
    iamsunxin
        9
    iamsunxin  
    OP
       2019-03-19 10:05:41 +08:00
    @wevsty ZwQueryInformationProcess + ReadProcessMemory 这是 DELPHI 的东西啊,还需要用 Python 调用 DELPHI 的 API 么
    iamsunxin
        10
    iamsunxin  
    OP
       2019-03-19 10:10:19 +08:00
    @UnknownR many 3ks
    iamsunxin
        11
    iamsunxin  
    OP
       2019-03-19 10:10:38 +08:00
    iamsunxin
        12
    iamsunxin  
    OP
       2019-03-19 10:11:25 +08:00
    @CallMeReznov 我想用脚本来完成这个功能,感谢科普。。。
    iamsunxin
        13
    iamsunxin  
    OP
       2019-03-19 11:41:27 +08:00
    @UnknownR powershell 中 get-process 没有 commandline 属性,找了下度娘---通过 wmi 命令查询,( get-wmiobject -query "select * from win32_process).commandline 可以获得对应的 python 脚本名
    UnknownR
        14
    UnknownR  
       2019-03-19 17:18:11 +08:00
    @iamsunxin get-process 下叫 Path
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1426 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 17:18 · PVG 01:18 · LAX 09:18 · JFK 12:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.