• shell脚本常用语句记录--持续更新


    1、获取脚本当前所在路径

    cd "$(dirname -- "$0")" && pwd

    2、数组接收多个值

    1. port_list_str=$1
    2. port_list=(${port_list_str//,/ })
    3. for index in ${!port_list[@]}
    4. do
    5. var=${port_list[$index]}
    6. echo $var
    7. done

    演示

    1. [root@VM-16-16-centos ansible]# sh ss.sh 11,22,33
    2. 11
    3. 22
    4. 33

    3、比较浮点值

    1. a=1.1
    2. b=2.3
    3. if [ `echo "$a < $b" | bc` -ne 0 ];then
    4. echo "$a < $b"
    5. fi

    演示

    1. [root@VM-16-16-centos ansible]# sh ss.sh
    2. 1.1 < 2.3

    4、删除匹配文本所在的行

    sed -i -e '/文本/d'

    演示

    1. echo "111122" >> /etc/hosts
    2. echo "333322" >> /etc/hosts
    3. //删除匹配到的行
    4. sed -i -e '/1111/d' /etc/hosts

    返回

    1. [root@VM-16-16-centos ansible]# cat /etc/hosts
    2. 127.0.0.1 VM-16-16-centos VM-16-16-centos
    3. 127.0.0.1 localhost.localdomain localhost
    4. 127.0.0.1 localhost4.localdomain4 localhost4
    5. ::1 VM-16-16-centos VM-16-16-centos
    6. ::1 localhost.localdomain localhost
    7. ::1 localhost6.localdomain6 localhost6
    8. 333322

    5、替换文件中最后一行的数据

    sed -i '$s/.*/要替换的文本/'  //$表示文件最后一行,$紧跟s命令替换最后一行

    演示

    1. //创建测试文本
    2. cat > /tmp/test.log <
    3. 111
    4. 222
    5. 333
    6. EOF
    7. //查看
    8. [root@VM-16-16-centos ansible]# cat /tmp/test.log
    9. 111
    10. 222
    11. 333
    12. //修改
    13. sed -i '$s/.*/xxx/' /tmp/test.log

    6、删除文本最后一行的数据

    sed -i '$d' 文件

     7、ss.sh: line 7: [: ==: unary operator expected

    我们可能使用了如下的语法,当变量STATUS没有值的时候就会报错

    1. if [ $STATUS == "OK" ];then
    2. echo "OK"
    3. fi

    这里只要将中括号换成双中括号 改为等于值即可

    1. if [[ $STATUS = "OK" ]];then //双中括号, == 改成 =
    2. echo "OK"
    3. fi

     

    8、按照日期备份文件

    1. NOW=$(date +"%m-%d-%Y")
    2. FILE="backup.$NOW.tar.gz"
    3. tar -zcvf /tmp/$FILE /tmp

    9、输出文本中倒数第二列的值

    awk '{print $(NF-1)}'

    演示

    1. cat > /tmp/test.log <
    2. 123 345 567 789 //567是倒数第二列的值
    3. EOF
    4. //查看
    5. [root@VM-16-16-centos tmp]# cat /tmp/test.log | awk '{print $(NF-1)}'
    6. 567

    10、判断变量、文件、目录是否有值

    1. if [ -n "变量" ]; then //判断变量是否有值
    2. -f 判断是否有文件
    3. -d 判断是否有目录

    11、获取匹配到数据的 值的上一行或下一行

    1. cat > /tmp/test.log <
    2. AAAAAAA
    3. BBBBBBB
    4. CCCCCCC
    5. DDDDDDD
    6. EEEEEEE
    7. EOF
    8. //查看匹配到值的上一行 和本身
    9. [root@VM-16-16-centos tmp]# cat /tmp/test.log | grep -B 1 "BBB"
    10. AAAAAAA
    11. BBBBBBB
    12. //查看匹配到值的下一行 和本身
    13. [root@VM-16-16-centos tmp]# cat /tmp/test.log | grep -A 1 "BBB"
    14. BBBBBBB
    15. CCCCCCC

    12、给文件中所有行首行尾添加数据

    1. //给文件所有行尾添加数据
    2. sed -i 's/$/ xxx/' /tmp/test.log
    3. //给文件所有行首添加数据
    4. sed -i 's/^/ xxx/' /tmp/test.log

    13、给指定匹配到的文本后、匹配的文本的末尾追加配置

    sed 's/AAAAAAA/&123/' /tmp/test.log

     上面我们通常是覆盖配置用的,还有一种情况是直接追加文本到匹配的行的末尾

    1. //先匹配BBB的数据,然后在这个数据的结尾去添加test
    2. sed '/BBB/ s/$/ test/' test.log

    14、将多行数据转换到一行内显示

    1. cat > /tmp/test.log <
    2. 1
    3. 2
    4. 3
    5. 4
    6. 5
    7. EOF
    8. //转换 为一行
    9. [root@VM-16-16-centos tmp]# cat /tmp/test.log | xargs
    10. 1 2 3 4 5
    11. //再转换为多行
    12. [root@VM-16-16-centos tmp]# cat /tmp/test.log | xargs | xargs -n 1
    13. 1
    14. 2
    15. 3
    16. 4
    17. 5

    15、将匹配到的多个数值做加法运算

    1. cat > /tmp/test.log <
    2. 1
    3. 2
    4. 3
    5. 4
    6. 5
    7. EOF
    8. //演示
    9. [root@VM-16-16-centos tmp]# cat /tmp/test.log | awk '{print $n}' | awk '{sum+=$1}END{print sum}'
    10. //返回
    11. 15

    16、数值排序   去重

    1. cat > /tmp/test.log <
    2. test 30
    3. Hello 95
    4. Linux 85
    5. EOF
    6. //排序查看
    7. //sort 是排序
    8. //uniq 是去重
    9. [root@VM-16-16-centos tmp]# cat /tmp/test.log | sort | uniq -c
    10. 1 Hello 95
    11. 1 Linux 85
    12. 1 test 30

    17、过滤匹配多个对象

    cat file | grep -E  'sss|xxx' 

    18、过滤指定的匹配对象,非模糊匹配

    cat /tmp/test.log | grep -w Hello   //-w  一定要完整匹配的才算匹配到

    19、免交互修改用户密码

    echo 'xxx' | passwd --stdin root

    20、过滤文件或目录

    1. ls -l | grep "^-" #过滤文件
    2. ls -l | grep "^d" #过滤目录

    21、查看包含字符串的文件

    1. //创建测试文件
    2. echo "123 444" >> /tmp/1.txt
    3. echo "123 555" >> /tmp/2.txt
    4. //筛选包含文本的文件
    5. [root@VM-16-16-centos tmp]# grep -r "123" /tmp
    6. /tmp/1.txt:123 444
    7. /tmp/2.txt:123 555

    22、查看当前服务器架构

    arch

     

    23、数组值的追加

    1. //定义数组
    2. args=()
    3. //定义变量追加值
    4. i=1
    5. args+=("${i}")
    6. args+=("2")
    7. args+=("3")
    8. //打印数组
    9. [root@VM-16-16-centos tmp]# echo "${args[@]}"
    10. 1 2 3

    24、去除小括号特殊字符

    1. [root@VM-16-16-centos tmp]# echo '(123)' | cut -d '(' -f2 | cut -d ')' -f1
    2. 123
    3. //说明
    4. cut表示切割
    5. -d 表示需要需要使用自定义切割符
    6. -f2 表示对切割后的几块内容选择第2部分输出
    7. -f1 表示对切割后的几块内容选择第1部分输出
    8. | 表示管道

    25、shell 批量导入文本数据到数据库

    有段时间没有其他语言的环境,只能用shell去把数据写入到数据库

    1. MYSQLCMD="mysql -hhost -uuser -ppasswd db"
    2. CODE="SELECT * FROM table"
    3. echo "${CODE}" | ${MYSQLCMD}
    4. //参考文档
    5. https://blog.csdn.net/long12310225/article/details/77521957?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-2-77521957.pc_agg_new_rank&utm_term=shell%E5%8F%98%E9%87%8F%E6%89%A7%E8%A1%8Cmysql&spm=1000.2123.3001.4430

    导入数据库时碰到的两种报错

    1. 1、ERROR 1406 (22001): Data too long for column ‘name‘ at row 1
    2. 字段空间太小
    3. 我用的varchar 255 ,要导入的数据太长了,这里最大可以设置为65535
    4. 2、ERROR 1136 at line 1 Column count doesn`t match value count at row 1
    5. 字段数量和插入数据的数量不匹配,可能是字段太少,插入数据超出字段定义了。。
    6. 比如我定义了个name,然后你插入了name、sex、xxx等,放不了

    26、 查询数据库的数据转换为xls文件

    1. //循环取表名称
    2. for i in `cat host`
    3. do
    4. MYSQLCMD="mysql -u root -pxxxx"
    5. dd=`cat host | grep $i |sed 's/-/_/g' ` //改表名的,可以无视
    6. path="\"/home/mysql/dir/$i.xls\"" //反斜杠转义,保证带双引号的路径,文件存放路径
    7. CODE="select * from dd.$dd into outfile $path" //导出execl文件
    8. echo "${CODE}" | ${MYSQLCMD} //执行命令和mysql交互
    9. done

    27、将多个xlsx表 合并成一个execl表,每个表作为sheet页显示

    当时我们批量获取的表数据是作为单独的xls表存在的,这里合并到一个表里

    25、26、27当时写一个脚本一起用的

    1. import openpyxl
    2. import os
    3. path="E:/tar/11/" #指定xlsx文件存放路径
    4. src_path=[x for x in os.listdir(path) if x.endswith(".xlsx")] #提交数据的文件,匹配所有
    5. dest_path='C:/Users/刘伟/Desktop/新建文件夹/www.xlsx' #被提交数据的文件
    6. def open_file(i):
    7. src_wb = openpyxl.load_workbook(path+i) #这里表示要打开一个execl文件
    8. dest_wb = openpyxl.load_workbook(dest_path)
    9. sheet_name = src_wb.sheetnames #首先要获取提交的页的名称是什么
    10. sheet_name = sheet_name[0] #因为sheet是一个列表形式的值,我们需要将他取出来
    11. src_sheet = src_wb.get_sheet_by_name(sheet_name) #根据提交的页去获取数据
    12. dest_wb.create_sheet(title=sheet_name,index=0) #因为是完全复制,我们需要在表中创建一个完全相同的sheet页
    13. dest_sheet = dest_wb.get_sheet_by_name(sheet_name) #打开我们创建的sheet页
    14. for i in range(1, src_sheet.max_row+1):
    15. for j in range(1, src_sheet.max_column+1):
    16. dest_sheet.cell(row=i, column=j).value = src_sheet.cell(row=i, column=j).value
    17. dest_wb.save(dest_path)
    18. def main():
    19. #当我们需要添加多个文件到同一个文件时,就还需要再套一层循环
    20. for i in src_path:
    21. open_file(i)
    22. if __name__ == '__main__':
    23. main()

    28、感觉不错的正则表达式文章

    https://blog.csdn.net/qq_39221436/article/details/120700556

    29、卸载挂载卷 并将容量转换给其他lv卷

    1. umount /目录 //卸载挂载设备
    2. sed -i -e '/挂载相关目录/d' /etc/fstab //将自动挂载的信息删除
    3. lvremove -f 挂载设备 //删除原先的lv卷
    4. lvextend -r --size +10G lv卷设备 //将卷容量扩容到新的lv卷设备
    5. //这里的-r代表的意思是自动加载
    6. //当我们添加资源后会自动重载分区

    30、检查输入的ip地址是否规范

    1. #!/bin/bash
    2. function check_ip(){
    3. IP=$1
    4. VALID_CHECK="no"
    5. VALID_CHECK=$(echo $IP|awk -F. '$1 <= 255 && $2 <= 255 && $3 <= 255 && $4 <= 255 {print "yes"}')
    6. if echo $IP |grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null;then
    7. if [[ $VALID_CHECK = yes ]]; then #这里注意一个问题,为什么要用双方括号,因为 如果我们用 [$ss == "dd" ]这样会报一元操作符错误,因为变量可能没有值,使用双括号保证他是有值的就不会报错了
    8. echo "$IP available."
    9. else
    10. echo "xxx"
    11. fi
    12. else
    13. echo "Format error!"
    14. fi
    15. }
    16. check_ip 192.168.1.1 #测试成功案例
    17. check_ip 256.1.1.1 #测试失败案例

    31、vsftp服务管理脚本(未验证)

    1. #!/bin/bash
    2. #功能描述(Description):自动部署配置vsftpd服务器,管理FTP服务器,针对RHEL|CentOS系统.
    3. #本地账户访问FTP的共享目录为/common,其中/common/pub为可上传目录.
    4. #匿名账户访问FTP的共享目录为/var/ftp,其中/var/ftp/pub为可上传目录.
    5. #定义变量:显示信息的颜色属性及配置文件路径.
    6. SUCCESS="echo -en \\033[1;32m" #绿色.
    7. FAILURE="echo -en \\033[1;31m" #红色.
    8. WARNING="echo -en \\033[1;33m" #黄色.
    9. NORMAL="echo -en \\033[0;39m" #黑色.
    10. conf_file=/etc/vsftpd/vsftpd.conf
    11. #####从这里开始先将所有需要的功能定义为函数.#####
    12. #定义脚本的主菜单功能.
    13. menu(){
    14. clear
    15. echo "-----------------------------------"
    16. echo "# 菜单(Menu) #"
    17. echo "-----------------------------------"
    18. echo "# 1.安装配置vsftpd. #"
    19. echo "# 2.创建FTP账户. #"
    20. echo "# 3.删除FTP账户. #"
    21. echo "# 4.配置匿名账户. #"
    22. echo "# 5.启动关闭vsftpd. #"
    23. echo "# 6.退出脚本. #"
    24. echo "-----------------------------------"
    25. echo
    26. }
    27. #定义配置匿名账户的子菜单.
    28. anon_sub_menu(){
    29. clear
    30. echo "-----------------------------------"
    31. echo "# 匿名配置子菜单(Menu) #"
    32. echo "-----------------------------------"
    33. echo "# 1.禁用匿名账户. #"
    34. echo "# 2.启用匿名登陆. #"
    35. echo "# 3.允许匿名账户上传. #"
    36. echo "-----------------------------------"
    37. echo
    38. }
    39. #定义服务管理的子菜单.
    40. service_sub_menu(){
    41. clear
    42. echo "-----------------------------------"
    43. echo "# 服务管理子菜单(Menu) #"
    44. echo "-----------------------------------"
    45. echo "# 1.启动vsftpd. #"
    46. echo "# 2.关闭vsftpd. #"
    47. echo "# 3.重启vsftpd. #"
    48. echo "-----------------------------------"
    49. echo
    50. }
    51. #测试YUM是否可用.
    52. test_yum(){
    53. num=$(yum repolist | tail -1 | sed 's/.*: *//;s/,//')
    54. if [ $num -le 0 ];then
    55. $FAILURE
    56. echo "没有可用的Yum源."
    57. $NORMAL
    58. exit
    59. else
    60. if ! yum list vsftpd &> /dev/null ;then
    61. $FAILURE
    62. echo "Yum源中没有vsftpd软件包."
    63. $NORMAL
    64. exit
    65. fi
    66. fi
    67. }
    68. #安装部署vsftpd软件包.
    69. install_vsftpd(){
    70. #如果软件包已经安装则提示警告信息并退出脚本.
    71. if rpm -q vsftpd &> /dev/null ;then
    72. $WARNING
    73. echo "vsftpd已安装."
    74. $NORMAL
    75. exit
    76. else
    77. yum -y install vsftpd
    78. fi
    79. }
    80. #修改初始化配置文件.
    81. init_config(){
    82. #备份配置文件.
    83. [ ! -e $conf_file.bak ] && cp $conf_file{,.bak}
    84. #为本地账户创建共享目录/common,修改配置文件指定共享根目录.
    85. [ ! -d /common/pub ] && mkdir -p /common/pub
    86. chmod a+w /common/pub
    87. grep -q local_root $conf_file || sed -i '$a local_root=/common' $conf_file
    88. #默认客户端通过本地账户访问FTP时
    89. #允许使用cd命令跳出共享目录,可以看到/etc等系统目录及文件.
    90. #通过设置chroot_local_user=YES可以将账户禁锢在自己的家目录,无法进入其他目录.
    91. sed -i 's/^#chroot_local_user=YES/chroot_local_user=YES/' $conf_file
    92. }
    93. #创建FTP账户,如果账户已存在则直接退出脚本.
    94. create_ftpuser(){
    95. if id $1 &> /dev/null ;then
    96. $FAILURE
    97. echo "$1账户已存在."
    98. $NORMAL
    99. exit
    100. else
    101. useradd $1
    102. echo "$2" | passwd --stdin $1 &>/dev/null
    103. fi
    104. }
    105. #删除FTP账户,如果账户不存在则直接退出脚本.
    106. delete_ftpuser(){
    107. if ! id $1 &> /dev/null ;then
    108. $FAILURE
    109. echo "$1账户不存在."
    110. $NORMAL
    111. exit
    112. else
    113. userdel $1
    114. fi
    115. }
    116. #配置匿名账户.
    117. #第一个位置参数为1则将匿名账户禁用.
    118. #第一个位置参数为2则开启匿名账户登陆功能.
    119. #第一个位置参数为3则设置允许匿名账户上传文件.
    120. anon_config(){
    121. if [ ! -f $conf_file ];then
    122. $FAILURE
    123. echo "配置文件不存在."
    124. $NORMAL
    125. exit
    126. fi
    127. #设置anonymous_enable=YES可以开启匿名登陆功能,默认为开启状态.
    128. #设置anonymous_enable=NO可以禁止匿名登陆功能.
    129. #设置anon_upload_enable=YES可以允许匿名上传文件,默认该配置被注释.
    130. #设置anon_mkdir_write_enable=YES可以允许匿名账户创建目录,默认该配置被注释.
    131. case $1 in
    132. 1)
    133. sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' $conf_file
    134. systemctl restart vsftpd;;
    135. 2)
    136. sed -i 's/anonymous_enable=NO/anonymous_enable=YES/' $conf_file
    137. systemctl restart vsftpd;;
    138. 3)
    139. sed -i 's/^#anon_/anon_/' $conf_file
    140. chmod a+w /var/ftp/pub
    141. systemctl restart vsftpd;;
    142. esac
    143. }
    144. #服务管理.
    145. #第一个位置参数为start时启动vsftpd服务.
    146. #第一个位置参数为stop时关闭vsftpd服务.
    147. #第一个位置参数为restart时重启vsftpd服务.
    148. proc_manager(){
    149. if ! rpm -q vsftpd &>/dev/null ;then
    150. $FAILURE
    151. echo "未安装vsftpd软件包."
    152. $NORMAL
    153. exit
    154. fi
    155. case $1 in
    156. start)
    157. systemctl start vsftpd;;
    158. stop)
    159. systemctl stop vsftpd;;
    160. restart)
    161. systemctl restart vsftpd;;
    162. esac
    163. }
    164. ######从这里开始调用前面定义的函数.#####
    165. menu
    166. read -p "请输入选项[1-6]:" input
    167. case $input in
    168. 1)
    169. test_yum #测试yum源.
    170. install_vsftpd #安装vsftpd软件包.
    171. init_config;; #初始化修改配置文件.
    172. 2)
    173. read -p "请输入账户名称:" username
    174. read -s -p "请输入账户密码:" password
    175. echo
    176. create_ftpuser $username $password;; #创建FTP账户.
    177. 3)
    178. read -p "请输入账户名称:" username
    179. delete_ftpuser $username $password;; #删除FTP账户.
    180. 4)
    181. anon_sub_menu
    182. read -p "请输入选项[1-3]:" anon
    183. if [ $anon -eq 1 ];then
    184. anon_config 1 #禁止匿名登陆.
    185. elif [ $anon -eq 2 ];then
    186. anon_config 2 #启用匿名登陆.
    187. elif [ $anon -eq 3 ];then
    188. anon_config 3 #允许匿名上传.
    189. fi;;
    190. 5)
    191. service_sub_menu
    192. read -p "请输入选项[1-3]:" proc
    193. if [ $proc -eq 1 ];then
    194. proc_manager start #启动vsftpd服务.
    195. elif [ $proc -eq 2 ];then
    196. proc_manager stop #关闭vsftpd服务.
    197. elif [ $proc -eq 3 ];then
    198. proc_manager restart #重启vsftpd服务.
    199. fi;;
    200. 6)
    201. exit;;
    202. *)
    203. $FAILURE
    204. echo "您的输入有误."
    205. $NORMAL
    206. exit;;
    207. esac

    32、docker镜像合并打包

    1. #镜像批量导出
    2. docker save vmware/postgresql-photon:v1.5.1 vmware/photon:1.0 ... | gzip -c > harbor-images.tar.gz
    3. #镜像批量导入
    4. docker load --input harbor-images.tar.gz

    33、批量修改不同主机不同密码为相同密码

    1. #!/bin/bash
    2. OLD_INFO=old_pass.txt #需要先创建文件,格式在最下面
    3. NEW_INFO=new_pass.txt
    4. for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do
    5. USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO)
    6. PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO)
    7. PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO)
    8. NEW_PASS=123456 #$(mkpasswd -l 8) # 随机密码 这个是在安装expect工具时自带的,本脚本需要依赖于expect工具
    9. echo "$IP $USER $NEW_PASS $PORT" >> $NEW_INFO
    10. expect -c "
    11. spawn ssh -p$PORT $USER@$IP
    12. set timeout 2
    13. expect {
    14. \"(yes/no)\" {send \"yes\r\";exp_continue}
    15. \"password:\" {send \"$PASS\r\";exp_continue}
    16. \"$USER@*\" {send \"echo \'$NEW_PASS\' |passwd --stdin $USER\r exit\r\";exp_continue}
    17. }"
    18. done
    19. #####3分割线
    20. vi old_pass.txt
    21. #添加
    22. 192.168.1.20 root 123456 22
    23. 192.168.1.21 root 123456 22

    34、带颜色的文本输出

    1. https://blog.csdn.net/qq_24047235/article/details/116536973
    2. 案例
    3. echo -e "\033[32m文本信息\033[0m"
    4. #这里必须带-e 否则颜色无效
    5. \033 \033 表示文字颜色
    6. [32m 表示背景颜色

    35、linux调优

    1. 1、关闭selinux:setenforce 0 ;sed -i "s/enforcing/disabled/" /etc/selinux/config
    2. 2、关闭firewalld:sys:systemctl stop firewalld;systemctl disable firewalld
    3. 3、设置会话连接超时时间和History历史记录配置:在/etc/profile文件中末尾添加2行:
    4. export TMOUT=3600
    5. export HISTTIMEFORMAT="%F %T `whoami` "
    6. 4、更新国内yum源
    7. 备份yum源 yum install -y wget && mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    8. 下载阿里云yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    9. 清理yum源缓存 创建缓存 查看yum源 更新系统软件
    10. yum -y clean all && yum makecache && yum repolist && yum -y update
    11. 5、更新yum源并配置时间同步:` yum install -y wget epel-release net-tools vim ntpdate && /usr/sbin/ntpdate 1.cn.pool.ntp.org` 执行crontab -e命令,添加:`0 * * * * /usr/sbin/ntpdate 1.cn.pool.ntp.org`内容
    12. 6、关闭不必要的服务
    13. systemctl stop postfix && systemctl disable postfix && systemctl stop NetworkManager && systemctl disable NetworkManager
    14. 7、内核优化
    15. ```shell
    16. cat > /etc/sysctl.conf << EOF
    17. net.core.rmem_max = 16777216
    18. net.core.wmem_max = 16777216
    19. fs.file-max = 131072
    20. kernel.panic=1
    21. net.ipv4.tcp_rmem = 4096 87380 16777216
    22. net.ipv4.tcp_wmem = 4096 65536 16777216
    23. net.ipv4.tcp_timestamps = 0
    24. net.ipv4.tcp_window_scaling = 1
    25. net.ipv4.tcp_sack = 1
    26. net.ipv4.tcp_no_metrics_save = 1
    27. net.core.netdev_max_backlog = 3072
    28. net.ipv4.tcp_max_syn_backlog = 4096
    29. net.ipv4.tcp_max_tw_buckets = 720000
    30. net.ipv4.ip_local_port_range = 1024 65000
    31. net.ipv4.tcp_fin_timeout = 5
    32. net.ipv4.tcp_tw_recycle = 1
    33. net.ipv4.tcp_retries1 = 2
    34. net.ipv4.tcp_retries2 = 10
    35. net.ipv4.tcp_synack_retries = 2
    36. net.ipv4.tcp_syn_retries = 2
    37. net.ipv4.tcp_syncookies = 1
    38. EOF
    39. sysctl -p
    40. ```
    41. ```shell
    42. cat >> /etc/security/limits.conf << EOF
    43. * soft nproc 2048
    44. * hard nproc 16384
    45. * soft nofile 8192
    46. * hard nofile 65536
    47. EOF
    48. ```
    49. grubby --update-kernel=ALL --args="console=ttyS0"
    50. reboot

    36、生成随机字符串

    1. pwgen 10 -1A0 //这里的10是长度
    2. //举个例子
    3. touch `pwgen 10 -1A0 | sed 's/$/_clsn.html/'`

    37、python pip从nexus 拉包

    pip install -i  http:ip+端口/simple    xlrd==1.2.0   --trusted-host ip地址

    38 查看指定时间区间的日志

    1. //目标查看 2022年 6月 10日志的 下午5点20到5点40的日志
    2. cat 日志文件 | sed -n "/2022-06-10 17:20/,/2022-06-10 17:40/p"

    39、根据剩余磁盘空间快速扩容lv卷

    1. #场景,之前分了几个分区,vda这个硬盘上还有剩余资源,我们用剩下的资源去做个分区在扩容到lvm的lv卷上
    2. #! /bin/bash
    3. fdisk /dev/vda<
    4. n
    5. w
    6. EOF
    7. vgs
    8. vgextend system /dev/vda3
    9. vgs
    10. lvextend -r -L +10G /dev/mapper/system-xxxlv

  • 相关阅读:
    【chrome基础】Chrome、Chromium、libcef、electron版本关系大揭秘!
    LeetCode【100】单词拆分
    面试官:能用JavaScript手写一个bind函数吗
    【react】精选5题
    第五届传智杯【初赛】- F-二人的大富翁游戏
    【水质预测】基于matlab模糊神经网络水质预测【含Matlab源码 1923期】
    ARM 的内存与外存
    PostgreSQL 逻辑复制模块(二)
    C专家编程 第2章 这不是Bug,而是语言特性 2.4 少做之过
    火遍国内外IT技术圈,豆瓣 9.7!这本技术书籍直接封神了
  • 原文地址:https://blog.csdn.net/qq_42883074/article/details/126242097