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. angularJs的一次性数据绑定:双冒号::

    angularJs 中双冒号 ::来实现一次性数据绑定. 原文: https://blog.csdn.net/qianxing111/article/details/79971544 -------- ...

  2. XXX全球 IP 地址库

    XXX全球 IP 地址库 Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123 ...

  3. 【python】如何去掉使用BeautifulSoup读取html出现的警告UserWarning: You provided Unicode markup but also provided a value for from_encoding

    如果我们这样读取html页面 soup= BeautifulSoup(rsp.text,'html.parser',from_encoding='utf-8')  # 粗体部分多余了 就会出现下面的警 ...

  4. 利用js_API 执行对html文档元素的属性的CRUD操作

    转自:http://my.oschina.net/felay/blog/303470 <!DOCTYPE html> <html> <head> <meta ...

  5. cybergarage-upnp

    官网: http://www.cybergarage.org/twiki/bin/view/Main/UPnPFramework Open Source Frameworks for UPnP Cyb ...

  6. Node FS 读取文件中文乱码解决

    1:首先保证源文件编码方式为UTF-8 2:读取代码,设置编码方式rs.setEncoding('utf8') var fs = require('fs'); var rs = fs.createRe ...

  7. ORACLE NVL 和 NVL2 函数的使用

    NVL函数是一个空值转换函数,在SQL查询中主要用来处理null值.在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值. Oracle在 ...

  8. matlab histeq函数介绍

    Histeq Enhance contrast using histogram equalization 该函数通过直方图均衡化来添加对照度 Syntax J = histeq(I,hgram) De ...

  9. SqlServer数据库分离与附加

    SQL Server提供了“分离/附加”数据库.“备份/还原”数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的“分离/附加”方法,类似于大家熟悉的“文件拷贝”方法,即把数据库文 ...

  10. MySQL的各种SHOW

    . SHOW语法 13.5.4.1. SHOW CHARACTER SET语法 13.5.4.2. SHOW COLLATION语法 13.5.4.3. SHOW COLUMNS语法 13.5.4.4 ...