ecs服务器shell常用脚本练习(四)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【4月更文挑战第4天】shell代码训练(四)

个人积累的一些shell脚本结合书本知识总结,精简学习直接代码,可以复制粘贴直接用

1. 统计当前Linux 系统中可以登录计算机的账户有多少个

#!/bin/bash

#方法1:

grep "bash$" /etc/passwd | wc ‐l

#方法2:

awk ‐f: '/bash$/{x++}end{print x}' /etc/passwd

2. 统计/var/log 有多少个文件,并显示这些文件名

#!/bin/bash

#使用ls 递归显示所有,再判断是否为文件,如果是文件则计数器加1

cd /var/log

sum=0

for i in `ls ‐r *`

do

if [ ‐f $i ];then

let sum++

echo "文件名:$i"

fi

done

echo "总文件数量为:$sum"

3. 自动为其他脚本添加解释器信息#!/bin/bash,如脚本名为test.sh 则效果如下:

#./test.sh abc.sh 自动为abc.sh 添加解释器信息

#./test.sh user.sh 自动为user.sh 添加解释器信息

#!/bin/bash

#先使用grep 判断对象脚本是否已经有解释器信息,如果没有则使用sed 添加解释器以及描述信息

if ! grep ‐q "^#!" $1; then

sed '1i #!/bin/bash' $1

sed '2i #Description: '

fi

#因为每个脚本的功能不同,作用不同,所以在给对象脚本添加完解释器信息,以及Description 后还希望

#继续编辑具体的脚本功能的描述信息,这里直接使用vim 把对象脚本打开,并且光标跳转到该文件的第2 行

vim +2 $1

4. 自动化部署varnish 源码包软件

#本脚本需要提前下载varnish‐3.0.6.tar.gz 这样一个源码包软件,该脚本即可用自动源码安装部署软件

yum ‐y install gcc readline‐devel pcre‐devel

useradd ‐s /sbin/nologin varnish

tar ‐xf varnish‐3.0.6.tar.gz

cd varnish‐3.0.6

#使用configure,make,make install 源码安装软件包

./configure ‐‐prefix=/usr/local/varnish

make && make install

#在源码包目录下,将相应的配置文件拷贝到Linux 系统文件系统中

#默认安装完成后,不会自动拷贝或安装配置文件到Linux 系统,所以需要手动cp 复制配置文件

#并使用uuidgen 生成一个随机密钥的配置文件

cp redhat/varnish.initrc /etc/init.d/varnish

cp redhat/varnish.sysconfig /etc/sysconfig/varnish

cp redhat/varnish_reload_vcl /usr/bin/

ln ‐s /usr/local/varnish/sbin/varnishd /usr/sbin/

