1 显示统计占用系统内存最多的进程,并排序。
通过命令组合来实现:
ps aux 显示所有进程;
awk 'NR!=1{printf "%10s%10s%10s\n",$1,$2,$4}'
NR!=1 number record记录编号不为1的内容;
{printf "%10s%10s%10s\n",$1,$2,$4}' 打印每个记录的第1,2,4个字段,并且显示的格式是字符串的格式,采用的是右对齐方式;
sort -k3 -rn 以第三列作为排序条件,采用数字方式的,逆序排序;
2 编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
【示例1】
for ((start;test;next));do;done
for循环的语法是初始值,判断条件,修正表达式;
{}& 实现并行执行脚本;
Wait 实现免输入回车符合;
for ((i=1;i<=254;i++));do
{
if ping -c 1 -w 2 $NETID$i &> /dev/null;then
echo -e "\033[1;32m$NETID$i success\033[0m"
else
echo -e "\033[1;31m$NETID$i failed\033[0m"
fi
}&
done
wait
【示例2】
While CONDITION;do;done
While循环条件,进入循环前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环;因此CONDITION的控制变量一般会在循环体中体现,并不断被修正。
i=0
while [ $i -le 254 ];do
i=$[i+1]
{
if ping -c 1 -w 2 $NETID$i &> /dev/null;then
echo -e "\033[1;32m$NETID$i success\033[0m"
else
echo -e "\033[1;31m$NETID$i failed\033[0m"
fi
}&
done
wait
3 每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
先写一个备份命令的脚本,再把脚本放到定时任务中执行;
【示例】
tar -Jcf /backup/`date -d "-1day" '+%F-%H'`.tar.xz /etc
30 1 * * 1,2,3,4,5 /data/Scripts-44/008_backup_etc.sh
4 工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于20%,就发送邮件报警
先写一个备份命令的脚本,再把脚本放到定时任务中执行;
【示例】
Diskinfo=`df -h | awk -F " +|%" '/dev\/sd/{print $1,$5}' | sort -k2 -rn | head -n1`
Diskname=`echo $Diskinfo | awk '{print $1}'`
Diskusage=`echo $Diskinfo | awk '{print $2}'`
if [ $Diskusage -gt 20 ];then
wall $Diskname is full:$Diskusage% !!!
fi
*/10 * * * 1,2,3,4,5 /data/Scripts-44/008_disk_usage.sh