溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux如何自動關(guān)機與計算任務(wù)管理

發(fā)布時間:2021-11-08 11:00:42 來源:億速云 閱讀:180 作者:小新 欄目:系統(tǒng)運維

這篇文章主要為大家展示了“Linux如何自動關(guān)機與計算任務(wù)管理”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Linux如何自動關(guān)機與計算任務(wù)管理”這篇文章吧。

1.自動關(guān)機腳本

每隔一定時間檢測一次,如果不存在某個進程就關(guān)機,如果存在就休眠。

用法: ./腳本名 進程名 休眠時間

注意:要有關(guān)機的權(quán)限(一般來說是root用戶或者有sudoer權(quán)限)!

建議用法: 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.計算任務(wù)管理腳本

簡單的計算任務(wù)管理:檢測某個為某個名字的進程的個數(shù),如果不是少于設(shè)定的個數(shù),就提交任務(wù),直到進程數(shù)和設(shè)定的相等;如果進程數(shù)大于等于設(shè)定個數(shù),就休眠一定時間。

用法:./腳本名 程序名 任務(wù)數(shù) 循環(huán)次數(shù)

建議用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
    #在這里寫要執(zhí)行程序
    sleep 1s
    i=$(($i+1))
  else
    echo 'sleeping 600s'
    sleep 600s
  fi
done

另外,可以在循環(huán)中針對時段控制任務(wù)數(shù):

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數(shù)來提任務(wù)
else
     task_num=$(( $core_num / 2 )) #其它時間只占用一半的core數(shù)來用于任務(wù)
fi

在執(zhí)行完后所有該做循環(huán)這后,也可以加上關(guān)機的命令。

以上是“Linux如何自動關(guān)機與計算任務(wù)管理”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI