shell實戰訓練營Day15

寫個shell,看看你的Linux系統中是否有自定義用戶(普通用戶),若是有,一共有幾個?

#!/bin/bash
v=awk -F 'release ' '{print $2}' /etc/redhat-release|cut -d "." -f1
panduan ()
{
if [ $1 -eq 0 ]
then
echo "meiyouzidingyiyonghu"
else
echo "youzidingyiyonghu $1 ge"
fi
}

case $v in
5|6)
n=awk -F':' '$3>=500' /etc/passwd|wc -l
panduan $n
;;
7)
n=awk -F':' '$3>=1000' /etc/passwd|wc -l
panduan $n
;;
*)
echo "xitongbushi centos5|6|7"
;;
esac

寫一個shell腳本,檢測所有磁盤分區使用率和inode使用率並記錄到以當天日期爲命名的日誌文件裏,當發現某個分區容量或者inode使用量大於85%時,發郵件通知你自己。
df -i
date +%F

#!/bin/bash
dir=/tmp/disk
d=date +%F
[email protected]

[ -d $dir ] || mkdir $dir

df >> $dir/$d.log
df -i >> $dir/$d.log

df|sed '1d' |awk -F ' +|%' '$5>=85 {print $7}' > $dir/df.tmp
df -i|sed '1d' |awk -F ' +|%' '$5>=85 {print $7}' > $dir/df_i.tmp

n1=wc -l $dir/df.tmp|awk '{print $1}'
n2=wc -l $dir/df_i.tmp|awk '{print $1}'

tag=0
if [ $n1 -gt 0 ]
then
if [ $n2 -gt 0 ]
then
tag=11
else
tag=10
fi
else
if [ $n2 -gt 0 ]
then
tag=01
else
tag=00
fi
fi

case $tag in
11)
python mail.py $mail "磁盤空間和inode使用率高於85%" "cat $dir/df.tmp $dir/df_i.tmp|xargs"
;;
10)
python mail.py $mail "磁盤空間使用率高於85%" "cat $dir/df.tmp|xargs"
;;
01)
python mail.py $mail "磁盤inode使用率高於85%" "cat $dir/df_i.tmp|xargs"
;;
*)
;;
esac

有一臺服務器作爲web應用,有一個目錄(/data/web/attachment)不定時地會被用戶上傳新的文件,但是不知道什麼時候會上傳。所以,需要我們每5分鐘做一次檢測是否有新文件生成。

請寫一個shell腳本去完成檢測。檢測完成後若是有新文件,還需要將新文件的列表輸出到一個按年、月、日、時、分爲名字的日誌裏。

find -mmin -5
date +%Y%m%d%H%M

#!/bin/bash
basedir=/data/web/attachment
t=date +%Y%m%d%H%M
find $basedir/ -type f -mmin -5 >/tmp/file.list
n=wc -l /tmp/file.list|awk '{print $1}'
if [ $n -gt 0 ]
then
mv /tmp/file.list /tmp/$t.file.list
fi

#寫入任務計劃每五分鐘執行一次

寫一個shell腳本來看看你使用最多的命令是哪些,列出你最常用的命令top10。

#!/bin/bash
cat ~/.bash_history|sort|uniq -c|sort -nr |head

假如需要每小時都去執行一個腳本。在腳本中實現這樣的功能,當時間是0點和12點時,需要將目錄/data/log/下的文件全部清空,

注意只能清空文件內容而不能刪除文件。而其他時間只需要統計一下每個文件的大小,一個文件一行,輸出到一個按日期和時間爲名字的日誌裏。

需要考慮/data/log/目錄下的二級、三級、… 等子目錄裏面的文件。

find 列出所有文件
date +%H

file 清空文件

#!/bin/bash
dir=/tmp/log_stat
t=date +%d%H
###t1=date +%H
logdir=/data/log
[ -d $dir ]|| mkdir $dir
[ -f $dir/$t.log ]&& rm -f $dir/$t.log
if [ $t == "00" ]||[ $t == "12" ]
then
for f in find $logdir/ -type f
do

$f
done
else
for f in find $logdir/ -type f
do
du -sh %f>>$t.log
done
fi

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章