分类 shell使用小技巧 下的文章

cron应用flock+timeout

timeout -s SIGINT 100 flock -xn /tmp/lock /path/to/php /path/to/file

# 这样写的好处是在上一个请求还未完成,下个请求动作不会发生直至超时

shell定期清除文件

#!/bin/bash
# 删除tmp目录下7天未访问的文件
upload_tmp='/root/tmp'
expire_day=7

function ergodic() {
    for file in `ls $1` 
    do  
        if [ -d $1"/"$file ]
        then
            ergodic $1"/"$file  
        else
            newFile=$1"/"$file
            accessTime=`stat -c %X ${newFile}`
            curTime=`date +%s`
            diff=`expr ${curTime} - ${accessTime}`
            diffDay=`awk -v num=${diff} 'BEGIN{printf "%.2f\n",(num/60/60/24)}'`
            # 除以小数
            ret=`awk -v num1=${diffDay} -v num2=${expire_day} 'BEGIN{print(num1>num2)?"0":"1"}'`
            # 小数比较
            if [ $ret -eq 0 ] 
            then
                # echo ${newFile}
                \rm -rf ${newFile}
            fi  
        fi  
    done  
}

ergodic ${upload_tmp}

使用/dev/tty读取人工输入

#!/bin/bash

printf "Enter new password: "    # 提示输入
stty -echo                       # 关闭自动打印输入字符的功能
read password < /dev/tty         # 读取密码
printf "\nEnter again: "         # 换行后提示再输入一次
read password2 < /dev/tty        # 再读取一次以确认
printf "\n"                      # 换行
stty echo                        # 记着打开自动打印输入字符的功能
echo "Password = " $password     # 输出读入变量
echo "Password2 = " $password2
echo "All Done"

查看系统运行相关情况指令

CPU的实时监控工具(mpstat)

报告当前系统中所有CPU的实时运行状况

  1. 语法 : mpstat [-P {|ALL}] [internal [count]]
-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息
  1. 字段表示
%user   在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/total)*100
%nice   在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100
%sys    在internal时间段里,内核时间(%)       (system/total)*100
%iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
%irq    在internal时间段里,硬中断时间(%)     (irq/total)*100
%soft   在internal时间段里,软中断时间(%)     (softirq/total)*100
%idle   在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

当前运行进程的实时监控工具(pidstat)

pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等

  1. 语法 :
-l  显示该进程和CPU相关的信息(command列中可以显示命令的完整路径名和命令的参数)。
-d  显示该进程和设备IO相关的信息。
-r  显示该进程和内存相关的信息。
-w  显示该进程和任务时间片切换相关的信息。
-t  显示在该进程内正在运行的线程相关的信息。
-p  后面紧跟着带监控的进程id或ALL(表示所有进程),如不指定该选项,将监控当前系统正在运行的所有进程。
  1. 字段表示
%usr:      该进程在用户态的CPU使用率。
%system:   该进程在内核态(系统级)的CPU使用率。
%CPU:      该进程的总CPU使用率,如果在SMP环境下,该值将除以CPU的数量,以表示每CPU的数据。
CPU:        该进程所依附的CPU编号(0表示第一个CPU)