nohup后台运行Python调度脚本(最终发布)

时间:2024-04-11 17:49:02

遇到的一些坑要说一下


 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​遇到的坑来说一下。首先解决了问题,加上手头上新的工作接到手要做,再加上,新的老大来了,开了一上午的会。

首先介绍nohup的作用,

例子:nohup abc.sh > nohup.log 2>&1 & 

脚本位置,然后重定向的日志文件,如果不声明就会去所有的日志文件里追加日志。然后2>&1也要注意,最后请一定注意:最后还有一个&!因为我被卡了很久,很久,我说怎么不执行呢。

卡了很久终于可以发布了。来吧,接着nohup测试一下把。

首先删除测试数据库:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​上午开会才说了,都签了协议了,有些数据一定要注意,不要告诉别人,你们有权限看到,一定不要告诉别人。那么,所以为什么总是会加马赛克,没办法。

继续吧,我们去改写kettle,上面那个to_bi是测试库,下面这个是生产的库,所以我们先点击高亮,让上面的库执行吧。

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​一定要谨慎。然后看下时间是:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​所以要去改脚本了:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​让他4点04执行,赶紧把脚本放到服务器上:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​然后,我们shell走起来:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

会这样:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​表示成功,已经nohup后台运行了,可以ps -ef | grep python

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​可以看到后台已经运行了,很完美。接下来要做的就是等4点04分,我们的测试数据过来,并且,邮件也会发送。如果成功了,就可以彻底上生产库了,然后这个事情告一段落了,以后etl的工作,也算是上手了,等待吧。。。

now loading......

很尴尬,现在已经4点半了,但是数据没来邮件也没来,哎,好尴尬。

在此之前,后台要删掉进程:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​好了之后,把python脚本时间改一下,然后重新ssh放到服务器上,继续nohup然后等,这次我们设置了,16点39分,现在是35,继续等吧。

可能是刚才没有保存什么的,再跑不了,那可能就是python脚本写的有问题了,感觉这次凶多吉少。

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​一堆空,好难受啊,哎。把那个后台删掉,我们去python直接运行一下,看是不是nohup有问题。因为昨天我们明明用python运行了呀,明明没有问题的。

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​程序进入了阻塞等待了,说明运行没问题,稍等会儿吧,16点49开始跑的,一分钟。

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​和昨天报的一样的错,ok,这个简单的。好像是权限问题,我们切换一下,su 用户。这个,然后就可以了。改一下时间然后继续上传文件执行python等待几分钟。哦对了,我好像ll一下,就知道原因了,因为,我每次改了时间,上传之后,没有切换用户是第一,没有改文件权限是第二,没有执行权限吧。是不是?

所以这一次哪怕改了用户,我估计也会报错么有执行权限,以后每次都要记得改用户和权限,这次先等等看吧。哎,成功了,看来用这个用户就可以了,不用什么该执行权限,好像这个用户就是最高权限了。

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​果然,数据来了,那我们接下来,改了用户,去nohup一下试一下。先把库里面数据删了。然后我执行chmod +x /opt/SDK/脚本名.py 结果,提醒我,

chmod: changing permissions of `/opt/SDK/DroiActive.py': Operation not permitted

把我气得呀,想着怎么改权限来着,结果发现了这个软件的这个妙用,哈哈哈:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​直接右击,会出现,一气之下,我把他们全部:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

然后去服务器上果然就可以执行了,好开心啊。然后我把后台进程删了,要改脚本时间,马上重新测试nohup了。

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​思路很清晰呀我的哥,然后就是等。等数据,等邮件。

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​哇!好开心,到这一步,nohup成功了,我们基本完成了90%的工作了,爽的一匹,这意味着,从今以后,我们所有的任务都可以通过python脚本,kettle任务调度,解放人类,解放人力,解放我的同事们,这是贡献。接下来,我们直接调整测试库为生产库,从今以后,拜托频繁操作hive导入业务库。

第一步,别忘了删除nohup测试进程哦,不截图了,首先 ps -ef|grep python

找到那个脚本,然后 kill -9 XXXXX

然后,去把本机测试库删了,要不然下次调试会以为是有数据呢。

扫尾工作结束。

第二步,去服务器的kettl库,直接改为生产库:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​然后,记得保存,很完美。

第三步,改写脚本,每天下午2点跑吧。然后ssh放到服务器上面。

第四步,nohup python Dxxxxxxxve.py >drxxxxxxxe.log 2>&1 &

第五步,检查进程:

 nohup后台运行Python调度脚本(最终发布)移除点击此处添加图片说明文字

​ok。后期,可能要写一些mapreduce的项目,包括后面要用的spark,然后系统要写推荐、用户画像什么的,后面都要做的。毕竟,公司国内用户5月份1000万,海外用户超过1500万,数据量还是很大的,很有挑战性。