Bash 真实的SHELL脚本使用情况?
我正在学习UNIX/LinuxShell脚本并尝试思考它的适当用法 我想到的唯一一件事是,它对于备份操作和日志管理来说是很好的……但我确信它远远超出了这一点……或者是真的? 我确信这台服务器上有人每天都在使用Shell脚本。 您能告诉我您在组织/业务中使用它的目的吗 谢谢:)Bash 真实的SHELL脚本使用情况?,bash,unix,shell,ubuntu,Bash,Unix,Shell,Ubuntu,我正在学习UNIX/LinuxShell脚本并尝试思考它的适当用法 我想到的唯一一件事是,它对于备份操作和日志管理来说是很好的……但我确信它远远超出了这一点……或者是真的? 我确信这台服务器上有人每天都在使用Shell脚本。 您能告诉我您在组织/业务中使用它的目的吗 谢谢:) 基本上,有许多与备份、维护等相关的任务需要自动化,shell脚本可以做到这一点。我从事一个在unix环境中运行的积极开发的软件项目。不幸的是,它使用了许多不同的环境变量进行配置,并将二进制程序、数据文件和共享库存储在依赖于
基本上,有许多与备份、维护等相关的任务需要自动化,shell脚本可以做到这一点。我从事一个在unix环境中运行的积极开发的软件项目。不幸的是,它使用了许多不同的环境变量进行配置,并将二进制程序、数据文件和共享库存储在依赖于版本的路径上 所有这些都是一个痛苦的设置 但更糟糕的是:在任何时候,我都可能想要使用稳定的版本,相当稳定但更为最新的版本,每一个新功能版本的最新版本,或者我个人的黑客开发版本 在它们之间切换是一个更大的麻烦 输入一个shell脚本,确保一次只设置一个版本。Ta da
顺便说一句——我用于此的脚本广泛使用了的公认答案,所以您知道堆栈溢出在现实世界中对我很有效。此外,我还用这项技术感染了其他一些人。使用shell命令,您可以在不到20行的时间内完成一些事情 我个人使用它来批处理杂项每日/每周命令,并启动长时间运行的流程。当它们变大时,它们可能会变得笨拙且难以调试。未知变量计算为空字符串(icky)
随着代码变得越来越复杂,Python、Perl和Ruby等脚本语言变得越来越吸引人。我已经看过用Korn shell编写的成熟应用程序(医疗记录和日程安排处理),并对其进行了研究 批量编程、PostScript打印过滤器、自动邮寄和自动航空公司登记系统、定期股票价格跟踪、软件安装等
更好的问题=什么不能在Shell中编程?对于我们公司,我们使用Shell脚本实现以下功能: 备份—如果数据丢失,对我们来说将是灾难性的。我们备份的各个部分,如数据库备份、异地备份、连续备份等,都使用每天运行的shell脚本,有些脚本每周运行一次。 更新日期-由于防火墙限制,我们不使用ntp,因此我们依靠sh脚本更新日期。 日志清理 发送电子邮件您可以在shell中完成所有事情,但编写难看且缓慢的脚本很容易 Shell的第一个专业领域是启动和合并其他程序。这非常适合:
- 文件操作:列表、移动、复制、压缩、存档
- 文本行操作:筛选(
),修改(grep
),删除行(sed
),合并文件(sed
),排序(粘贴
),统一(排序
)排序-u
- 文件操作通常与流控制指令结合使用(
,while
,if
)for
- 行操作与管道
和命名管道|
mkfifo
mysqldump
输出到其自己适当命名的.sql
文件中
另一个会遍历HomeDir列表,并更改相应的public_html
dir下所有文件的所有权,以匹配应拥有这些文件的用户,从而符合SUPPP的限制
另一个检查当前硬件配置,并下载、安装和配置适当的软件,以监控当前连接的RAID控制器的运行状况
这些都是相对简单的任务,可以手工完成——但每当我发现自己不止一次地做同一个任务时,我就会编写一个shell脚本来自动化这个过程
我还在bash中构建了一个base-64解码器,看看是否可以。它能工作,但速度非常慢。我使用shell脚本来完成主要涉及执行其他程序的简单任务。当需要大量的字符串处理时,我经常使用Perl,对于更复杂的脚本任务,我使用Python。你知道的语言越多,你就越能为工作选择合适的语言。还有一件很棒的事情,那就是你不需要太大的依赖关系来完成工作(如perl、python等)。您通常可以使用结合在shell脚本中的大多数shell实用程序在大多数新安装的Unix衍生产品上完成很多工作,或者想想嵌入式系统(例如TinyBSD/NanoBSD、嵌入式linux等),这很酷!我用它来提出我们在这里遇到的问题/bug的解决方案。实际上,我真的希望PHP有默认的变量扩展。