真实的SHELL SCRIPTS用法?

时间:2010-11-22 03:59:32

标签: bash unix shell ubuntu

我正在学习UNIX / LINUX shell脚本并尝试考虑它的适当用法?

唯一想到的是 - 让我们说备份操作和日志管理会很好......但我确信它会超越这个......或者是它? 我确信此服务器上有人每天都使用Shell脚本。 你能告诉我你在组织/业务中使用它是什么吗?

感谢:)

7 个答案:

答案 0 :(得分:4)

Why use shell scripts

基本上,有许多与备份,维护等相关的任务需要自动化,而shell脚本也可以这样做。

答案 1 :(得分:3)

你可以在shell中完成所有,但是编写丑陋且速度慢的脚本很容易。

shell的第一个专业领域是启动和组合其他程序。这非常适合:

  • 文件操作:列出,移动,复制,压缩,存档
  • 文本行操作:过滤(grep),修改(sed),删除行(sed),合并文件(paste ),排序(sort),统一(sort -u

所有这些操作都不是shell操作,但shell是将它们放在一起的粘合剂。

  • 文件操作通常与流控制指令相结合(whileiffor
  • 行操作与管道|和命名管道mkfifo
  • 组合在一起

答案 2 :(得分:2)

使用shell命令可以在少于20行中完成的任务。

我个人用它来批量杂项每日/每周命令并启动长时间运行的进程。当它们变大时,它们可能很笨重且难以调试。未知变量评估为空字符串(icky)。

随着代码变得越来越复杂,脚本语言(如Python,Perl和Ruby)变得越来越吸引力

答案 3 :(得分:1)

我在一个在unix环境中运行的积极开发的软件项目上工作。不幸的是,它使用了许多不同的环境变量进行配置,并在依赖于版本的路径上存储二进制程序,数据文件和共享库。

所有这些都是痛苦的设置。

但它变得更糟:在任何特定的时间我都可能想要使用稳定版本,相当稳定但更新的版本,最新鲜的每个新功能版本,或者我个人入侵的开发版本。

在它们之间切换是一个更大的麻烦。

输入一个shell脚本,确保我一次只设置一个版本。 Ta da!


BTW - 我使用的脚本广泛使用了How do I manipulate $PATH elements in shell scripts?的接受答案,因此您知道Stack Overflow在现实世界中适用于我。更重要的是,我用这种技术感染了其他几个人。

答案 4 :(得分:1)

我已经看过并研究过用Korn shell编写的全面应用程序(医疗记录和调度处理)。

批量编程,PostScript打印过滤器,自动邮寄和自动航空登机系统,定期股票价格跟踪,软件安装人员等等。

更好的问题=壳牌无法编程的内容?

答案 5 :(得分:1)

对于我们公司,我们使用shell脚本进行以下操作:

备份 - 如果我们丢失数据,对我们来说将是非常灾难性的。我们的备份的各个部分,如数据库备份,异地备份,连续备份等都使用每天运行的shell脚本,有些每周运行一次。 更新日期 - 我们不使用ntp,因此我们依靠sh脚本来更新日期,因为防火墙限制。 日志清理 发送电子邮件

答案 6 :(得分:1)

我没想到bash编程特别强大,直到我看到操作系统启动脚本都写在其中。这让我重新审视了我的假设。我现在有几十个重要的shell脚本,这些脚本多年来我自己编写了一些常见任务。

例如,我编写了一个轮询当前平均负载,然后执行提供的命令,如果它超过某个值(用于检查每天只发生一次或两次的事件)。

我编写的另一个代码遍历服务器上的所有mysql数据库,并为每个数据库输出mysqldump到其自己的适当命名的.sql文件中。

另一个遍历homedirs列表,并更改相应public_html目录下所有文件的所有权,以匹配拥有它们的用户,以符合suPHP的限制。< / p>

另一个检查当前的硬件配置并下载,安装和配置适当的软件,以监控当前连接的RAID控制器的运行状况。

这些都是可以手工完成的相对简单的任务 - 但每当我发现自己不止一次地执行相同的任务时,我会编写一个shell脚本来自动执行该过程。

我还在bash中构建了一个base-64解码器,看看能否。它有效,但速度非常慢。我将shell脚本用于主要涉及执行其他程序的简单任务。当需要大量的字符串处理时,我经常使用Perl,而我使用Python来处理更复杂的脚本编写任务。你知道的语言越多,你选择合适的语言就越好。