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
coolloves
V2EX  ›  Python

请教下,一个 Python 脚本 进程在,文件不存在,如何查看他在干什么?

  •  
  •   coolloves · 2018-06-23 11:54:53 +08:00 · 3370 次点击
    这是一个创建于 2343 天前的主题,其中的信息可能已经有所发展或是发生改变。
    某机器可能种马了,看了下,有个 python 进程有可疑.
    nobody    6447     1  0 Jun19 ?        00:00:00 python /tmp/aa/1.py 47.104.173.85 3336
    但是,查看 /tmp/aa/1.py,已经不存在了.
    lsof -p 6447 可疑看到 服务器和 47.104.173.85 3336 之间有通信,但是也是 closed 的
    请教下,此种情况,我怎么判断这个脚本是具体是干什么呢?
    谢过各位先!
    
    12 条回复    2018-06-25 08:39:18 +08:00
    JHerschel
        1
    JHerschel  
       2018-06-23 12:28:01 +08:00   ❤️ 1
    cd 到 /proc/6447/fd 目录,里面是你进程 6447 打开的文件描述符, 找到 /tmp/aa/1.py 对应的描述符,用 cat 命令导出到别的地方,然后查看就可以了。
    coolloves
        2
    coolloves  
    OP
       2018-06-23 12:47:21 +08:00
    @JHerschel 里面没有什么可以打开的.能否在指点下?
    ```
    total 0
    lrwx------ 1 nobody nobody 64 Jun 23 11:39 0 -> socket:[1562590214]
    lrwx------ 1 nobody nobody 64 Jun 23 11:39 1 -> socket:[1562590214]
    lrwx------ 1 nobody nobody 64 Jun 23 11:39 2 -> socket:[1562590214]
    lrwx------ 1 nobody nobody 64 Jun 23 11:39 3 -> socket:[1562590214]
    lrwx------ 1 nobody nobody 64 Jun 23 11:39 4 -> socket:[1562588838]
    lrwx------ 1 nobody nobody 64 Jun 23 11:39 5 -> socket:[1551223311]
    lrwx------ 1 nobody nobody 64 Jun 23 11:39 6 -> /dev/ptmx
    lrwx------ 1 nobody nobody 64 Jun 23 11:39 7 -> socket:[1562583276]
    lrwx------ 1 nobody nobody 64 Jun 23 11:39 8 -> socket:[1551223324]
    ```
    JHerschel
        3
    JHerschel  
       2018-06-23 13:35:30 +08:00
    @coolloves 抱歉啊,是我想的太简单了。Python 运行脚本并不会持续打开那个脚本,所以它的确已经被删除了。

    我找到两个网址你可以看一看:
    https://stackoverflow.com/questions/19737358/recovery-deleted-but-running-python-script
    https://gist.github.com/simonw/8aa492e59265c1a021f5c5618f9e6b12

    如果有解决方法请让我知道。
    Aug
        4
    Aug  
       2018-06-23 13:40:39 +08:00 via Android
    如果想要恢复这个运行的 python 脚本请用 lsof 命令。恢复了之后如果是 elf 文件的话,我也不知道怎么查看内容。知道的可以告诉我一下
    banbo
        5
    banbo  
       2018-06-23 14:04:20 +08:00
    kill 了吧 无法恢复
    pierre1994
        6
    pierre1994  
       2018-06-23 16:30:46 +08:00
    应该是木马,只能 kill 掉了
    coolloves
        7
    coolloves  
    OP
       2018-06-23 17:00:38 +08:00 via iPhone
    @Aug lsof 怎么恢复呢,我 lsof 也只能看到 python 的一些模块调用,以及一些网络通信,实在看不到什么有价值的东西
    coolloves
        8
    coolloves  
    OP
       2018-06-23 17:32:10 +08:00 via iPhone
    @JHerschel 多谢了朋友,看了下,估计可能性很小了,我周一上班在面向搜索了解下
    inframe
        9
    inframe  
       2018-06-23 19:01:59 +08:00 via Android
    把进程 dump 下来然后导入符号表,把运行时的字节码数据位置找出来然后存成 pyc 反编译一下
    jeffson
        10
    jeffson  
       2018-06-23 22:19:43 +08:00
    Mark
    PythonAnswer
        11
    PythonAnswer  
       2018-06-23 22:22:54 +08:00 via iPhone
    关注
    coolloves
        12
    coolloves  
    OP
       2018-06-25 08:39:18 +08:00
    测试了下,如果,脚本本身还是在干活的,那可以用 strace 看到具体干了什么
    但是我的那个脚本应该只是运行着,但是活应该都干完了,所以,看不到什么东西了
    太高深的也不想研究了,暂时到此为止吧,感谢各位朋友!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5777 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 01:56 · PVG 09:56 · LAX 17:56 · JFK 20:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.