免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: mcumsigscr
打印 上一主题 下一主题

python 如何像shell脚本一样,在执行前,传个参数给脚本 [复制链接]

论坛徽章:
1
狮子座
日期:2013-12-05 16:04:37
11 [报告]
发表于 2013-12-02 16:06 |只看该作者
回复 10# icymirror

感谢。请问我这个命令这么写,怎么出来的结果相反啊。


command = "ps -ef | grep " + processName + "| grep -v grep | grep -v $0 | wc -l"


   

论坛徽章:
4
白羊座
日期:2013-11-05 10:26:09冥斗士
日期:2015-11-17 14:19:55白银圣斗士
日期:2015-11-17 15:13:0815-16赛季CBA联赛之新疆
日期:2016-04-01 09:10:58
12 [报告]
发表于 2013-12-02 16:23 |只看该作者
回复 11# mcumsigscr


    如果使用刚刚的shell命令,那python脚本可以改写成:
  1. #!/usr/bin/env python

  2. import re
  3. import subprocess
  4. import sys


  5. def findProcess(processName):
  6.     command = 'ps -ef | grep ' + processName + ' | grep -v grep | wc -l'
  7.     ps = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
  8.     output = ps.stdout.read()
  9.     ps.stdout.close()
  10.     ps.wait()
  11.     return output

  12. def isProcessRunning(processName):
  13.     output = findProcess(processName)
  14.     if int(output) > 0:
  15.         return True
  16.     else:
  17.         return False

  18. if __name__ == '__main__':
  19.     if len(sys.argv) > 1:
  20.         print isProcessRunning(sys.argv[1])
复制代码

论坛徽章:
1
狮子座
日期:2013-12-05 16:04:37
13 [报告]
发表于 2013-12-02 16:28 |只看该作者
回复 12# icymirror


感谢回复。执行结果貌似还是相反的。

关键还是这个命令command = 'ps -ef | grep ' + processName + ' | grep -v grep | wc -l'

我还想把python脚本名字过滤掉,应该怎么写呢?


   

论坛徽章:
4
白羊座
日期:2013-11-05 10:26:09冥斗士
日期:2015-11-17 14:19:55白银圣斗士
日期:2015-11-17 15:13:0815-16赛季CBA联赛之新疆
日期:2016-04-01 09:10:58
14 [报告]
发表于 2013-12-02 16:46 |只看该作者
回复 13# mcumsigscr


    Sorry, 发现一个问题,因为是使用grep做-v过滤,会有个python开头的没有被过滤,为了省事,把代码还原成之前的方式可以正常工作。
  1. def findProcess(processName):
  2.     command = 'ps -ef | grep ' + processName
  3.     ps = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
  4.     output = ps.stdout.read()
  5.     ps.stdout.close()
  6.     ps.wait()
  7.     return output

  8. def isProcessRunning(processName):
  9.     output = findProcess(processName)
  10.     if re.search('/usr/sbin/' + processName, output) != None:
  11.         return True
  12.     else:
  13.         return False
复制代码

论坛徽章:
1
狮子座
日期:2013-12-05 16:04:37
15 [报告]
发表于 2013-12-02 17:50 |只看该作者
icymirror 发表于 2013-12-02 16:46
回复 13# mcumsigscr



谢谢。:)

论坛徽章:
1
狮子座
日期:2013-12-05 16:04:37
16 [报告]
发表于 2013-12-05 11:06 |只看该作者
icymirror 发表于 2013-12-02 16:46
回复 13# mcumsigscr



你好!我想用subprocess 调用shell,获取一个整数,应该怎么写呢?

比如:文本test内容是:8
我想cat得到8这个值,该怎么用subprocess实现呢?谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP