subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
执行args的command,返回执行结果,即返回码,即使返回码不为0,也正常返回结果,不会抛异常
>>> a=subprocess.call("ls -l",shell=True)
total 36
-rw-r--r-- 1 root root 194 Aug 1 10:34 bind.ini
-rw-r--r-- 1 root root 704 Aug 1 15:13 db.ini
-rw-r--r-- 1 root root 169 Aug 1 11:43 dnsfast.ini
-rw-r--r-- 1 root root 404 Aug 1 11:08 dnssec.ini
-rw-r--r-- 1 root root 1506 Aug 2 10:27 global.ini
-rw-r--r-- 1 root root 1538 Aug 1 15:23 ini.tar.gz
-rw-r--r-- 1 root root 96 Aug 2 10:06 mail.ini
-rw-r--r-- 1 root root 45 Jul 25 17:00 sos2.ini
drwxr-xr-x 2 root root 4096 Aug 1 15:25 zone_conf
>>> a
0
>>> b=subprocess.call("exit 1",shell=True)
>>> b
1
subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
执行args的command,待执行完结后,如果返回码为0,结束。如果返回码不为0,抛出异常
>>> a=subprocess.check_call("ls -l",shell=True)
total 36
-rw-r--r-- 1 root root 194 Aug 1 10:34 bind.ini
-rw-r--r-- 1 root root 704 Aug 1 15:13 db.ini
-rw-r--r-- 1 root root 169 Aug 1 11:43 dnsfast.ini
-rw-r--r-- 1 root root 404 Aug 1 11:08 dnssec.ini
-rw-r--r-- 1 root root 1506 Aug 2 10:27 global.ini
-rw-r--r-- 1 root root 1538 Aug 1 15:23 ini.tar.gz
-rw-r--r-- 1 root root 96 Aug 2 10:06 mail.ini
-rw-r--r-- 1 root root 45 Jul 25 17:00 sos2.ini
drwxr-xr-x 2 root root 4096 Aug 1 15:25 zone_conf
>>> a
0
>>> b=subprocess.check_call("exit 1",shell=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/subprocess.py", line 511, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
>>> b
1
subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)
执行command命令,并返回字符串,返回码不为0,抛出异常
>>> subprocess.check_output("echo abc",shell=True)
'abc\n'
>>> subprocess.check_output("exit 1",shell=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
获取进程ID
pid= subprocess.check_output('pidof -o %PPID -x named', shell=True)
pid=pid.strip()
杀死进程
stop_cmd = 'kill -KILL %s' % pid
subprocess.check_call(stop_cmd, shell=True)
def _getpid(self):
pid = None
try:
output = subprocess.check_output('pidof -o %PPID -x named', shell=True)
pid = output.strip()
except Exception, e:
pass
return pid