作業管理【Ubuntu-shell】
阿新 • • 發佈:2018-12-24
作業管理:
每一條shell命令的輸入--->一個作業
cat -n /etc/hosts | more &
作業,前臺互動執行,後臺無需互動加“&”
--------------------------------------
jobs 【選項】 【作業號】:檢視當前系統中後臺作業
-l:列出詳細作業資訊
-s:列出停止暫停狀態的作業
-r:列出執行狀態的作業
vim &
top &
vim &
jobs -l
#[3]+ 23803 停止 (tty 輸出) vim
#[作業號]+第一個放置在後臺 -第二個放在後臺 23803程序PID號
#vim 原本需在前臺互動,在後臺會暫停
-------------------------------------------------------------
fg 作業號:使作業在前臺執行
bg 作業號:使作業在後臺執行
-----------------------------------------------------
#!/bin/bash
count=$1
while [ $count -gt 0 ]
do
count=$[ $count - 1 ]
sleep 0.001
done
echo "process $$finish."
#$$ 當前指令碼的程序PID號
#process.sh
-------------------------------------------------
vim &
top &
source process.sh 10000 &
jobs -l
fg process.sh的作業號
jobs -l
bg process.sh作業號
jobs -l
---------------------------------------
一次性作業
service atd status:
at [選項】 【作業執行時間】:指定時間執行一次作業
-l :列出佇列中的作業
-c:後加作業號引數,檢視指定作業號的內容
-f:後加所要執行的作業的檔案路徑
-d:刪除指定的作業號,引數作業號
at now +1min
#wall linux廣播
at -l
batch:在負載較大時,暫緩排程作業
(source process.sh 10000 &);(source process.sh 10000 &);(source process.sh 10000 &)
cat /proc/loadavg
batch
#wall linux
at -l
-----------------------------------------
週期性作業:
守護程序crond將週期性作業分類:全域性作業、個人使用者作業。
sudo service crond status
cat /etc/crontab
vim /etc/crontab
#全域性作業執行計劃配置檔案:/etc/crontab
#作業執行計劃模板:分鐘(0-59) 小時(0-23) 日期(1-31) 月份(1-12) 星期(0-6,星期天0或7) 【使用者名稱,如:root】 【執行的命令】
crontab 【選項】:維護個人使用者的週期性作業計劃檔案
-u:後加使用者名稱引數,指定配置使用者的cron作業執行計劃檔案
-e:編輯當前使用者作業執行計劃
-l:顯示當前使用者作業執行計劃
-r:刪除當前使用者的作業執行計劃
#個人使用者作業執行計劃配置檔案:/var/spool/cron/使用者名稱命名的cron檔案
----------------------------------
制定監控登入使用者人數的作業:
#vim /etc/crontab---->:0-59 * * * * root 【命令】
su root
#!/bin/bash
#ip1,ip2,limit作業執行的引數,表示過濾的IP地址範圍和人數限制
ip1="\(192\.168\.126\.[1-9]\)"
ip2="\(192\.168\.126\.[1-9][0-9]\{1,2\}\)"
limit=0
strdate=`date "+%Y-%m-%d %H:%M:%S" `
count1=`who | grep $ip1 | wc -l`
count2=`who | grep $ip2 | wc -l`
count=$[ $count1 + $count2 ]
if [ $count -gt $limit ]
then
echo "$strdate:current users count:$count,exceed limit:$limit" >> /var/log/statiplog
fi
#儲存olwatch.sh,/root/cron/olwatch.sh
who
#vim /etc/crontab------>0,15,30,45 * * * * root /root/cron/olwatch.sh
service crond status
chmod u+x /root/cron/olwatch.sh
source /root/cron/olwatch.sh
tail /var/log/statiplog
date
tail /var/log/statiplog
---------------------------------------------
制定定期備份資料的作業計劃:
su root
#!/bin/bash
filelist=`cat ${HOME}/cron/baklist`
# $HOME:/root
strdate=`date "+%Y%m"`
backupdir=${HOME}/backup${strdate}
if [ ! -e $backupdir ]
then
mkdir $HOME/$backupdir
fi
echo "$strdate:backup start,the directory name is $backupdir" >> /var/log/baklog
for filename in $filelist
do
if [ -e $filename ]
then
cp $filename "$backupdir/" 2 > /dev/null
if [ $? -ne 0 ]
# $?:表示最後整句之前執行的命令狀態是否等於0
# $?等於0表示上一個命令執行成功 否則執行出錯
# -ne:不等於
then
echo "$strdate:copy for $filename failed" >> /var/log/baklog
fi
fi
done
#cronbackup.sh--->/root/cron/cronbackup.sh儲存
vim /root/cron/baklist
#編輯加上:/root/crontab
#編輯加上:/etc/hosts
date
vim /etc/crontab
#--->編輯加上:10 11 3 * * root /root/cron/cronbackup.sh
date
ls -R /root
cat /var/log/backlog #檢視備份日誌