1
#! /bin/bash
2
# ktcpopt
3
4
sed -i '/net.ipv4.tcp_syncookies\|net.ipv4.tcp_tw_reuse\|net.ipv4.tcp_tw_recycle\|net.ipv4.tcp_fin_timeout\|net.ipv4.tcp_max_syn_backlog\|net.ipv4.tcp_max_tw_buckets\|net.ipv4.ip_local_port_range/d' /etc/sysctl.conf
5
6
sed -i '$a\net.ipv4.tcp_syncookies=1\nnet.ipv4.tcp_tw_reuse=1\nnet.ipv4.tcp_tw_recycle=1\nnet.ipv4.tcp_fin_timeout=30\nnet.ipv4.tcp_max_syn_backlog=8192\nnet.ipv4.tcp_max_tw_buckets=5000\nnet.ipv4.ip_local_port_range=10000 65000' /etc/sysctl.conf

2

3

4

5

6

為了方便配置程序的崩潰調試,編寫coredump腳本如下
1
#! /bin/bash
2
# coredump
3
4
sed -i '/ulimit -c unlimited\|export core_path=\/tmp\/corefiles\|mkdir -p $core_path\|echo "0" > \/proc\/sys\/kernel\/core_uses_pid\|echo "$core_path\/%e" > \/proc\/sys\/kernel\/core_pattern/d' ~/.bashrc
5
6
sed -i '$a\ulimit -c unlimited\nexport core_path=/tmp/corefiles\nmkdir -p $core_path\necho "0" > /proc/sys/kernel/core_uses_pid\necho "$core_path/%e" > /proc/sys/kernel/core_pattern' ~/.bashrc

2

3

4

5

6

從以上2個腳本可以看出,為避免每次調用腳本時增加重復行以致配置文件逐漸變大,先刪除已經存在的相關配置,再在末尾增加。這里使用了sed來實現直接在文件中刪除和增加,其中由于刪除操作的匹配模式有多個,因此使用了|符號并用\轉義,并且第2個腳本模式文本中含有/符號,這與sed本身的模式限定符/存在歧義,因此也用了\轉義;增加使用$a\命令來實現在文件末尾增加配置,并用\n換行。