Linux简单脚本和定时任务

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   以第三列作为排序条件,采用数字方式的,逆序排序;

Linux简单脚本和定时任务

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

Linux简单脚本和定时任务

【示例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

Linux简单脚本和定时任务

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

Linux简单脚本和定时任务
Linux简单脚本和定时任务

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

Linux简单脚本和定时任务
Linux简单脚本和定时任务

上一篇:shell脚本之九:case结构条件句应用实践


下一篇:通达OA v11.7 在线用户登录漏洞