专栏首页清风企业Linux运维SHELL编写规范 原

企业Linux运维SHELL编写规范 原

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. 待续……

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux 服务器 内存和CPU 原生命令监控,并将结果发送到服务端

    用户2836074
  • Apache hadoop集群部署 原

    hostname 主机名(实时生效、重启失效) /etc/sysconfig/network(永久生效、需要重启)

    用户2836074
  • Windows Linux Mac 路由添加删除

    用户2836074
  • 【投稿专区】crc校验码的计算

    在Modbus或环保212协议中,数据的校检码(CRC-16)由两个字节16位构成。而一般电气、自动化仪表的crc16校验,多项式码选用16进制A001。 CR...

    李海彬
  • 带你少走弯路:强烈推荐的Keras快速入门资料和翻译(可下载)

    上次写了TensorFlow和PyTorch的快速入门资料,受到很多好评,读者强烈建议我再出一个keras的快速入门路线,经过翻译和搜索网上资源,我推荐4份入门...

    kbsc13
  • 给移动边缘计算(MEC)"泼水"降温

    作者:Jimmy chow,人在香港。在通信行业二十余年, 除了销售以外的工作, 几乎全都做过, 包括教育,研发,营销,管理,咨询等, 设备商运营商学校都呆过,...

    边缘计算
  • 开发者如何在三年内快速成长为公司核心技术人员

    一个好的程序员不仅要会写出好的代码还要善于利用工具来提高自己的效率,而除了我们常用的IDE工具以外,其实还有很多好用的在线工具,今天小编就推荐几个好用的开发在线...

    Java编程指南
  • 聪明的头脑+有趣的灵魂,揭秘腾讯云最暖智能酒店解决方案

    近日,腾讯云携手亚朵,在北京东直门亚朵S酒店打造了三间科技力爆棚的智能体验房,并已于8月6日正式投入运营。亚朵借助腾讯云智能酒店解决方案及云计算、人工智能、大数...

    腾讯云互联网TechDay
  • HTML学习笔记一

    如上就是最简单的HTML文档内容,< html> 标签之间描述的代码内容就是描述网页(文档内容),< body>标签之间的文本代表可见的网页文档内容,< h1>...

    Mirror王宇阳
  • Lua编写wireshark插件初探——解析Websocket上的MQTT协议

    一、背景 最近在做物联网流量分析时发现, App在使用MQTT协议时往往通过SSL+WebSocket+MQTT这种方式与服务器通信,在使用SSL中间人截获数据...

    ascii0x03

扫码关注云+社区

领取腾讯云代金券