当前位置:  编程语言>python

python下用os.execl执行centos下的系统时间同步命令ntpdate

 
分享到:
    发布时间:2013-8-3  


    本文导语: Python 3下的exec*系列函数包括: os.execl(path, arg0, arg1, ...) os.execle(path, arg0, arg1, ..., env) os.execlp(file, arg0, arg1, ...) os.execlpe(file, arg0, arg1, ..., env) os.execv(path, args) os.execve(path, args, env) os.execvp(file, args) os.execvpe(file, args, env) 这些...

Python 3下的exec*系列函数包括:

os.execl(path, arg0, arg1, ...)
os.execle(path, arg0, arg1, ..., env)
os.execlp(file, arg0, arg1, ...)
os.execlpe(file, arg0, arg1, ..., env)
os.execv(path, args)
os.execve(path, args, env)
os.execvp(file, args)
os.execvpe(file, args, env)

  这些函数将操作系统命令作为一个新的进程加载,并替换掉当前的调用进程。exec*系列函数的第一个参数file是操作系统命令的全路径args程序需要传递的参数,通常arg0为调用命令,从arg1开始才是需要传递的真正参数。

 下面演示如何通过execl调用centos 5.4中ntpdate命令,202.120.2.101为上海交通大学时间服务器,具体实例代码如下:

#!/usr/bin/python3
import os
os.execl("/usr/sbin/ntpdate","ntpdate","202.120.2.101")
print("execute success!")

 另外需要注意一点,在使用exec*命令时,ntpdate进程会替换当前进程,命令只会执行一次,如果使用以下方式来调用,程序依然只会执行一次后退出:

#!/usr/bin/python3
import os
import time
while True:
 os.execl("/usr/sbin/ntpdate","ntpdate","202.120.2.101")
 time.sleep(1)
 print("execute success!")

 如果想通过循环调用来定期更新和同步服务器时间可以使用os.systemos.popen函数,os.system返回执行命令的退出码,os.popen可以返回执行命令的后的显示结果.

通过改进以上程序代码,使用os.popen()的示例代码如下:

#!/usr/bin/python3
import os
import time
while True:
 buf=os.popen("/usr/sbin/ntpdate 202.120.2.101")
 time.sleep(1)
 print(buf.readlines()[0])

使用os.system()的示例代码如下:

#!/usr/bin/python3
import os
import time
while True:
 buf=os.system("/usr/sbin/ntpdate 202.120.2.101")
 time.sleep(1)
 print(buf)

以上代码均在centos 5.4及python 3.3环境下执行通过,代码中的 /usr/bin/python3需要根据你安装的python可执行路径来作相应修改

相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号