[工具] Shell 显示使用 swap 的进程

介绍

基本信息

作者:朱明宇
名称:显示使用 swap 的进程
作用:显示使用 swap 的进程

使用方法

1. 给此脚本添加执行权限
2. 执行此脚本
3. 执行结果会输出到脚本同目录下的 swapcheck.txt 目录中

脚本

#!/bin/bash

echo > swapcheck.txt

for pid in `ls /proc/ | egrep ^[0-9] | awk '$0 > 100'`
do 

        ls /proc/$pid &> /dev/null
        
        if [ $? -ne 0 ];then
                continue
        fi

        size=`awk '/Swap:/{a=a+$2}END{print a}' /proc/$pid/smaps` 
        name=`ps -aux | egrep $pid`

        if [ -z $size ];then
                continue
        fi

        if [ $size -eq 0 ];then
                continue
        fi

        echo "$[size]k $pid \"$name\"" >> swapcheck.txt
        echo  >> swapcheck.txt

done

[内容] Linux if 条件判断 (转载)

shell-if表达式(-f,-d,-s,-r,-w,-x,-eq,-ne,-ge,-gt,-le,-lt )

文件表达式

if [ -f file ] 如果文件存在
if [ -d … ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行
整数变量表达式

if [ int1 -eq int2 ] 如果int1等于int2
if [ int1 -ne int2 ] 如果不等于
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
字符串变量表达式

If [ $a = $b ] 如果string1等于string2
字符串允许使用赋值号做等号
if [ $string1 != $string2 ] 如果string1不等于string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)
s​h​e​l​l​中​条​件​判​断​i​f​中​的​-​z​到​-​d​的​意​思

[ -a FILE ] 如果 FILE 存在则为真。
[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。

[ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。

[ -d FILE ] 如果 FILE 存在且是一个目录则为真。

[ -e FILE ] 如果 FILE 存在则为真。
[ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。

[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。
[ -h FILE ] 如果 FILE 存在且是一个符号连接则为真。

[ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。 [

-p FILE ] 如果 FILE 存在且是一个名字管道(F如果O)则为真。

[ -r FILE ] 如果 FILE 存在且是可读的则为真。

[ -s FILE ] 如果 FILE 存在且大小不为0则为真。
[ -t FD ] 如果文件描述符 FD 打开且指向一个终端则为真。

[ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。

[ -w FILE ] 如果 FILE 如果 FILE 存在且是可写的则为真。

[ -x FILE ] 如果 FILE 存在且是可执行的则为真。

[ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。

[ -G FILE ] 如果 FILE 存在且属有效用户组则为真。 [ -L FILE ] 如果 FILE 存在且是一个符号连接则为真。
[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。
[ -S FILE ] 如果 FILE 存在且是一个套接字则为真。
[ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2,or 如果 FILE1 exists and FILE2 does not则为真。
[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。
[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。

[ -o OPTIONNAME ] 如果 shell选项 “OPTIONNAME” 开启则为真。

[ -z STRING ] “STRING” 的长度为零则为真。
————————————————
版权声明:本文为CSDN博主「打卤」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liyyzz33/java/article/details/84836255

注明:所有转载内容皆直接从被转载文章网页的标题和内容的文本中复制而来

CC 4.0 BY-SA 版权协议网址:https://creativecommons.org/licenses/by-sa/4.0/deed.z
站主补充:
补充一:Shell if 单判断的格式
if [ <judgment condition> ];then
<step to perform>
fi

补充二:Shell if 双判断的格式
if [ <judgment condition> ];then
<step to perform>
else
<step to perform>
fi

补充三:Shell if 多判断的格式
if [ <judgment condition> ];then
<step to perform>
elif
<step to perform>
else
<step to perform>
fi

补充四:Shell if 多条件判断的格式
4.1 与条件的判断
if [ <judgment condition> -a <judgment condition> ];then
<step to perform>
fi

或者:

if [ <judgment condition> ] && [ <judgment condition> ];then
<step to perform>
fi

4.2 或条件的判断
if [ <judgment condition> -o <judgment condition> ];then
<step to perform>
fi

或者:

if [ <judgment condition> ] || [ <judgment condition> ];then
<step to perform>
fi

补充五:Shell if 对条件进行转换后再判断
将变量转换成大写以后再进行判断
if [ `echo $<variable> | tr 'a-z' 'A-Z'` = "<character string>" ];then
<step to perform>
fi

[内容] Linux 硬盘性能调优的思路

内容一:提高硬盘吞吐量

1.1 显示硬盘现在设置的吞吐量

# cat /sys/block/<partition name>/queue/nr_requests
128

1.2 提高硬盘的吞吐量

# echo 512 > /sys/block/<partition name>/queue/nr_requests

(补充:这里以降硬盘的吞吐量提高到 512 为例)

内容二:修改硬盘的 I/O 调度算法

2.1 硬盘调度算法种类

1) CFQ:完全公平排队 I/O 调度程序,是通用型服务器、多媒体应用和桌面系统的最佳选择
2) NOOP:电梯式调度程序,倾向于牺牲读操作而提高写操作
3) Deadline:截至时间调度程序,防止写操作因为不能进行读操作而被牺牲的情况
4) AS:预料 I/O 调度程序,适用于写操作量需求较大的服务器,不适用于数据库服务器

2.2 显示当前硬盘被设置的 I/O 调度算法

2.2.1 显示系统当前所有硬盘默认的 I/O 调度算法
# dmesg | grep -i scheduler
2.2.2 显示某一个分区当前的 I/O 调度算法
# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]

(补充:这里中括号 “[]” 以内的调度算法名就是当前使用的调度算法)

2.3 临时修改某一个分区的 I/O 调度算法

# echo noop > /sys/block/<partition name>/queue/scheduler

(注意:此种修改方式会在重启后失效)

2.4 永久修改系统默认的 I/O 调度算法

# grubby --update-kernel=ALL --args="elevator=<scheduling algorithm name>"

(注意:此种修改方式需要重启才会生效)