python版本是2.7.12

一、简单的获取linux命令的执行结果,比如:获取一个PID的进程树结构,linux命令是pstree -p pid,在python中有一个模块可以方便的获取。至于有时候获取的结果是乱码的情况,请参考之前的随笔:ubuntu常用的一些命令

  命令是 commands.getoutput(cmd),

cmd = "pstree -p %s"%pid
result = commands.getoutput(cmd)

 

二、开启一个新的进程来执行脚本文件,就需要使用python中另一个模块了,subprocess,官网地址

  接下来进行简单的函数说明

  1 subprocess.call(args*stdin=Nonestdout=Nonestderr=Noneshell=False)调用进程会等待子进程执行args结束,然后将returncode返回。

  2 subprocess.check_output(args*stdin=Nonestderr=Noneshell=Falseuniversal_newlines=False) 调用进程会等待子进程执行args结束,然后将他的输出以byte string形式返回。注意:如果return code是非零值,将产生一个CalledProcessError异常,

  

  如果想以子进程的形式调用命令,则需要使用Popen类。  

  subprocess.Popen(argsbufsize=0executable=Nonestdin=Nonestdout=Nonestderr=Nonepreexec_fn=Noneclose_fds=False,shell=Falsecwd=Noneenv=Noneuniversal_newlines=Falsestartupinfo=Nonecreationflags=0)

  默认情况下,他会开一个子进程,并且是非阻塞。args可以是参数列表[]或者是一个字符串""。shell参数表示是否打开shell执行程序,如果shell参数是True,官方推荐args写成字符串形式。

  举个简单例子:

    p1=subprocess.Popen("ls",shell=True)

>>> p=subprocess.Popen("ls")
>>> myfile.txt

  

    test.py文件

import time

def fun1():
for i in range():
time.sleep() if __name__ == "__main__":
fun1()

>>> import subprocess
>>> p2=subprocess.Popen("python test.py",shell=True)

查看进程情况

>>>ps -ef|grep test.py
penchenz 28020 28015 0 15:24 pts/4 00:00:00 python test.py
penchenz 28082 28043 0 15:24 pts/12 00:00:00 grep test.py

执行结果

>>>top -p 28020

top - :: up  days, :,  users,  load average: 0.10, 0.09, 0.06
Tasks: total, running, sleeping, stopped, zombie
Cpu(s): 1.2%us, 0.6%sy, 0.0%ni, 98.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32883356k total, 32028992k used, 854364k free, 940836k buffers
Swap: 16515068k total, 214156k used, 16300912k free, 10079088k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
penchenz 113m S 0.0 0.0 :00.05 python

其他更详细的用法请参考subprocess官网地址

  

使用python执行linux命令的更多相关文章

  1. python执行linux命令的两种方法

    python执行linux命令有两种方法: 在此以Linux常用的ls命令为例: 方法一:使用os模块 1 2 3 shell# python >> import os >> ...

  2. 再见Xshell、Xftp!Python执行Linux命令、上传下载远程文件

    相信大家应该都接触过Linux操作系统(Ubuntu.Centos等),那么在使用的Linux操作系统需要使用一些远程ssh工具,尤其是公网服务器. 常用的ssh工具主要有:Xshell.MobaXt ...

  3. 用python执行Linux命令

    例1:在python中包装ls命令 #!/usr/bin/env python #python wapper for the ls command import subprocess subproce ...

  4. Python 执行linux 命令

    # !/usr/bin/env python # -*- coding: utf-8 -* import os def main(): file_list = os.popen("ls&qu ...

  5. [Python]执行Linux命令

    使用subprocess模块 import subprocess # 防火墙服务存在关闭状态 child1 = subprocess.Popen(["systemctl status fir ...

  6. 解决python执行linux查看文件命令后,因为^@特殊符号导致部分内容不显示的问题

    问题现象 文件a的内容如下: 查看第3行到第5行的内容:sed -n '3,5p' /tmp/test/a 可见在命令行执行,是没有问题的. 在python中使用paramiko模块执行linux命令 ...

  7. Python实现Linux命令xxd -i功能

    目录 Python实现Linux命令xxd -i功能 声明 一. Linux xxd -i功能 二. xxd -i常见用途 三. 类xxd -i功能的Python实现 Python实现Linux命令x ...

  8. Python执行Linux系统命令方法

    Python执行Linux系统命令的4种方法 (1) os.system 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 复制代码代码如下: system(command) -> ...

  9. 使用Android平板编程,执行linux命令

    android有一些应用支持开发, AIDE 介绍http://www.wandoujia.com/apps/com.aide.ui https://play.google.com/store/app ...

随机推荐

  1. ASP.NET WebServices 因 URL 意外地以“/HelloWorld”结束,请求格式无法识别。

    今天在使用Asp.net做一个WebServices时通过Get方式调用方法时却出现了以下错误(仅在Get请求下,POST下正常)   在网络和MSDN上了解到WebServices默认只启用 Htt ...

  2. OpenSSL 中 RSA 加密解密实现源代码分析

    1.RSA 公钥和私钥的组成.以及加密和解密的公式: 2.模指数运算: 先做指数运算,再做模运算.如 5^3 mod 7 = 125 mod 7 = 6 3.RSA加密算法流程: 选择一对不同的.而且 ...

  3. (算法)判断字符串中是否包含HelloWorld

    题目: 给定某字符串,判断该字符串中是否包含HelloWorld,出现HelloWorld不一定要连续,但顺序不变,如“HeByello,ByeWorByeld”就包含“HelloWorld”. 思路 ...

  4. eclipse开发php的插件

    php development tools,简称pdt,在Eclipse marketplace里面可以下载到.

  5. 自定义UITableViewCell 的delete按钮

    自定义UITableViewCell上的delete按钮 滑动列表行(UITableViewCell)出现删除按钮时,默认是英文“delete”,这份代码片段能够将“delete”变成中文”删除“,甚 ...

  6. How to set up OpenERP for various timezone kindly follow the following steps to select timezone in OpenERP

        How to set up OpenERP for different Time Zones Click on the "Edit Preferences" wheel a ...

  7. windows2003密码忘记了该如何处理

    如果你有sql   server的管理员帐号,并且可以登录,尝试用下面的方法:         --用管理员连接sql,在查询分析器中执行:         --添加用户     exec   mas ...

  8. from会存在潜在的陷阱

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #from会存在潜在的陷阱 #from时,可能会遇到相同变量名,变量会被悄悄覆盖掉, #但是import语句不 ...

  9. permission denied make_sock could not bind to address 81问题解决

    在apache中绑定非http标准端口时,一直出现如下的错误提示: [root@localhost ~]# /etc/init.d/httpd start Starting httpd: (13)Pe ...

  10. linux 2>&1的用法

    linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2.STDIN就是标准输入,默认从键盘读取信息:STDOUT是标准输出,默认将输出结果输出至终端,也就 ...