每天练习50个shell

1、统计日志每天IP访问量前十

awk '{print $1}' 1.log | sort -n | uniq -c | sort -n

解释:
(1)awk 命令在分段方面比较有优势,这里的{print $1}将第一段打印出来,awk可以用-F指定分隔符,如果不指定分隔符,默认就以空白字符(比如空格、tab等),本题中,IP地址就是第一段。
(2)sort 命令就是排序,-n选项表示以数字的形式排序。如果不加-n,则以ASCII排序,本题的IP地址用数字的形式排序更易区分。
(3)uniq 命令用来去重复,一个文本如果有多行内容是一模一样的,就使用uniq命令将相同的内容删除,只保留一行。-c选项作用是计算重复的行数。所以,uniq -c 的作用正好就统计了ip的访问量。不过,要注意,uniq去重要在排序之后进行。
(4)最后的sort -n意思是按访问量大小来排序,请求量越大的ip排在越后面。如果加一个-r选项,sort -nr,就是倒序排序。
或者

awk '{sum[$1]+=1};END{for(a in sum)print(sum[a],a)}' 1.log | sort -nr|head -n 5

解释:
这条命令中$1 就表示日志中的IP地址,用IP地址作为数组的下标,每发现一个相同的IP地址,就统计数量加1;当awk遍历日志文件1.log 完毕,再循环输出数组 sum 的结果,要注意数组的下标是 ip地址。
后面的 head -n 5 是为了输出出现访问次数最高的5个访问ip地址。

2.计算linux系统所有进程占用内存大小和
top或者ps可以获取每个进程大内存使用大小。获得大小之后,通过一个循环计算他们的和了。

grep Pss /proc/[0-9]*/smaps | awk '{sum+=$2};END{print sum}'

(1)grep 命令可以遍历目录里的文件,然后将符合匹配字符的行抓取出来;
(2)awk 命令遍历grep 输出的结果,统计进程使用内存的和。
(3)在 /proc 目录下,有很多和进程有关的数据,读者可以自己去研究一下。
需要注意的是,全部进程占用的内存并不等于 free 命令所显示的 “used memory”,因为“used memory”不仅包含了进程所占用的内存,还包含cache/buffer以及kernel动态分配的内存等等

3.批量修改.txt文件未.txt.bak,并打包所有的.bak文件为123.tar.gz,然后再批量还原文件名。

#用到的命令:
find / -maxdepth 1 -type f -name "*.txt" > /tmp/file.txt
#循环逐行读取/tmp/file.txt文件修改文件名为txt.bak
while read line;
do
mv $line $line.bak
done</tmp/file.txt
#压缩打包
d='data +%Y%m%d%H%M%S'
mkdir /tmp/123$d
for f in 'cat /tmp/file.txt'
do
cp $f.bak /tmp/123
$d
done
cd /tmp
tar czf 123.tar.gz ./123_$d
for f in 'cat /tmp/file.txt';
do
mv $f.bak $f
done

(1)如果只是遍历目录,找出某种文件,然后修改一下文件名,其实一条命令就可以搞定:

find /usr/local/sbin/work -type f -name "*.txt" -print0 | xargs -d '\0' mv {} {}.bak

要注意,find 命令的查找路径需要使用绝对路径,不要用相对路径。如果用 xargs 命令接在后面,则用 -print0 选项,将某些包含空格的特殊文件名,也包含在内,不会处理错误。

(2)脚本中的 while 循环这种方式其实也是很常见的,将结果临时保存在一个文件中,然后再通过while 循环读取处理。
(3)大家看到脚本中多次使用 /tmp/file.txt 这个文件了吧。将 .txt 结尾的文件保存到一个文件中,这种办法就恨到地解决了我们在习题分析中提出的第3个问题啦。
(4)我的所有.txt 结尾的文件都在 /usr/local/src/sbin/work 目录。
​ 如果你没有 .txt 结尾的文件,可以用下面的命令生成一堆,用来做实验:

for i in seq 30;do touch $i.txt;done

4.检测端口服务
判断本机的80端口是否开启着。

检测脚本:
cat check_80.sh

