文档章节

企业Linux运维SHELL编写规范

清风_
 清风_
发布于 2017/02/15 15:34
字数 1002
阅读 293
收藏 23

1. 路径规定

为了方便维护人员维护,需要规定两个正式脚本的发布路径和维护人员的测试路径,不要将脚本放到规定路径以外,例如:

1.1 维护人员的测试路径:

/opt/tmn/user

该路径用于维护人员编写脚本是的测试路径,不要将正式使用的定时任务脚本放到该路径
在该路径下创建每个维护人员各自姓名拼音的文件夹:

/opt/tmn/user/zhang3
/opt/tmn/user/li4

1.2 正式脚本的发布路径:

/opt/tmn/wlzy

只用于放置正式发布的脚本路径,不要放置个人的测试脚本

1.3 定时任务明细存放路径:

/opt/tmn/crontab

每次修改定时任务之前将现有的定时任务备份至该目录

crontab -l > /opt/tmn/crontab/crontab.`date "+%Y%m%d%H%M"`

2. 编写一个脚本

每套脚本之间路径不要有交叉,将所有用到的脚本全部放在定义目录下
代码尽量简洁,不要啰嗦,注释得当
例如:编写一个给外系统传输网管传送接口数据的脚本

2.1 脚本名称定义

有意义,英文名,一目能看出大体功能,一般采用专业+功能定义
通常一个功能一个路径,不要将不同功能的脚本放到一个路径
本例是传输专业,给外系统提供接口数据,直真公司缩写zznode,故名字定义为trans_to_zznode,创建路径

/opt/tmn/wlzy/trans_to_zznode

2.2 脚本目录规范

/opt/tmn/wlzy/trans_to_zznode/bin    #执行程序路径
/opt/tmn/wlzy/trans_to_zznode/sql    #SQL文件路径
/opt/tmn/wlzy/trans_to_zznode/log    #日志文件路径
/opt/tmn/wlzy/trans_to_zznode/doc    #需求文档路径(该路径可以放置当时确定的需求文档、邮件等,以便后期查看)
/opt/tmn/wlzy/trans_to_zznode/data   #数据文件路径
/opt/tmn/wlzy/trans_to_zznode/cfg    #配置文件路径(注意,为了脚本的易读性,尽量减少配置文件的使用,不建议将数据库用户信息等放到配置文件中读取)

2.3 执行文件编写

每套脚本中用到的shell脚本尽量不要太多,通常每个shell脚本内容100行左右,主脚本名称要以main打头
文件中不要使用tab制表符,要采用4个空格代替
例如:vi main_trans_to_zznode.sh

#!/bin/bash
####################################################################################
##                         给传输网管传送接口数据
##
## 编写:张三
## 日期:2016/10/26 10:02:26 某市
## 功能:给传输网管传送接口数据,网管中心张工提出需求,
##      需要给直真传送xxx、xxx等资源,定时任务,每天x点执行
##
####################################################################################

#设置路径及环境变量
HOME_DIR=/opt/tmn/wlzy/trans_to_zznode                      #工作路径
BIN_DIR=${HOME_DIR}/bin                                     #执行程序路径
SQL_DIR=${HOME_DIR}/sql                                     #SQL文件路径
DATA_DIR=${HOME_DIR}/data                                   #文件路径
LOG_DIR=${HOME_DIR}/log                                     #日志路径
LOG_FILE=${LOG_DIR}/trans_to_zznode.log.`date "+%Y%m%d"`    #日志文件名称

#系统环境变量
. /etc/profile

#Oracle环境变量
ORACLE_HOME=/opt/oracle/product/11.2.0/db
PATH=$ORACLE_HOME/bin:$JAVA_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
export ORACLE_HOME NLS_LANG PATH NLS_DATE_FORMAT NLS_TIMESTAMP_FORMAT
dbuser_id="user1"
dbpass_word="123456"
dbserver_id="db1"

#FTP服务器相关信息
FTPADDR="192.168.14.1"
FTPPORT="21"
FTPUSER="ftpuser"
FTPPWD="123456"

echo "BEGINNING OF $0 ("`date`")" >>$LOG_FILE 2>&1

