赞
踩
shell博大精深,希望以下案例能起到一个抛砖引玉的作用。
本文shell文件存放目录,默认为/root/myshell,文中不再累述。
文中六个案例,均有提纲,如对某个案例感兴趣,可根据提纲直入主题。
- mkdir /root/myshell #创建测试目录
- cd /root/myshell #切换到shell存放目录
- vim pingfang #编辑shell脚本
脚本内容
#!/bin/bash #声明shell类型,该行不可缺失(重要)
#note:count two number square sum
result=$(expr $1 \* $1 + $2 \* $2 )
echo "$1和$2的平方和=$result"
说明:
1、$()的作用和反撇号一致,增强可读性。
2、expr是算式(表达式)的前缀;
3、其中$1、$2是占位符。
4、乘号由于是特殊字符,需要转义,每个计算符号前后,都需要有空格。
#. pingfang 5 2 注:点后面有个空格
#vim pingfang.sh
脚本内容
#!/bin/bash
#计算两个数的平方和
read -p "请随意输入两个整数,用于计算平方和(中间用空格隔开):" num1 num2
result=$(expr $num1 \* $num1 + $num2 \* $num2)
echo "$num1和$num2的平方和=$result"
注:read -p 可实现交互式输入。
#. pingfang.sh 运行并查看结果
#ls /etc/init.d 查看一下该目录下都有哪些服务
注意:ls /etc/init.d 命令的目的是,查看该目录下都有哪些服务,只有这些已存在的服务,才可以使用下面的脚本启动、停止、查看状态!
#vim service.sh
#!/bin/bash
/etc/init.d/$1 $2
说明:$1 $2 是系统的预定义变量,此处可以理解为在实际命令中的占位符(分别替换实际命令中的两个位置)。
- #service.sh network stop
- #service.sh network start
- #service.sh network restart
#vim hwaddr.sh
#!/bin/bash
Hwaddr=$(ifconfig | grep eth | awk '{print $2}')
echo "网卡的MAC地址:$Hwaddr"
说明:| grep eth 从前面的结果集中,过滤出 带有eth字母的行;
awk 命令是文本处理命令,很强大, {print $2 }打印出结果集的第二列。
#. hwaddr.sh 运行,查看结果
- #free -m 先查看一下内存使用情况
- #vim memory.sh
#!/bin/bash
#free -m
mem_total=$(free -m | grep "Mem" | awk '{print $2}')
mem_used=$(free -m | grep "Mem" | awk '{print $3}')
echo "当前内存总大小为$mem_total M"
echo "已使用$mem_used M"
echo "当前内存已使用百分比为$(expr $mem_used \* 100 / $mem_total )%"
#. memory.sh 运行脚本;注:第一个点后面是有空格的
注:这里有个疑问,查看内存使用情况的时候,used是575,打印出来就变成576了,这里表示不太理解。
1)当前系统的登录用户的数量
2)当前运行的进程数量
3)当前使用的磁盘根分区的使用情况
#vim sysinfo.sh
脚本内容
#!/bin/bash
#show sysinfo
echo "root disk used info :"
df -h | grep "/$"LoginCount=$(who | wc -l )
PsCount=$(expr $(ps -aux | wc -l ) - 1 )
RootDiskUsed=$(df -h | grep "/$" | awk '{print $5}' )echo "当前登录系统的用户数量=$LoginCount"
echo "当前进程的数量=$PsCount"
echo "当前根分区已使用$RootDiskUsed"
说明:wc -l 意思是对结果集的行数进行计算;
ps -aux 显示当前所有线程;
df -h 查看当前磁盘挂载以及使用情况。
#. sysinfo.sh
1) 给脚本赋予x执行权限,否则开机自动运行时会提示:bash: /root/myshell/sysinfo.sh: Permission denied 权限不足,被拒绝执行
- #chmod 744 /root/myshell/sysinfo.sh
- 或者
- #chmod u+x /root/myshell/sysinfo.sh 给当前用户添加x执行权限
2)编辑开机自动运行脚本
#vim /root/.bash_profile 注:这个是一个隐藏的文件,ll -a 才可以看到
尾部追加,脚本内容,如下图所示
/root/myshell/sysinfo.sh
exit 退出Xshell,重新登录Xshell,查看效果
#vim monitor.sh
#!/bin/bash
CpuRec=`uptime`
MemRec=`free -m`
DiskRec=`df -hT`
LastUserLoginRec=`last -20`
RecTime=`date +"%Y-%m-%d %H:%M:%S"`
mkdir -p /var/log/runrec
RecFile=/var/log/runrec/runing-$(date +%Y%m%d%H%M)
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Record Time:
$RecTime
Cpu Load information:
$CpuRec
Memory information :
$MemRec
Disk use information :
$DiskRec
Last login 20 users record :
$LastUserLoginRec "#>>$RecFile
说明:这个案例里面的命令,都比较好理解,可以随意单独拿出来,看运行结果。其中
uptime 是看cup负载情况的 ;
最后一行“#>>$RecFile” 意思是把如上打印信息,输出到以时间命名的文件内(文件不存在则会自动生成)
- #. monitor.sh 运行脚本
- #cd /var/log/runrec 切换到日志目录
- #ls 查看生成的日志文件列表
#crontab -e 打开计划任务编辑器
计划任务脚本内容 (脚本也比较简单:前面定义运行周期,依次用空格隔开,后面写脚本路径)
* 1 * * * /root/myshell/monitor.sh
:wq 保存并退出。
说明:计划任务的执行时间,从前到后,依次是 分 、小时、日、月、星期(一个星期中的周几)。*代表不限具体某个对应时间。
具体说明可以输入命令:#vim /etc/crontab 查看计划任务的时间说明
此时,每隔一个小时,就可以看到日志文件中多一个日志了。
以上案例,如果是首次接触,感觉是无从下手,看完案例,有种恍然大悟的感觉,案例虽然不难,但是如果想更好的使用Linux,还是需要苦练基本功,好记性不如烂笔头。
如果觉得对你有帮助,还不错,赶快点赞收藏吧!
如果你有更好的想法和建议,欢迎留言!
猜你可能感兴趣
0、Shell编程: shell脚本5种执行方式 | 脚本不同的执行方法和区别
1、 Linux技巧(一): 查看系统内核/操作系统版本详解
2、Linux技巧(二):Linux sort命令深入解析 | sort -k M.m,N.n 命令详解
3、Linux技巧(三): seq命令 / mkdir -p 批量创建/删除文件夹 详解
4、Linux技巧(四):用head tail sed 查看第N行到最后一行 | m,n行区间/固定行 | 前/后N行(以外)的内容
5、 Linux技巧(五):expect安装与介绍 | 精美案例
6、Linux技巧(六):命令尾部&的作用 &&、|、||、;、()、&>、 2>&1 的用法和区别,很实用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。