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. Android实现圆形的图片边角

    ImageView没有边角圆化的设置,但是可以通过代码设置实现.一个国外的码农写的方法. 效果: 地址:http://www.curious-creature.org/2012 代码: package ...

  2. Inner Classes with TypeScript

    原文:https://blog.oio.de/2014/03/21/inner-classes-typescript/ b.ts class Foo { sex:string; say(){ new ...

  3. libFM 简介

    原文:https://eachcloudcn.blob.core.chinacloudapi.cn/clips/XOI1W.htm libFM全称为Factorization Machine Libr ...

  4. 微信小程序:字体保持大小

    小程序和网页差不多,前台用wxml把内容摆好,然后用css调整样式.所以和web一样,必须要能够精确控制每一个元素的大小.在Web中,通过CSS基本达到了像素级的控制.但在小程序中,情况有所不同.下面 ...

  5. List 去重对象

    @Overridepublic RpcResponse<List<HobbiesVo>> queryHobbies(Long userId) { try{ List<Ho ...

  6. Discuz常见小问题-无法登陆UCenter怎么办

    打开uc_server/model/admin.php找到第22行的$this->cookie_status = 0;改成$this->cookie_status = isset($_CO ...

  7. shell 编程笔记

    #! /bin/sh 寻找shell解释器 /bin/sh  是一个路径 #! /usr/bin/python 仅仅是寻找一个python的解释器 执行linux程序的方法: 使得文件具有可执行的权限 ...

  8. 【CSWS2014 Main Conference】Some Posters

    随机选了几张POSTER,之前没做过POSTER的同学可以看一下文字.图片.布局以及每个版块的小标题,以后如果需要做poster就容易多了. 据说这种Poster一张需要60RMB左右. 其中第5幅是 ...

  9. poj 1286 Necklace of Beads &amp; poj 2409 Let it Bead(初涉polya定理)

    http://poj.org/problem?id=1286 题意:有红.绿.蓝三种颜色的n个珠子.要把它们构成一个项链,问有多少种不同的方法.旋转和翻转后同样的属于同一种方法. polya计数. 搜 ...

  10. html-webpack-plugin插件 根据模板生成多页面

    1.项目目录结构为: 2.webpack.config.js配置文件为: var htmlWebpackPlugin = require('html-webpack-plugin'); module. ...