【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 以外的代码退出。
目录
相关文章
|
14天前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
77 32
|
24天前
|
存储 Linux 网络安全
linux应急响应检查脚本
通过这个脚本,可以快速收集系统的关键信息,有助于在发生问题时进行及时的应急响应和分析。
81 34
|
9天前
|
安全 Unix Linux
Unix:Linux的“祖师爷”
Unix的诞生 Unix操作系统诞生于1969年,由肯·汤普逊(Kenneth Lane Thompson)和丹尼斯·里奇(Dennis MacAlistair Ritchie)在AT&T的贝尔实验室开发。其初衷是为了在闲置的PDP-7计算机上开发一个简单的操作系统,以便进行编程和游戏。最初的Unix是用汇编语言编写的,但随后为了更高效的开发和更好的可移植性,里奇和汤普逊用C语言重写了Unix的大部分代码,这奠定了Unix的基础,并促进了C语言的广泛应用。
16 2
|
4月前
|
安全 Ubuntu Linux
Linux系统中的软件管理工具主
Linux系统中的软件管理工具主
75 7
|
5月前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
277 6
|
2月前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
2月前
|
Unix Linux 编译器
UNIX/Linux 上的安装
UNIX/Linux 上的安装。
65 2
|
4月前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
372 4
Linux系统之Ubuntu安装cockpit管理工具
|
3月前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
76 6
|
3月前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。