ln ‐s /usr/local/varnish/bin/* /usr/bin

mkdir /etc/varnish

cp /usr/local/varnish/etc/varnish/default.vcl /etc/varnish/

uuidgen > /etc/varnish/secret

5. 编写nginx 启动脚本

#本脚本编写完成后,放置在/etc/init.d/目录下,就可以被Linux 系统自动识别到该脚本

#如果本脚本名为/etc/init.d/nginx,则service nginx start 就可以启动该服务

#service nginx stop 就可以关闭服务

#service nginx restart 可以重启服务

#service nginx status 可以查看服务状态

program=/usr/local/nginx/sbin/nginx

pid=/usr/local/nginx/logs/nginx.pid

start(){

if [ ‐f $pid ];then

echo "nginx 服务已经处于开启状态"

else

$program

fi

stop(){

if [ ‐! ‐f $pid ];then

echo "nginx 服务已经关闭"

else

$program ‐s stop

echo "关闭服务ok"

fi

}

status(){

if [ ‐f $pid ];then

echo "服务正在运行…"

else

echo "服务已经关闭"

fi

}

case $1 in

start)

start;;

stop)

stop;;

restart)

stop

sleep 1

start;;

status)

status;;

*)

echo "你输入的语法格式错误"

esac

6. 自动对磁盘分区、格式化、挂载

#对虚拟机的vdb 磁盘进行分区格式化,使用<<将需要的分区指令导入给程序fdisk

#n(新建分区),p(创建主分区),1(分区编号为1),两个空白行(两个回车,相当于将整个磁盘分一个区)

#注意:1 后面的两个回车(空白行)是必须的!

fdisk /dev/vdb << EOF

n

p

1

wq

EOF

#格式化刚刚创建好的分区

mkfs.xfs /dev/vdb1

#创建挂载点目录

if [ ‐e /data ]; then

exit

fi

mkdir /data

#自动挂载刚刚创建的分区,并设置开机自动挂载该分区

echo '/dev/vdb1 /data xfs defaults 1 2' >> /etc/fstab

mount ‐a

7. 自动优化Linux 内核参数

#!/bin/bash

#脚本针对RHEL7

cat >> /usr/lib/sysctl.d/00‐system.conf <

fs.file‐max=65535

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 5

net.ipv4.tcp_syn_retries = 5

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_fin_timeout = 30

#net.ipv4.tcp_keepalive_time = 120

net.ipv4.ip_local_port_range = 1024 65535

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 5010 641280 5010 128

net.core.wmem_default=262144

net.core.wmem_max=262144

net.core.rmem_default=4194304

net.core.rmem_max=4194304

net.ipv4.tcp_fin_timeout = 10

net.ipv4.tcp_keepalive_time = 30

net.ipv4.tcp_window_scaling = 0

net.ipv4.tcp_sack = 0

EOF

sysctl –p

8. 切割Nginx 日志文件(防止单个文件过大,后期处理很困难)

#mkdir /data/scripts

#vim /data/scripts/nginx_log.sh

#!/bin/bash

logs_path="/usr/local/nginx/logs/"

mv logspathaccess.log{logs_path}access.log {logs_path}access_$(date ‐d "yesterday" +"%Y%m%d").log

kill ‐USR1 `cat /usr/local/nginx/logs/nginx.pid`

# chmod +x /data/scripts/nginx_log.sh

#crontab ‐e #脚本写完后,将脚本放入计划任务每天执行一次脚本

0 1 * * * /data/scripts/nginx_log.sh

9. 检测MySQL 数据库连接数量

#本脚本每2 秒检测一次MySQL 并发连接数,可以将本脚本设置为开机启动脚本,或在特定时间段执行

#以满足对MySQL 数据库的监控需求,查看MySQL 连接是否正常

#本案例中的用户名和密码需要根据实际情况修改后方可使用

log_file=/var/log/mysql_count.log

user=root

passwd=123456

while :

do

sleep 2

count=`mysqladmin ‐u "user"‐p"user" ‐p "passwd" status | awk '{print $4}'`

echo "`date +%Y‐%m‐%d` 并发连接数为:count">>count" >> log_file

done

10. 根据md5 校验码,检测文件是否被修改

#!/bin/bash

#本示例脚本检测的是/etc 目录下所有的conf 结尾的文件,根据实际情况,您可以修改为其他目录或文件

#本脚本在目标数据没有被修改时执行一次,当怀疑数据被人篡改,再执行一次

#将两次执行的结果做对比,MD5 码发生改变的文件,就是被人篡改的文件

for i in $(ls /etc/*.conf)

do

md5sum "$i" >> /var/log/conf_file.log

done

如果想上手操作练代码的同学们可以通过阿里云ecs服务器免费试用参与!

入口:新老同学免费试用


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
18天前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
56 1
|
4天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
19 2
6种方法打造出色的Shell脚本
|
9天前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
34 6
|
6天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
20天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
28 1
|
26天前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
54 4
|
26天前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
52 3
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
60 12
|
1月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
37 2
|
28天前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
20 0