每天練習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.pswp.cn/news/281627.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281627.shtml
英文地址,請注明出處:http://en.pswp.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)。…