【Unix/Linux 系统管理】脚本编写最佳实践

简介: 【Unix/Linux 系统管理】脚本编写最佳实践

正文


现实中的脚本应该不会这么简陋,下面是一些基本的准则。


  • 如果运行时使用的参数有问题,脚本应该打印出用法信息并退出。作为补充,还可以实现 --help选项功能。


  • 验证输入,对派生值(derived value)进行合理性检查。例如,在生成的路径上执行 rm -rf 之前,脚本应该再次检查该路径是否符合期望。


  • 返回有意义的退出码:0 代表成功,非 0 代表失败。没必要为每一种失败形式都分配一个唯一的退出码,考虑调用方真正想知道什么。


  • 为变量、脚本和函数选择合适的命名规范。这些要符合的规范包括语言本身、站点的基础代码、当前项目中定义的其他函数,其中最后一处尤为重要。可以使用混合大小写或下划线提高长名字的可读性。


  • 给变量命名时,不仅要能够反映其所存储的值,还要保持简洁。number_of_lines_of_input 这个名字就太长了,可以试试 n_lines。


  • 考虑编写一套编码风格指南,以便你和你的同事能够按照同样的规范编写代码。指南可以让大家更容易阅读彼此的代码。


  • 每个脚本开头都加上一段注释,说明该脚本的用途以及所接受的参数。别忘了加上你的名字和编写日期。如果脚本要求系统中安装非标准工具、库或模块,也要在此注明。


  • 应该保证当一两个月后再阅读脚本时,当时写下的注释有助于你理解代码意图。下面是一些有用的注释书写建议:所选择的算法、用到的 Web 参考页面、为什么不使用其他更为显而易见的处理方法、不常见的代码流程、开发过程中出现的问题。
  • 不要堆砌带有无用注释的代码,要假定代码阅读人员的理解能力不差并且熟悉该语言。


  • 以 root 身份运行脚本没有问题,但是不要为脚本设置 setuid,完全确保 setuid 脚本的安全性不是件容易事。应该使用 sudo 实现相应的访问控制策略


  • 自己不明白的地方就不要写代码。管理员经常会浏览脚本,将其视为如何处理特定过程的全文文档。不要去散布那些不成熟的脚本,搞出些误导他人的例子。


  • 可以随意改造自己的脚本中的代码以满足自己的需要。但如果你不理解代码的含义,可别陷入到这种“复制,粘贴,然后祈祷”的编程方式中。花点时间把代码缕清,这些时间绝不会白费。


  • 通过 bash 选项,使用 -x 选项以在执行命令之前回显命令,使用 -n 选项可以在不执行命令的情况下检查命令的语法。


5 条生成有用错误信息的黄金法则

  1. 错误信息应该进入 STDERR,而不是 STDOUT。
  2. 包括发生该程序的程序名。
  3. 说明哪个函数或操作未成功。
  4. 如果系统调用失败,要包括函数 perror() 的输出。


  • 使用 0 以外的代码退出。
目录
相关文章
|
12天前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
19天前
|
Unix Linux 编译器
UNIX/Linux 上的安装
UNIX/Linux 上的安装。
37 2
|
2月前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
2月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
3月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
88 1
|
3月前
|
Unix 物联网 大数据
操作系统的演化与比较:从Unix到Linux
本文将探讨操作系统的历史发展,重点关注Unix和Linux两个主要的操作系统分支。通过分析它们的起源、设计哲学、技术特点以及在现代计算中的影响,我们可以更好地理解操作系统在计算机科学中的核心地位及其未来发展趋势。
|
4月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
815 2
|
3月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
41 0
|
8月前
|
Unix Shell Linux
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
75 2
|
5月前
|
Unix Linux 程序员
Unix:Linux的“逗趣祖师爷”与它的不凡传承
在科技长河中,Unix犹如一颗恒星,既是历史见证者也是未来的启发者。1969年,因程序员肯·汤普森想在他的PDP-7上玩“Space Travel”游戏,意外创造了Unix,以简洁优雅的代码改变了操作系统的世界。进入90年代,林纳斯·托瓦兹受Unix启发,开发了开源免费的Linux,像是Unix调皮的孙子,不仅继承其精髓还增添了开放共享的精神。Unix与Linux之间的传承,就像是智者与追蝶孩童的故事,充满了岁月的智慧与新生的活力,提醒我们科技传奇往往源于不起眼的小事。下次使用Linux时,不妨会心一笑吧!
62 0