我最近有一个编写shell脚本的经验,它通过消耗所有的资源来崩溃一个服务器(并损坏了一个分区)。 它被连接到一个cron的工作,似乎花费更长的时间比处决之间的时间间隔,随着时间的雪球失控。
现在,我已经修改它来logging它的运行状态,而不是同时运行多次。 我的问题是:还有其他简单的方法来保护脚本不致造成伤害吗? 是否有一个标准的脚本应该做的事情应该做的正确的行为,没有消耗太多的资源,优雅地失败,提醒正确的人等?
基本上:我应该避免哪些其他陷阱?
电脑完全按照他们所说的去做。 确保脚本“正确运行”的唯一方法是编写脚本,以便在所有情况下都能正常运行。
一些基本的build议:
你所说的安全措施取决于你的脚本在做什么。 例如,在以自动方式修改重要文件之前备份一些重要的文件会更好。 如果脚本以某种方式失败并损坏了这个重要的文件,那么您是安全的,因为您有备份等等。
重要的一点是日志logging,日志logging 。 如果您的脚本在后台运行,而没有日志文件显示其进展情况以及正在做什么,那么在近期或远期将不会有任何潜在问题。 不要忘记包含每个日志条目的时间标记,并启用NTP服务,确切地知道发生了什么事情。
最后,我们现在在虚拟机里运行脚本。 这大大限制了可能造成的损害范围。
关于Linux的恐惧(至less对我来说)是,轻微的错别字或错误会造成破坏性的影响。 甚至像运行带有$ {VARIABLE}命令的东西,如果该variables是空白的,或者包含一个空格,那么它们可能会有完全不同的(和破坏性的)含义。