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
来源: http://www.bubuko.com/infodetail-3505073.html