0%

实用的Shell脚本汇总

实用的Shell脚本汇总

定时清除文件

删除 /usr/db_backup/ 目录中7天前且文件后缀为 .log 的文件

1
2
3
4
find /usr/db_backup/ -type f -name '*.log' -mtime +7 -type f -delete

find /usr/resin-pro-4.0.45/ -type f -name '*.zip' -mtime +15 -type f -delete
find /usr/safesteady/elk/download/ -type f -name '*' -mtime +1 -type f -delete

删除 /usr/db_backup/ 目录中10天前的所有文件

1
find /usr/translation_backup -type f -mtime +10 | xargs rm -rf

删除 /usr/translation_backup 目录中大于50M的文件

1
find /usr/translation_backup -size +50M -exec rm {} \;

按关键字批量杀进程

杀掉所有包含 downloader-jar 字符串的相关进程

1
ps -ef | grep "downloader-jar" | grep -v grep | awk '{print "kill -9 " $2}'|sh

查看连接数

通过 netstat 命令 查看Linux中网络系统状态信息

查看服务器所有状态的数量:

1
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

查看服务器连接状态的数量:

1
netstat -nat|grep ESTABLISHED|wc -l

查看ip连接数:

1
netstat -tun|awk '{print $5}'|cut -d : -f1|sort|uniq -c|sort -n

网络连接状态共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的:

  1. LISTEN:首先服务端需要打开一个socket进行监听,状态为 LISTEN,侦听来自远方TCP端口的连接请求 ;
  2. SYN_SENT:客户端通过应用程序调用connect进行active open,于是客户端tcp发送一个SYN以请求建立一个连接,之后状态置为 SYN_SENT,在发送连接请求后等待匹配的连接请求;
  3. SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN,之后状态置为,在收到和发送一个连接请求后等待对连接请求的确认;
  4. ESTABLISHED:代表一个打开的连接,双方可以进行或已经在数据交互了, 代表一个打开的连接,数据可以传送给用户;
  5. FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态, 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
  6. CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT, 等待从本地用户发来的连接中断请求;
  7. FIN_WAIT2:主动关闭端接到ACK后,就进入了 FIN-WAIT-2,从远程TCP等待连接中断请求;
  8. LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程 序将调用CLOSE关闭连接,这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK,等待原来发向远程TCP的连接中断请求的确认;
  9. TIME_WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态,等待足够的时间以确保远程TCP接收到连接中断请求的确认;
  10. CLOSING: 比较少见,等待远程TCP对连接中断的确认;
  11. CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态,连接结束,没有任何连接状态;
  12. UNKNOWN:未知的Socket状态;

查看磁盘IO使用状况

通过 iotop 命令 查看磁盘IO使用状况

相关选项:

1
2
3
4
5
6
-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。
-u USER:监控的进程用户。

查看实时流量

通过 iftop 命令 查看实时流量

第一行为带宽,这里为1Mbit,不是字节哦。

连接列表,最后三列分别是2秒,10秒和40秒的平均流量, => 代表发送,<= 代表接收。

最后三行表示发送,接收和全部的流量。第二列为你运行iftop到目前流量,第三列为高峰值,第四列为平均值。

更多资料

  1. 23 个开箱即用的实用 Shell 脚本分享
  2. 9个实战及面试常用Shell脚本编写
  3. Linux 运维必备的13款实用工具,赶紧收藏
坚持原创技术分享,您的支持将鼓励我继续创作!