Linux_自动关机及计算任务管理脚本

1.自动关机脚本

 

每隔一定时间检测一次,如果不存在某个进程就关机,如果存在就休眠。

用法: ./脚本名 进程名 休眠时间

注意:要有关机的权限(一般来说是root用户或者有sudoer权限)!

建议用法: screen ./脚本名 进程名 休眠时间

#/bin/bash

 

while :

do

    thread_num=`ps -e |grep $1 | wc -l`

    if [ $thread_num -eq 0 ]; then

       date >> shutdowntime.log

       shutdown -h

       exit

   else

       echo "Sleeping $2 second..."

       sleep $2

   fi

done

2.计算任务管理脚本

 

简单的计算任务管理:检测某个为某个名字的进程的个数,如果不是少于设定的个数,就提交任务,直到进程数和设定的相等;如果进程数大于等于设定个数,就休眠一定时间。

用法:./脚本名 程序名 任务数 循环次数

建议用screen运行。

#!/bin/bash

 

pro_name=$1

task_num=$2

cycle_num=$3

 

i=1

while (( $i <= $cycle_num ))

do

  pro_num=$(ps -A | grep $pro_name |wc -l)

 

  if (( $pro_num < $task_num )); then

    echo $i

    #在这里写要执行程序

    sleep 1s

    i=$(($i+1))

  else

    echo 'sleeping 600s'

    sleep 600s

  fi

done

另外,可以在循环中针对时段控制任务数:

core_num=`cat /proc/cpuinfo |grep 'core id' | wc -l`

 

time_hour=`date +%H`

if (( $time_hour >= 23 )) || (( $time_hour < 7 ); then

     task_num=$core_num #晚上23:00以后到早上7点前这段时间,就按机器的core数来提任务

else

     task_num=$(( $core_num / 2 )) #其它时间只占用一半的core数来用于任务

fi

在执行完后所有该做循环这后,也可以加上关机的命令。

猜你喜欢

转载自mikzhang.iteye.com/blog/1850138