企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 任务脚本的编写 >[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