锱铢必较系列:程序员生存指南——插件式使用linux配置文件

程序员们的内心都有这样的逻辑

if (我的程序.功能 == 你的程序.功能):
    if(我的程序.代码行数 < 你的程序.代码行数):
        assertTrue(我的程序.牛逼程度 > 你的程序.牛逼程度 )

牛逼程度决定了程序员的境界,是程序员的生存之本,所以程序员一般会殚精竭虑,舍生忘死的减少代码行数。本文就讲述了这么一个小故事。

近日来,家住北京市朝阳区的程序员诸葛建国非常忙碌,他开发了一套产品,唤做JDT,需要部署到客户的linux服务器上。JDT完美无缺,就是有个小瑕疵——需要设置一个环境变量才能工作!!!所以他不得不在JDT的安装脚本中,增加一个设置环境变量的功能。

设置一个环境变量还不容易?直接在安装脚本中写

echo "export bar=foo" >> /etc/profile

注意要用>>,否则原来内容就没喽。

写完之后发现一个问题,JDT总是不能一蹴而就、一泻千里的安装成功,所以经常需要重新运行安装脚本。这样安装完之后,/etc/profile文件末尾就有好几个“bar=foo”。作为一个有洁癖的程序员,诸葛建国当然不能容忍啦,赶紧加班加点改了安装脚本。

if grep "export bar=foo" /etc/profile > /dev/null
then
    echo "will do nothing"
else
    echo "will do something"
    echo "export bar=foo" >> /etc/profile
fi

这里grep命令可以直接接到if后面,grep的返回值直接作为判断条件。

诸葛建国正在为这个技巧洋洋得意,夏侯富贵出现在了他身边,告诉他:“用/etc/profile.d文件夹”

所以现在用

echo "export bar=foo" > /etc/profile.d/jdt.sh

就行了,想运行几次就运行几次!!!

诸葛建国后来发现,linux好多配置都有这种插件式的表现形式,比如/etc/lograte.d/,/etc/cron.daily/,/etc/security/limits.d/,它们有个主要的配置文件,然后有一大堆插件式的配置文件。

这种方式的好处是插件的配置不用再参差不齐、鱼龙混杂的放在一起了。而且主程序的升级更方便了,比如系统上安装了一个nginx,你修改了/etc/nginx/nginx.conf,增加了一些目录映射,然后用yum更新了一下nginx,这时nginx安装程序就会很崩溃,到底是用新版本的配置文件还是系统中现有的配置文件?

安装程序的内心世界

把nginx的配置放到/etc/nginx/conf.d/文件夹就方便多了,nginx升级程序大刀阔斧歇斯底里的覆盖原有配置文件/etc/nginx/nginx.conf就行了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

【Zabbix】中小型企业Zabbix监控实战之告警大全

转载声明:本文转载自「数睿技术」 前言 本篇文章介绍目前常用的告警方式,以及对功能实现做讲解。本篇文章中出现的代码片段可以回复"监控脚本"获取完整代码。 ...

522100
来自专栏程序员宝库

Python库大全(涵盖了Python应用的方方面面),建议收藏留用!

学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。

18340
来自专栏编程

2018 年初值得关注的 25 个新 Android 库和项目

协作翻译 原文:25 new Android libraries and projects to check at the beginning of 2018 ...

289100
来自专栏腾讯大讲堂的专栏

Android开发在路上:少去踩坑,多走捷径

最近一朋友提了几个Android问题让我帮忙写个小分享,我觉得对新人还是挺有帮助的,所以有了这个小分享。 1.目前, Android APP开发完成后,通常需要...

230100
来自专栏web前端教室

继续电商网站的购物车

这一阶段的内容会比较枯燥,没办法啊。纯业务逻辑这块,写不出情趣来。有兴趣的就耐着性子看看,没耐性的可以等等看,改天写个有趣的内容之类的 我这个简单的购物车从功能...

48170
来自专栏PPV课数据科学社区

用Python抢枪过年的火车票

前言:大家跟我一起念,Python***好,跟着本宝宝用Python抢火车票 首先我们需要splinter 安装: pip install splinter -...

60860
来自专栏张伟博客

多合一收款二维码合并原理及源码-支持支付宝、微信、QQ

最近去超市看到好多商户一个二维码同时支持支付宝、微信、QQ扫描付款,所以回来自己上网研究了一下。整理了一个现成的源码,有需要的朋友可以下载自己研究下。

73140
来自专栏FreeBuf

NSA(美国国安局)泄漏文件深度分析(PART 1)

* 本文原创作者:tom_vodu,本文属FreeBuf原创奖励计划,未经许可禁止转载 一、前言 防火墙是保护内网机器不受网络攻击者侵害的第一道也是非常核心...

33650
来自专栏SDNLAB

深入nDPI

前言 随着日益增加的网络应用数量,在网络上的流量种类越来越多,像QoS、安全性等方面的挑战,传统的方法已经开始乏力。比如P2P应用的带宽占用、使用随机端口的恶意...

89490
来自专栏Python中文社区

用Python获取磁力种子

陈键冬,Python中文社区专栏作者,pyecharts开源项目核心开发者,github id:chenjiandongx

49880

扫码关注云+社区

领取腾讯云代金券