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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 【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服务器免费试用参与!

入口:新老同学免费试用


相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
392 9
|
2月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
259 3
|
5月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
241 60
|
2月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
4月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
471 1
|
6月前
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
161 17
|
6月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
181 4
|
6月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
367 3
|
7月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
592 25
|
7月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
566 28

热门文章

最新文章