脚本应用思路

1. 确定命令操作(设计并执行任务)

2. 编写Shell脚本(组织任务过程)

3. 设置计划任务(控制时间,调用任务脚本)

---------------------------------------------

实战-1、实现管理员在登录系统时显示如下信息

1)当前运行的进程数量

2)当前系统的登录用户的数量

3)当前使用的磁盘根分区的使用情况

操作过程如下图:

注意:也可修改/etc/profile配置文件,实现开机运行

脚本源码如下:

#!/bin/bash
# welcome information for login
#
# Print below information:
# 1. The total number of processes.
# 2. The totla number of users who logged in.
# 3. The used status of disk.

echo "##########     Welcome!     ##########"
# 1. The total number of processes.
echo "The total number of processes is $(ps -aux | wc -l)."

# 2. The totla number of users who logged in.
echo "The totla number of users who logged in is $(who | wc -l)."

# 3. The used status of disk.
echo "The used status of disk is $(df -hT | grep root | awk '{print $6}')."

---------------------------------------------

实战-2、编写脚本实现系统服务启动 停止 当前状态的脚本

#!/bin/bash
#service manager script
# status start stop restart

if [ $1 = 'start' ] #start server of $2
    then systemctl start $2 2>>server.logs
elif [ $1 = 'stop' ]  #stop server of $2
    then systemctl stop $2 2>>server.logs
elif [ $1 = 'status' ]  #status server of $2
    then systemctl status $2 2>>server.logs
elif [ $1 = 'restart' ]  #restart server of $2
    then systemctl restart $2 2>>server.logs
fi

---------------------------------------------

实战-3、写运行状况监控脚本

/sh/monitor.sh,用于记录CPU负载、内存和交换空间、磁盘空间、最近的用户登录情况等信息,以及当时的时间信息。

#!/bin/bash
#back monitor CPU Mem Swap Disk LastLogin information to file

# set recored Dir
Dir=/var/log/runrec/

# prepare the environment
mkdir -p $Dir

# get current time
RecTime=$(date +"%Y-%m-%d %H:%M")

# set record filename
RecFile=$Dir$RecTime.log

# get CPU
RecLoad=$(uptime)

# get Mem and Swap
RecMem=$(free -m)

# get Disk
RecDisk=$(df -hT)

# get Last
RecLastLogin=$(last -n 20)

# echo information and saved to RecFile
echo "######################################
Cpu Load information:$RecLoad
Memory information:$RecMem
Disk Usage information:$RecDisk
Last Login 20 users record:$RecLastLogin" >> $RecFile

设置定时备份:

---------------------------------------------

实战-4、过滤出本机echo网卡的MAC地址,并赋值给hwaddr

[root@xiaogan121 sh]# ifconfig | grep ether | awk '{ print $2 }'
00:0c:29:af:03:b2
00:0c:29:af:03:bc
52:54:00:83:20:8c
[root@xiaogan121 sh]# ip=$(ifconfig | grep ether | awk '{ print $2 }')
[root@xiaogan121 sh]# echo $ip
00:0c:29:af:03:b2 00:0c:29:af:03:bc 52:54:00:83:20:8c
[root@xiaogan121 sh]#

---------------------------------------------

实战-5、编写脚本计算当前的内存使用百分比

MemTotal=$(free -m | grep Mem | awk '{ print $2 }')

MemUse=$(free -m | grep Mem | awk '{ print $3 }')

usage=$( expr $( expr  $MemUse \* 100 ) / $MemTotal  )

[root@xiaogan121 sh]# usage=$( expr $( expr $(free -m | grep Mem | awk '{ print $3 }') \* 100 ) / $(free -m | grep Mem | awk '{ print $2 }') )
[root@xiaogan121 sh]# echo $usage
31
[root@xiaogan121 sh]# free -m | grep Mem | awk '{ print $3 }'
311
[root@xiaogan121 sh]# free -m | grep Mem | awk '{ print $2 }'
977
[root@xiaogan121 sh]# free -m
              total        used        free      shared  buff/cache   available
Mem:            977         312         292           7         373         474
Swap:          2047           0        2047
[root@xiaogan121 sh]#

---------------------------------------------

实战-6、计算3 4 的平方和

 