#1.生成接口数据
sqlplus -s ${dbuser_id}/${dbpass_word}@${dbserver_id}<${SQL_DIR}/toRoadNetwork.sql >>${LOG_FILE} 2>&1

#2.将文件FTP到本地服务器并关闭每次要求确认的模式
ftp -n<<!
open ${FTPADDR} ${FTPPORT}
user ${FTPUSER} ${FTPPWD}
binary
cd /
prompt
lcd ${DATA_DIR}
mput jizhongyouhuawf_*${current_date}.csv
close
bye
!

##删除日志
#find ${LOG_DIR} -name "*.log.*" -mtime +4 -exec rm {} \;
##删除数据文件
#find ${DATA_DIR} -name "*.csv" -mtime +4 -exec rm {} \;

echo "ENDING OF $0 ("`date`")" >>$LOG_FILE 2>&1

2.4 总结

该脚本一共分四块:1.功能说明、2.定义环境变量、3.执行功能(执行SQL、传输数据)、4.日志和文件清理

3. 定时备份

编写好的脚本,要加入定时备份,通常备份的文件存储到另外一台服务器上

4. 待续……

© 著作权归作者所有

共有 人打赏支持
清风_

清风_

粉丝 32
博文 38
码字总数 23287
作品 1
沈阳
程序员
私信 提问
Linux运维每日都在做什么工作?Linux运维学习

  Linux系统在互联网公司应用越来越多,也有不少的朋友愿意加入运维的行列中,那么,运维每天都做什么工作呢?   运维人员做事需遵循“简单、易用、高效”的原则。对于运维服务有3大宗旨:...

老男孩Linux培训
2018/06/04
0
0
云计算学习大纲是什么?怎么学习云计算?

《2018×××Linux云计算架构师+Python运维开发课程》十大阶段的课程为由浅入深、循序渐进的完整课程体系,包括结合Linux的网络基础实战、Linux系统配置及服务深度解析、Shell脚本自动化运维...

长沙千锋
2018/04/28
0
0
上海区域某电子商务招聘前端/PHPer/测试/MySQL DBA/linux运维

上海区域某电子商务招聘(已列出工资范围,具体薪资根据个人能力而定) 前端职员 1名 (薪资:4K-7K) 职位描述: 1.参与产品线的前端开发,能够把PS平面设计分解为符合标准、并合理兼顾开发效率和...

Martin_Ye
2011/03/23
360
0
linux学习路线和运维成长之路

最近看到了一篇新闻,linux之父建议找一份基于linux和开源环境的工作,确实,这已经是未来的大趋势了。今天就来聊一聊我的想法,本人8年linux运维一线经验,呆过很多互联网公司,从一线运维做...

神的信仰
2016/05/17
1
0
北京电子商务公司 招聘JAVA开发工程师、运维工程师

公司名称:九樱天下(北京)信息技术有限公司 公司介绍:电子商务公司,具体请访问公司网址:http://www.bizviva.com/ 联系方式:rainriver1973@126.com 招聘职位:JAVA开发工程师 工作职责: ...

temp1573
2010/07/22
460
4

没有更多内容

加载失败,请刷新页面

加载更多

Java并发编程基础(三)

线程间通信 线程间通信称为进程内通信,多个线程实现互斥访问共享资源时会互相发送信号货这等待信号,比如线程等待数据到来的通知,线程收到变量改变的信号。 线程阻塞(同步)和非阻塞(异步)...

chendom
9分钟前
1
0
阿里重磅开源首款自研科学计算引擎Mars,揭秘超大规模科学计算

日前,阿里巴巴正式对外发布了分布式科学计算引擎 Mars 的开源代码地址,开发者们可以在pypi上自主下载安装,或在Github上获取源代码并参与开发。 此前,早在2018年9月的杭州云栖大会上,阿里...

阿里云官方博客
19分钟前
1
0
我是怎样和Linux系统结缘并通过红帽RHCE认证的

我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#、C++之类的...

问题终结者
29分钟前
1
0
SSH之端口转发

第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能带...

无语年华
34分钟前
1
0
我是怎样和Linux系统结缘并通过红帽RHCE认证的

我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#、C++之类的...

linuxprobe16
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部