## 任务脚本的编写
>[success]任务脚本,其实就是linux命令的集合,也可以理解为能够完成某个任务的程序。
在Linux中,通常使用会编辑这样的脚本,来完成特定的任务。
### 在这里重点介绍一下四个任务脚本的编写
#### 1. 防火墙设置脚本
#### 2. 服务器磁盘和服务器健康状态脚本
#### 3. 数据库备份脚本
#### 4.服务器登录报警脚本
### 编写任务脚本之前先来了解几个知识点
#### 1.脚本格式
~~~
#!/bin/bash #指定使用的shell 不能少,必须以此开头
.....
~~~
#### 2. /dev/null
>[success]就相当于垃圾桶。正常情况下在执行linux命令时,屏幕上会有输出,如果不想让直接在屏幕上输入,可以直接把输入内容丢到 /dev/null里即可。
例如:
正常在执行:ifconfig命令时,会有如下输出:
~~~
[root@bogon ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:B7:2B:35
inet addr:192.168.3.27 Bcast:192.168.3.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feb7:2b35/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:445578 errors:2 dropped:0 overruns:0 frame:0
TX packets:212749 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:473770858 (451.8 MiB) TX bytes:37434290 (35.7 MiB)
Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:656 (656.0 b) TX bytes:656 (656.0 b)
~~~
如果不想让输出内容时:可以如下执行:
![](https://box.kancloud.cn/c62456464f298efffaca5d5893e1b6f9_598x113.png)
### 3. w
>[success]w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
#### 语法:
~~~
w(选项)(参数)
~~~
#### 选项:
~~~
-h:不打印头信息;
-u:当显示当前进程和cpu时间时忽略用户名;
-s:使用短输出格式;
-f:显示用户从哪登录;
-V:显示版本信息。
~~~
#### 参数
~~~
用户:仅显示指定用户。
~~~
#### 实例
~~~
[root@bogon ~]# w
07:17:02 up 15:17, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.3.100 07:11 0.00s 0.04s 0.00s w
~~~
### 4. df
>[success]df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
#### 语法:
~~~
df(选项)(参数)
~~~
#### 常用选择
~~~
-a或--all:包含全部的文件系统;
--block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或--human-readable:以可读性较高的方式来显示信息;
-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
-i或--inodes:显示inode的信息;
-k或--kilobytes:指定区块大小为1024字节;
-l或--local:仅显示本地端的文件系统;
-m或--megabytes:指定区块大小为1048576字节;
--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
-P或--portability:使用POSIX的输出格式;
--sync:在取得磁盘使用信息前,先执行sync指令;
-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
-T或--print-type:显示文件系统的类型;
-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
--help:显示帮助;
--version:显示版本信息。
~~~
#### 参数
~~~
文件:指定文件系统上的文件。
~~~
#### 实例
~~~
[root@bogon ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 18G 8.2G 8.7G 49% /
tmpfs 504M 0 504M 0% /dev/shm
~~~
### 5. free
>[success]free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
#### 语法
~~~
free(选项)
~~~
#### 选项
~~~
-b:以Byte为单位显示内存使用情况;
-k:以KB为单位显示内存使用情况;
-m:以MB为单位显示内存使用情况;
-o:不显示缓冲区调节列;
-s<间隔秒数>:持续观察内存使用状况;
-t:显示内存总和列;
-V:显示版本信息。
~~~
#### 实例
~~~
[root@bogon ~]# free -h
total used free shared buffers cached
Mem: 1.0G 948M 57M 472K 42M 642M
-/+ buffers/cache: 263M 743M
Swap: 2.0G 2.9M 2.0G
~~~
### 6.awk
>[success]awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。
#### awk命令格式和选项
#### 语法形式
~~~
awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var=value file(s)
~~~
#### 常用命令选项
~~~
-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
-f scripfile 从脚本文件中读取awk命令
-m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
~~~
参考 :http://man.linuxde.net/awk
>[danger]在这里咱们主要使用它来取文本中的指定部分
比如取本机IP地址:
~~~
shell>ifconfig eth0|grep "inet addr"|awk '{ print $2}'|awk -F : '{ print $2}'
shell>192.168.3.29
~~~
>[danger]注意:awk '{ print $2}',大括号外面必须是单引号,print的前面必须有一个空格
### 7.who
>[success]who命令是显示目前登录系统的用户信息。执行who命令可得知目前有那些用户登入系统,单独执行who命令会列出登入帐号,使用的终端机,登入时间以及从何处登入或正在使用哪个X显示器。
#### 语法
~~~
who(选项)(参数)
~~~
#### 选项
~~~
-H或--heading:显示各栏位的标题信息列;
-i或-u或--idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;
-m:此参数的效果和指定"am i"字符串相同;
-q或--count:只显示登入系统的帐号名称和总人数;
-s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
-w或-T或--mesg或--message或--writable:显示用户的信息状态栏;
--help:在线帮助;
--version:显示版本信息
~~~
#### 参数
~~~
文件:指定查询文件。
~~~
#### 实例:
~~~
[root@bogon ~]# who
root pts/0 2018-02-28 07:11 (192.168.3.100)
root pts/3 2018-02-28 03:59 (192.168.3.100)
~~~
#### 8.whoami
>[success] whoami命令用于打印当前有效的用户名称,相当于执行id -un命令。
#### 语法
~~~
whoami(选项)
~~~
#### 选项
~~~
--help:在线帮助;
--version:显示版本信息。
~~~
#### 实例
~~~
[root@bogon ~]# whoami
root
~~~
#### 9. who am i
>[success]该命令相当于who -m
#### 实例
~~~
[root@bogon ~]# who am i
root pts/0 2018-02-28 07:11 (192.168.3.100)
[root@bogon ~]# who -m
root pts/0 2018-02-28 07:11 (192.168.3.100)
~~~
### 10.sed
>[success]sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
参考 :http://man.linuxde.net/sed
- 前言准备
- Linux新服务器的前期配置
- 认识linux下的Web服务器
- Linux的基本配置
- LNMP一键安装包快速部署web服务器
- LAMP服务器环境部署
- LAMP服务器管理
- LNMP服务器环境部署
- LNMP服务器管理
- lnmp一键安装包-常见问题
- 使用包管理器快速部署环境
- 包管理器快速部署LAMP服务器环境
- 升级php和mysql版本
- 包管理器快速部署LNMP服务器环境
- 使用源码包部署Linux服务器web环境
- 编译LAMP服务器环境部署
- apache安装与配置
- mysql的安装与配置
- PHP的安装与配置
- 编译LNMP服务器环境部署
- nginx服务启动脚本
- 源码安装常见问题
- Centos6与Centos7的区别
- 默认控制系统服务工具不同
- 设置开机启动的方式不同
- 编写service启动脚本
- 编写systemctl启动脚本
- 服务器安全
- 隐藏服务器信息
- Linux服务器防火墙设置
- 防火墙设置脚本
- 邮件发送
- 任务脚本的编写
- 服务器磁盘和服务器健康状态脚本
- 服务器登录报警脚本
- 数据库备份脚本
- 定时任务及应用
- 常见问题
- linux中使用ping命令不同的问题
- Linux中无法发送邮件
- mailx通过ssl方式发送邮件
- Mysql配置文件
- Linux TCP/UDP 常用端口
- Linux常见命令
- 系统信息
- 关机 (系统的关机、重启以及登出 )
- 文件和目录
- 文件搜索
- 挂载一个文件系统
- 磁盘空间
- 用户和群组
- 文件的权限
- 文件的特殊属性
- 打包和压缩文件
- RPM包
- YUM软件包升级器
- DEB 包 (Debian, Ubuntu 以及类似系统)
- APT 软件工具 (Debian, Ubuntu 以及类似系统)
- 查看文件内容
- 文本处理
- 字符设置和文件格式转换
- 文件系统分析
- 初始化一个文件系统
- SWAP文件系统
- 备份
- 光盘
- 网络-(以太网和WIFI无线)
- vi命令
- cut命令 截取
- Mysql
- MySQL备份-增量备与恢复命令实战
- mysqlbinlog
- mysql的安装
- 卸载mysql
- mysql多实例安装
- mysql 常用基础命令操作
- linux安装jdk、rpm安装mysql
- linux制作本地yum源
- shell脚本