博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
企业Linux运维SHELL编写规范
阅读量:6258 次
发布时间:2019-06-22

本文共 2669 字,大约阅读时间需要 8 分钟。

hot3.png

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/dbPATH=$ORACLE_HOME/bin:$JAVA_HOME/bin:$PATHLD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATHNLS_LANG=AMERICAN_AMERICA.ZHS16GBKNLS_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_FORMATdbuser_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<
>$LOG_FILE 2>&1

2.4 总结

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

3. 定时备份

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

4. 待续……

转载于:https://my.oschina.net/fengyunfu/blog/839244

你可能感兴趣的文章
浮沉乱世,一些话对自己说
查看>>
桌面应用框架 OneRing
查看>>
解决Boost.Regex对中文支持不好的问题
查看>>
Error : Weblogic Maven Plugin deployment WebLogic 12c
查看>>
W3C小组宣布:HTML5标准制定完成
查看>>
dispatch_group_async 使用详解
查看>>
3d引擎列表
查看>>
[Ant] Ant之MacroDef—“宏
查看>>
WEB架构师成长之路-架构师都要懂哪些知识 转
查看>>
C#中使用TCP通信
查看>>
Swift入门篇-swift简介
查看>>
05 继承
查看>>
弧度和角度的转换
查看>>
[leetcode]Unique Paths II @ Python
查看>>
nginx源码分析之hash的实现
查看>>
数据结构快速回顾——二叉树 解幂子集问题
查看>>
选择排序
查看>>
使用微软 URL Rewrite Module 开启IIS伪静态
查看>>
浅谈UML中类之间的五种关系及其在代码中的表现形式
查看>>
原创:CentOS6.4配置solr 4.7.2+IK分词器
查看>>