博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Python监视进程是否结束
阅读量:4680 次
发布时间:2019-06-09

本文共 1333 字,大约阅读时间需要 4 分钟。

来自:

平时不打游戏在Linux下的时间比较长,用装了个XP可以上上QQ,用用其他一些只有Windows版的软件,这两天下BoA的演唱会又用到了网盘,而且网盘的客户端软件只支持Windows,这样就只能在里下载,可是下载结束自动关机的功能就失效了。。于是想到能不能自动关闭的同时,也能让Linux也一起关闭。

不知道有什么简便的方法可以实现,只想到了用写个小脚本(过去一直用来解决一些小问题),于是去网上搜了相关的类库,其中os.system函数可以调用Linux命令,初步想了下,准备用一个线程来不断执行命令,并检查的进程是否还存在,如果不存在了,就执行halt

不过尝试了一下用os.system调用后,输出的结果无法保存到变量中,看了一个帖子,发现os.可以解决,os.可以像打开文件一样执行一条Linux命令,命令返回的结果可以通过读取文件的方式获得。

通过 ax| | xp的组合命令可以得到正在执行xp的虚拟机进程,其中xp是自己设定的虚拟机的标题,一般得到的结果会有2条,1条就是虚拟机进程,另1条是命令本身,所以当得到的结果只剩下命令本身时,说明虚拟机已经关闭。

由于我用的Linux发行版是,执行关机命令需要sudo并且输入密码,所以要让自动关机能够实现还有一步是,设定用户执行sudo不需要输入密码,这可以通过sudo visudosudoers文件进行修改,在文件最后加上chocobo ALL=(ALL) NOPASSWD: ALL其中chocobo是用户名。

好了,准备工作都做完,就可以执行脚本监视进程啦,具体代码如下:

PYTHON
#!/usr/bin/env python import osimport time def autohalt():    while True:        ps_string = os.popen('ps ax | grep VirtualBox | grep xp','r').read()        ps_strings = ps_string.strip().split('\n')        if len(ps_strings) < 2:            os.system('sudo halt')            return        else:            print 'Still',len(ps_strings),'Processes, waiting 10s...'            time.sleep(10) if __name__=='__main__':    autohalt()

参考资料:

1. python中国 2. ---python中文官方站 3. - Python 中文社区 4. - Python For Dot Net 的网站 5. 程序设计语言排名 6. - python入门教程 7. Python中文用户组 8. 啄木鸟Python wiki 社区 9. VFX

转载于:https://www.cnblogs.com/sardine/archive/2010/12/20/1911716.html

你可能感兴趣的文章
20155216 2017-2018-1 第八周课下作业2
查看>>
AMS1117降压电路
查看>>
百度文库开放平台-阅读器
查看>>
七大排序算法总结
查看>>
初始Windows系统
查看>>
汉诺塔
查看>>
[BZOJ1089][SCOI2003]严格n元树(递推+高精度)
查看>>
微信小程序------代码构成
查看>>
Inpaint 强大的去水印、改图软体,轻鬆把不要的物件从相片中移除
查看>>
javaScript存储
查看>>
postgresql解决锁表
查看>>
Log4j和thymeleaf结合导致sql 日志输出不了
查看>>
Unity Android 5.6版本Resources.Load效率的问题
查看>>
【PRML读书笔记-Chapter1-Introduction】1.1 Example:Polynomial Curve Fitting
查看>>
AtCoder - 4130 K-th Substring
查看>>
.net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
查看>>
SAMBA服务和FTP服务讲解
查看>>
BZOJ 2301: [HAOI2011]Problem b
查看>>
用postman模拟ajax发送json数据的笔记
查看>>
洛谷 [P1118] IOI1994 数字三角形
查看>>