1-22-shell脚本基本应用-实验手册的更多相关文章

  1. Miniconda 安装 & Pip module 安装 & Shell 脚本调用 Miniconda 虚拟环境手册(实战项目应用)

    (实战项目应用) 1. 下载Miniconda 两个安装方式: 方式1:wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Min ...

  2. Shell脚本编程总结及速查手册

    Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算符/if语句/循环控制/… 但在开始之前, 我想先理清Shell语言与Shell之间的关系. ...

  3. 让你提前知道软件开发(22):shell脚本文件操作

    文章1部分 再了解C语言 shell脚本中的文件操作 [文章摘要] 编写shell脚本时,经常会涉及到对文件的操作,比方从文件里读取一行数据.向文件追加一行数据等. 完毕文件读写操作的方法有非常多,了 ...

  4. Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)

    1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...

  5. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---22

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  6. 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出

    有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...

  7. 实验五:shell脚本编程

    项目 内容 这个作业属于哪个课程 班级课程的主页链接 这个作业的要求在哪里 作业要求链接地址 学号-姓名 17043133-木腾飞 作业学习目标 1.了解shell 脚本的概念及应用2.掌握shell ...

  8. 实验五 shell脚本编程

    项目 内容 这个作业属于哪个课程 课程链接 这个作业的要求在哪里 作业要求 学号-姓名 17041428-朱槐健 作业学习目标 1. 了解shell脚本的概念及使用 2.掌握shell脚本语言的基本语 ...

  9. 实验五shell脚本编程

    项目 内容 这个作业属于哪个课程 <班级课程的主页链接> 这个作业的要求在哪里 作业要求链接地址 学号-姓名 17043220-万文文 作业学习目标 1)了解shell脚本的概念及使用.2 ...

随机推荐

  1. kettle中的karaf设置

    Spoon.sh设置-Dpentaho.karaf.root.copy.dest.folder=$PENTAHO_KARAF_ROOT -Dpentaho.karaf.root.transient=f ...

  2. 46. Permutations (全排列)

    Given a collection of distinct numbers, return all possible permutations. For example,[1,2,3] have t ...

  3. Miller_Rabbin大素数测试

    伪素数: 如果存在和n互素的正整数a满足a^(n-1)≡1(mod n),则n是基于a的伪素数. 是伪素数但不是素数的个数是非常非常少的,所以如果一个数是伪素数,那么他几乎是素数. Miller_Ra ...

  4. Java并发包中线程池的种类和特点介绍

    Java并发包提供了包括原子量.并发集合.同步器.可重入锁.线程池等强大工具这里学习一下线程池的种类和特性介绍. 如果每项任务都分配一个线程,当任务特别多的时候,可能会超出系统承载能力.而且线程的创建 ...

  5. linux 常用命令总结(三)

    1. setup       // 进入相应配置界面,按空格键选择相关功能 2. ll       // 列出当前目录下详细内容 :等价与ls -all 3. clear        // 清理当前 ...

  6. js 空数组 空对象判断

    js 空数组是true还是false   1 2 var arr = new Array(); // 或 var arr = []; 我们知道,初始化后,即使数组arr中没有元素,也是一个object ...

  7. C#基础--多线程

    一.微软早期操作系统中的问题 在早期的操作系统中,应用程序都是在同一个地址空间中运行的,每个程序的数据其它程序都是可见的,并且因为早期CPU是单内核 的所以所有的执行都是线性的.这就引出两个问题: 第 ...

  8. PHP+MySQL数据库编程的步骤

    第一步:PHP连接MySQL服务器 第二步:选择当前要操作的数据库 第三步:设置请求或返回的数据的字符集 第四步:执行各种SQL语句. PHP连接MySQL服务器 1.mysql_connect() ...

  9. 在VMware中使用Nat方式设置静态IP

    为了在公司和家中不改变ip,所以采用vm的NAT模式来设置静态ip 1.vm采用NAT模式联网 2.编辑vm虚拟机设置 3.查看该网段的网关 可以看出网关为192.168.44.2,然后开始设置静态i ...

  10. 2705: [SDOI2012]Longge的问题

    Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1898  Solved: 1191[Submit][Status][Discuss] Descripti ...