#!/bin/bashbr/>ma="936172842@qq.com"
if netstat -lntp | grep -q ':80'
then
exit 0
fi
/usr/local/apache2.4/bin/apachectl restart >/dev/null 2>/dev/null
python /usr/local/sbin/work/mail.py $ma "port_80" "prot 80 down"

n='pgrep -l httpd | wc -l'
echo $n
if [$n -eq 0];then
/usr/local/apache2.4/bin/apachectl start 2>/tmp/http.error
fi

if [-s /tmp/http.error]
then
python /usr/local/sbin/work/mail.py $ma "apache_restart_wrong" "'cat /tmp/http.error'"
fi

转载于:https://blog.51cto.com/13120271/2317352

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Tomcat】Tomcat配置与优化(内存、并发、管理)【自己配置】

一、JVM内存配置优化 主要通过以下的几个jvm参数来设置堆内存的&#xff1a; -Xmx512m 最大总堆内存&#xff0c;一般设置为物理内存的1/4 -Xms512m 初始总堆内存&#xff0c;一般将它设置的和最大堆内存一样大&#xff0c;这样就不需要根据当前堆使用情况而调整堆的大…

oracle 网关下载,oracle透明网关访问sqlserver2000

oracle透明网关访问sqlserver2000介绍oracle 10g透明网关访问sqlserver2000一、环境如下:ORACLE 10g 安装在:192.168.0.250 的window2003 server(版本&#xff1a;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production) SqlServer 2000安装在:192.16…

C++和C#的指针小解

昨天和赵崇说了一下工作的事情&#xff0c;说起了性能问题就讨论起了数据结果和指针对性能的影响。曾经一直没有想到这方面的事情&#xff0c;这几天专门抽时间回想一下这方面的知识&#xff0c;然后一点一点的总结一下&#xff0c;看看数据结构和指针在咱们代码中是怎样实现效…

使用RoleBasedAuthorization实现基于用户角色的访问权限控制

本文将介绍如何通过 Sang.AspNetCore.RoleBasedAuthorization[1] 库实现 RBAC 权限管理。使用介绍Step 1添加库 Sang.AspNetCore.RoleBasedAuthorizationInstall-Package Sang.AspNetCore.RoleBasedAuthorizationStep 2在 Program.cs 中添加builder.Services.AddSangRoleBasedA…

【2018-11-15】中证1000指数的估值详情

中证1000指数选取中证500和沪深300指数样本股以外的&#xff0c;流动性好的1000只股票组成&#xff0c;与沪深300 和中证500 等形成互补。 中证1000的个股大多数是由市场上流通市值排名在 800 到 1800 名之间的个股组成&#xff0c;是一个适用范围较广的小盘指数。 中证1000的…

[Leetcode Week15]Populating Next Right Pointers in Each Node

Populating Next Right Pointers in Each Node 题解 原创文章&#xff0c;拒绝转载 题目来源&#xff1a;https://leetcode.com/problems/populating-next-right-pointers-in-each-node/description/ Description Given a binary tree struct TreeLinkNode {TreeLinkNode *left…

php 数组 1 开始,php数组使用1

1、array_values($arr) 将数组转换成索引数组$arr1 [id>10,name>杨过,sex>male,salary>8900];echo .var_export(array_values($arr1),true).;2、array_column($arr,$col,$boll); 获取多维数组的列表组成的数组。$arr2 [];$arr2 [[id>10,name>杨过,sex>…

印度光伏巨头Adani与华为签署500MW采购合同

日前&#xff0c;印度光伏巨头Adani与华为签订了采购合同。Adani未来一年的项目全部采用华为FusionSolar3.0智能光伏解决方案&#xff0c;首期500MW采购合同已经签署&#xff0c;将采购最新的智能光伏控制器&#xff08;组串逆变器&#xff09;SUN2000-43KTL、数据采集器SmartL…

宣布 .NET MAUI 支持 .NET 7 RC 2

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;6分钟)支持 .NET 7 Release Candidate 2 的 .NET 多平台应用程序 UI (MAUI) 现在可在 Windows 和 Mac 上的 Visual Studio 17.4 Preview 4 中使用。RC2 的主要主题是质量和对带有 iOS 16 的 Xcode 14 的 .NET 支持。此…

linux c文件操作,Linux C 文件的输入/输出操作

10.1 文件I/O操作概述在Linux系统中&#xff0c;文件I/O操作可以分为两类&#xff0c;一类是基于文件描述符的I/O操作&#xff0c;另一类是基于数据流的I/O操作。10.1.1 文件描述符简介在文件操作一章中&#xff0c;也经常提到文件描述符这个概念。所谓文件描述符&#xff0c;就…

个人中心标签页导航

新页面userbase.html,用<ul ><li role"presentation"> 实现标签页导航。<ul class"nav nav-tabs"> <li role"presentation"><a href"#">Home</a></li> <li role"presentation&qu…

智慧城市免费WiFi覆盖怎么实施?武邑开启智慧生活模式

“真没想到武邑这个国家级贫困县也能够随地使用无线网络&#xff0c;我初次考察就喜欢上了这里。”准备前来武邑县投资的客商王先生说。日前&#xff0c;随着县城广场、商场等公共场所的免费WiFi覆盖&#xff0c;及移动电子商务借势O2O的快速发展&#xff0c;衡水市武邑县正在逐…

Uno开发的小游戏

大家好&#xff0c;我是沙漠尽头的狼。刚在微信群里逛&#xff0c;有网友发了Uno的在线小游戏&#xff0c;站长觉得不错&#xff0c;简单分享下&#xff1a;群聊涨见识Uno是什么&#xff1f;使用 C# 和 WinUI 实现像素完美的多平台应用程序&#xff0c;用于构建适用于 Windows、…

sqlplus命令行登录oracle数据库的N种方法盘点

欢迎访问我的个人博客IT废柴&#xff0c;本文永久链接移至&#xff1a;sqlplus命令行登录oracle数据库的N种方法盘点 sqlplus有几种登陆方式Oracle数据库&#xff0c; 比如&#xff1a; 1.以操作系统权限认证的oracle sys管理员登陆 C: > sqlplus "/as sysdba" 2…

拉美光伏新兴市场热潮将至

国际油价下滑对油气生产国的影响是不言而喻的&#xff0c;受此拖累&#xff0c;可再生能源产业发展也承受了一定压力。然而&#xff0c;在多国拥有油气资源的拉美地区&#xff0c;情况却恰恰相反&#xff0c;许多国家的可再生能源产业非但没有受低油价拖累&#xff0c;反而快速…

linux下常见生产脚本,不看后悔的Linux生产服务器Shell脚本分享(2)

一、MySQL的热备份脚本这是MySQL的备份方式之一&#xff0c;脚本如下&#xff1a;#!/bin/bashPATH/usr/local/sbin:/usr/bin:/bin# The Directory of BackupBACKDIR/usr/mysql_backup# The Password of MySQLROOTPASSpassword# Remake the Directory of Backuprm -rf $BACKDIRm…

兄弟连学python——MongoDB相关

1.常用的命令 show dbs 显示数据库列表use dbname 进入dbname数据库&#xff0c;大小写敏感&#xff0c;没有这个数据库也不要紧show collections 显示数据库中的集合&#xff0c;相当于表格2.创建&新增 db.users.save({"name":"lecaf"}) …

WPF-12 路由事件之二

WPF 为我们提供了许多不同的事件处理机制——它们是冒泡、隧道和直接的。这些都称为路由事件直接事件直接在事件源上处理&#xff0c;这个有点像WinForms中的按钮OnClick事件&#xff0c;直接在事件处理程序中处理业务冒泡事件当事件没有被元素&#xff08;比如一个文本框&…

对01背包的分析与理解(图文)

首先谢谢Christal_R的文章(点击转到链接)让我学会01背包 本文较长&#xff0c;但是长也意味着比较详细&#xff0c;希望您可以耐心读完。 题目: 现在有一个背包(容器),它的体积(容量)为V,现在有N种物品(每个物品只有一个),每个物品的价值W[i]和占用空间C[i]都会由输入给出,现在…

linux内核源码剖析 博客,【Linux内存源码分析】页面迁移

页面迁移其实是伙伴管理算法中的一部分&#xff0c;鉴于其特殊性&#xff0c;特地另行分析。它是2007年的时候&#xff0c;2.6.24内核版本开发时&#xff0c;新增碎片减少策略(the fragmentation reduction strategy)所引入的。该策略也称之为反碎片技术(anti-gragmentation)。…