一次自动化任务的总结

前段时间一直在做这个定时传输大量PDF文件(上万份)的工作, 具体的工作流程不是很复杂. 首先在根据一些条件从Oracle数据库中query出objectID, 再根据objectID从mongoDB的数据库中取出PDF文件, 然后进行打包压缩, 最后再通过sftp协议把文件发出去. 说来简单, 但实际编写过程中还是有一些难点的,首先要从oracle 数据库中query出mongoDB 的ID, 由于oracle数据库表众多, 关系复杂, 筛选规则也颇为麻烦, 这一步还是花费了不少时间. 其次是公司为了数据的安全, mongoDB数据库只能通过linux 服务器上的内网访问, 这就是有很大一部分编程工作我是无法借助ide工具的, 只能使用vim, 既没有自动补全也没有语法检测, 写起来还是挺麻烦的. 第三是自动化任务的权限问题, 运行这个程序的是一个普通的账号, 而在Linux中, 普通账号要运行自动化程序要修改多个地方的权限, 不知道此时的我还是走了不少弯路. 至于异常情况处理那些,主要与公司业务有关, 就不多讨论了. 闲话不多说了, 开始正文.

安装Oracle客户端

本次项目我采用的是python, python要连接Oracle数据库,首先要在服务器上安装Oracle客户端,安装方法有几种,这里介绍最简单的.大致分为下面两个步骤.

rpm install *.rpm

如果提示缺少依赖包, 那就先用yum安装缺少的依赖包再安装即可
Ubuntu系统的话首先要安装一个包安装工具,直接用rpm会出错, 先安装alien

sudo apt install alien

然后用

alien --version 

查看安装成功与否.如果安装成功, 再用下面的命令安装Oracle客户端就可以了.

sudo apt-get install libaio1 
alien -i *.rpm  

没有报错就是安装成功了. 接下来还要把客户端所在的文件加入环境变量

export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib:$LD_LIBRARY_PATH

注意如果安装的11.2版本的, 对应的位置要换一下. 还有就是上面用命令行加环境变量的方法只在当前terminal生效,如果要永久保存环境变量, 可以修改一下环境变量的配置文件.Ubuntu下的话可以修改 .bashrc 文件来添加.

python连接Oracle

安装完客户端后, 接下来就是通过python连接Oracle并进行.首先安装数据库包, 在这次项目中我使用的是cx_Oracle这个包, API简洁易懂的, 用起来也很顺手.
首先安装cx_Oracle这个包, 直接用pip安装就可以了.我这里用的是python3.

pip3 install cx_Oracle

然后

import cx_Oracle
# 连接数据库
db = cx_Oracle.connect(username, password, IP)
# 执行语句
cursor = db.cursor()
data = cursor.execute(
                    "SELECT BAR_CODE FROM PLATFORM WHERE PARENTNODENO='' OR NODENO=''")
# 关闭连接
db.close()

上面是最基础的使用, 要详细的用法可以参考官方文档.

linux设置自动化任务

自动化任务还是有一些值得一提, 随手一百度你就会发现crontab这个Linux的工具就是用来构建自动化任务的, 并且用法也并不难.

编辑自动化任务

crontab -e

查看自动化任务列表

crontab -l

删除自动化任务, 若不指定则删除当前用户的所有任务

crontab -r
自动化任务的格式也不复杂.如下所示

分 时 日 月 星期 要运行的命令

第1列分钟0~59
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令
举几个例子就好懂了

# 每分钟执行一次
* * * * * myCommand
# 每天晚上10点执行
0 22 * * * myCommand
# 每周六晚上11点重启smb服务
0 23 * * 6 /etc/init.d/smb restart
# 每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart

大致是这样, 自己体会一下很好懂. 接下来说点实用的. 怎么判断这条命令执行了没有呢? 实际上crontab 的自动化任务是会有log文档, 我们在对应的时间点查看这个文档有没有这条记录就行了.
tail /var/log/cron
万一没有生效呢, 我们怎么知道哪里错误, 可以这样, 用重定向命令

45 4 1,10,22 * * /etc/init.d/smb restart &> msg.txt

这样万一发生错误我们就可以查看msg.txt文件来查看是哪里出了问题.

还有就是权限问题, 如果你有管理员权限那就不用考虑, 当你没有使用的账户并没有管理员权限的时候, 需要修改一下cron程序的权限, 不然是不会执行的.

which cron
# 一般是这个目录/usr/sbin/cron
ll /usr/sbin/cron
# 结果大概是这样-rwxr-xr-x 1 root root 44472 4月   6  2016 cron*
# 如果最后一位没有x权限, 那就要改一下
# 还有一个地方的权限要改
which crontab
#/usr/bin/crontab
ll /usr/bin/crontab
#-rwxr-sr-x 1 root crontab 36080 4月   6  2016 /usr/bin/crontab*
# 注意看上面的中间部分, 有一个字母为s, 我们知道文件的权限一般为r, w, x. 这个s是什么鬼, 其实是Set GID,简称为SGID
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 背景: 阅读新闻 12C CDB模式下RMAN备份与恢复 [日期:2016-11-29] 来源:Linux社区 作...
    阳屯okyepd阅读 3,405评论 0 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,656评论 18 139
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,849评论 0 5
  • 背景: 阅读新闻 11G ASM磁盘组不能自动MOUNT处理 [日期:2016-01-12] 来源:Linux社区...
    yanglei3849阅读 3,836评论 0 2
  • 记得初听《那些花儿》的时候是在高中,然后在大学的一个午后,听着这首歌,看暖暖的阳光射进图书馆,映下属于自己长长...
    木棉花625阅读 241评论 3 1