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

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

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


完全傻瓜
UnknownR
2019-03-18 15:04:08 +08:00
@iamsunxin
get-process 是 powershell 的命令,也就是 linux 下的 ps,-Name 参数就是筛选出你想要查的 process 的名称,管道后是 select 语句,选择的‘ Path ’ 参数就是 taskmgr 图形界面里的 command line - 命令行 参数,也就是你这个 process 是运行的哪个程序、脚本,其具体值是程序、脚本的绝对路径
iamsunxin
2019-03-19 10:05:41 +08:00
@wevsty ZwQueryInformationProcess + ReadProcessMemory 这是 DELPHI 的东西啊,还需要用 Python 调用 DELPHI 的 API 么
iamsunxin
2019-03-19 10:10:19 +08:00
@UnknownR many 3ks
iamsunxin
2019-03-19 10:10:38 +08:00
iamsunxin
2019-03-19 10:11:25 +08:00
@CallMeReznov 我想用脚本来完成这个功能,感谢科普。。。
iamsunxin
2019-03-19 11:41:27 +08:00
@UnknownR powershell 中 get-process 没有 commandline 属性,找了下度娘---通过 wmi 命令查询,( get-wmiobject -query "select * from win32_process).commandline 可以获得对应的 python 脚本名
UnknownR
2019-03-19 17:18:11 +08:00
@iamsunxin get-process 下叫 Path

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/545703

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX