随手记一笔。
太长不看版: sed修改软链接文件时,会将文件从链接变成真实文件,如果依然保持链接的状态,需要加参数--follow-symlinks,但需要注意旧版本的sed不支持这个参数。
详细:
前一阵有同事问,他通过命令: sed -i '$a sh /bin/iptables.sh' /etc/rc.local
来修改了/etc/rc.local,但发现机器重启后,iptables.sh并没有运行。
为此,先查了下Linux (CentOS6.X)的启动顺序:
inittab -> /etc/rc.d/rc.sysinit -> runlevel 3 -> /etc/rc.d/rc3.d/S99local -> /etc/rc.d/rc.local
而/etc/rc.local是一个指向/etc/rc.d/rc.local的软链接。
因此就怀疑到了sed身上。
网上搜了下,有其他同学也遇到了类似的问题。
http://blog.csdn.net/computerms/article/details/46372343
通过上面的文章可以知道此处就是sed的坑了(不是sed的坑,是我们不熟悉sed,这个说法也对)。