python批量提交s3-被搁置
来吧,先来热热身,python跑linux命令玩玩,马上就开始搞hadoop命令了,前路漫漫
前路漫漫,但是也不要急,我们继续编写脚本,使其可以自动组装hadoop的目录结构,然后上传,这个我们具体使用多线程+消息队列的方式,还是单线程,跑测试,具体的,我们等一会儿稍晚些时候商量一下,还是说,我先测试一下。
这个题目往上面一搜一大把,因为我目前没有oa环境,无法登陆堡垒机,没法进入linux集群,哎,好烦躁,测试比较麻烦,别着急。一步一步来吧。
首先来看一下理论。
python 调用shell命令的方法
在python程序中调用shell命令,是件很酷且常用的事情……
1. os.system(command)
此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出状态,如果command有执行内容,会在标准输出显示。这实际上是使用C标准库函数system()实现的。
缺点:这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。
实例:os.system('ls -l *')
2. os.popen(command,mode)
打开一个与command进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默认是’r')。如果mode为’r',可以使用此函数的返回值调用read()来获取command命令的执行结果。
os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。
实例:tmp = os.popen('ls -l *').readlines()
3. commands.getstatusoutput(command)
使用os.popen()函数执行command命令并返回一个元组(status,output),分别表示command命令执行的返回状态和执行结果。对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。
4. subprocess模块
此模块在python2.4中初次亮相,其中集中了关于进程的诸多操作,其中的call()完全替代了system(),而popen()被更为丰富的Popen类替代;
总结:python提供了十分完善的调用shell命令的功能,在实战中,我碰到的问题,有system和popen基本可全部搞定;
哦,楼上茫茫多一大片,先从第一步吧。来写一个shell。import subprocess

好了,这个就是测试的,然后我们上传到服务器上。
移除公司自己整的调度平台,里面居然还可以查hive等等,功能很强大,很多,大公司就是有钱啊!
移除外网可用。

也可以跑类似于hue的东西,

类似的。

好了,现在我们进入调度平台。

依次这么点,可以调度,因为目前没有堡垒机,只能用调度,来测试了,看能不能使用python shell
但是发现报错:

哦,原来是要把python脚本亚索然后上传啊,额,这个有点恶心了,测试个python脚本这么恶心啊。受不了