shell脚本

Linux基础

匿名 (未验证) 提交于 2019-12-02 21:59:42
Linux 是一种广泛使用的类 UNIX 操作系统,是多用户、多任务操作系统,继承UNIX系统的主要特征,具有强大的信息处理能力; Shell 是一个命令解释器(也是一种应用程序),同时也可以作为一门强大的编程语言; 用户接口定义了用户与计算机交互作用的方式;Linux操作系统提供了4种不同的用户接口: 命令行接口: 支持命令行的系统程序是 命令解释程序 ;Linux/UNIX系统中通常称为 Shell ; Bouren Again shell (bash)【红旗Linux默认shell】 Bourne shell(sh) 【 $ | 】 C shell(csh) Korn shell(ksh) 命令解释程序的 主要功能是 :接收用户输入的命令,然后予以解释并执行; 系统提示符 :由字符$+空格组成,(提示符可修改) 菜单 图形用户接口 程序接口 (1)核心版本(kernel): (2)发行版本(Distribution): Red Hat Linux/Fedora Core Debian :三个版本分支:stable、testing、unstable; Ubuntu :基于Debian,采用 GNOME 桌面环境,使用Sudo工具,分为桌面版和服务器版; Slackware OpenSuSE 红旗Linux 中标普华 GNOME (GNU Network Object Model

shell脚本实现服务器进程监控

匿名 (未验证) 提交于 2019-12-02 21:59:42
写作背景:   项目是基于java、weblogic及timer的处理模式,每次服务部署之后timer的整体状态是一个盲区,因为100多个进程,是否有启动遗漏或者启动重复的,想做到一目了然是件困难的事情。所以我考虑用shell脚本的文件查找与匹配方法来解决这个问题,简单记录下,仅供参考。 程序说明: 1)通过将系统定义的进程(timer)配置到配置文件process_signal.config中 2)将服务器当前所有的java进程存储到process_current.txt中 3)逐行读取process_signal.config中的进程,到process_current.txt中进行匹配 4)没有匹配到则为启动遗漏,存入到process_invalid.txt中,匹配到1次正常(不做处理),匹配到大于1次,则将timer名称及启动次数记录到process_invalid.txt中。 5)通过定时器30分钟一次执行脚本,使用SQLLOAD将process_invalid.txt加载到数据表中,对数据库表进行监控。 脚本说明: webusr@iomtimer1:/weblogic/script/process_signal >ls process_current.txt    process_invalid.txt    process_invalid_his.txt   

CentOS之Shell文件编写基础

匿名 (未验证) 提交于 2019-12-02 21:59:42
shell文件以.sh结尾,这是一种习惯而已。第一行以#! /bin/bash开头;表示该文件使用的是bash语法; 如果不设置该行,你的shell脚本也可以执行,但是不符合规范。#表示注释。 # vim first.sh 输入以下内容 #! /bin/bash date echo "Hello world!" 退出文件编辑 # chmod +x first.sh date用法 date +%y:二位数展示年分 date +%m :月份 date +%d:日期 date +%H:小时 date +%M:分钟 date +%S:秒 date +%w:星期;0表示周日。 # date +"%Y-%m-%d %H:%M:%S" 变量   1)变量名=变量值   2)脚本中的反引号(键盘左上角 波浪线键)是将字符串当成shell命令执行,返回命令的执行结果。 echo "脚本开始时间 $d." echo "现在休眠2秒" sleep 2 数学运算 a=1 b=2 sum=$[$a+$b] echo "$a+$b=$sum" 和用户交互 sum=$[$x+$y] 脚本预设变量 文件a.sh,内容如下 sum=$[$1+$2] echo "sum=$sum" 输出结果 sum=3 逻辑语句    if        command     fi 编写脚本文件 a.sh read -p

Shell 编程 排序工具 sort 和 uniq

匿名 (未验证) 提交于 2019-12-02 21:59:42
本篇主要写一些 shell 脚本排序工具的使用。 sort sort 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。 sort [选项] 参数 -f :忽略大小写 -b :忽略每行前面的空格 -M :按照月份进行排序 -n :按照数字进行排序 -r :反向排序 -u :等同于 uniq ,表示相同的数据仅显示一行 -t :指定分隔符,默认使用 Tab 键分隔 -o <输出文件> :将排序后的结果转存至指定文件 -k :指定排序区域 将 /etc/passwd 文件中的账号进行排序 [root@localhost ~]# sort /etc/passwd adm:x:3:4:adm:/var/adm:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin halt:x:7:0

Shell 编程 编辑工具 awk

匿名 (未验证) 提交于 2019-12-02 21:59:42
本篇主要写一些 shell 脚本编辑工具 awk 的使用。 awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理。 awk 倾向于将一行分成多个字段然后再进行处理,且默认情况下字段的分隔符为 空格 或者 tab 键。 awk 执行结果可以通过 print 的功能将字段数据打印显示。 可以使用逻辑操作符 && ,表示 与 , || 表示 或 , ! 表示 非 ;还可以进行简单的数学运算,如 + 、 - 、 * 、 / 、 % 、 ^ 分别表示 加 、 减 、 乘 、 除 、 取余 和 乘方 。 命令有两种格式: awk [选项] '模式或条件{编辑指令}' 文件 1 文件 2... awk -f 脚本文件 文件 1 文件 2... 常见的内置变量 FS :指定每行文本的字段分隔符,默认为空格或制表位。 NF :当前处理的行的字段个数。 NR :当前处理的行的行号(序数)。 $0 :当前处理的行的整行内容。 $n :当前处理行的第 n 个字段(第 n 列)。 RS :数据记录分隔,默认为 \n ,即每行为一条记录。 FILENAME :被处理的文件名。 输出所有内容 [root@localhost ~]# awk '{print}' /etc/passwd root:x:0:0:root:/root:/bin

shell 中 exit0 exit1 的区别

匿名 (未验证) 提交于 2019-12-02 21:56:30
exit(0):正常运行程序并退出程序; exit(1):非正常运行导致退出程序; exit 0 可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非 0 值,那么你的程序的使用者通常会认为你的程序产生了一个错误。 在 shell 中调用完你的程序之后,用 echo $? 命令就可以看到你的程序的 exit 值。在 shell 脚本中,通常会根据上一个命令的 $? 值来进行一些流程控制。 文章来源: shell 中 exit0 exit1 的区别

uefi下如何启动linux?

匿名 (未验证) 提交于 2019-12-02 21:56:30
1. 有两种方式   1.1 直接从uefi shell启动linux内核   1.2 从uefi shell启动grub,然后再从grub启动linux内核 2. 需要哪些东西?   2.1 linux内核   2.2 initrd镜像   2.3 .nsh后缀名的启动脚本(可选,可通过手动键入命令)     某个.nsh的内容如下:       Image initrd=\initrd.gz root=/dev/ram0 earlycon=uart   2.4 BOOTAA64.EFI (这是arm64的EFI固件,可选)   注: 这些东西需要放在fat文件系统中 3. uefi shell启动linux内核的操作过程   3.1 进入目标分区   Shell> fs0:   FS0:\>   3.2 启动linux内核   FS0:\>boot.nsh 4. 从uefi shell启动grub, 然后启动linux内核   4.1 进入目标分区   Shell> fs0:   FS0:\>   4.2. 进入grub   FS0:\>BOOTAA64.EFI   4.3 在grub中设置临时访问的根节点   grub> root=(hd0,msdos1) (hd0,msdos1中有linux内核镜像和initrd镜像)   4.4 启动linux内核   grub>

【Shell】检查软件包是否安装

匿名 (未验证) 提交于 2019-12-02 21:56:30
#!/bin/bash if rpm -q sysstat &>/dev/null; then echo "sysstat is already installed." else echo "sysstat is not installed!" fi 说明: sysstat即为我们要检测的软件包 rpm是软件包的管理工具,-q是使用询问模式查询该软件包存不存在。 then为如果条件成立,则执行下面的命令 进阶版 #!/bin/bash if rpm -q $@ &>/dev/null; then echo "$@ is already installed." else echo "$@ is not installed!" fi 输出: 脚本变命令 步骤: [root@node1 shell]# ls demo.sh [root@node1 shell]# mv demo.sh demo && cp demo /bin [root@node1 shell]# demo 这是一个演示脚本 注:将脚本放入 /bin 目录前,要确保自定义命令和该目录下已有命令不重名 来源:博客园 作者: BabySermonizer 链接:https://www.cnblogs.com/BabySermonizer/p/11456605.html

linux shell 基础语法A-2

匿名 (未验证) 提交于 2019-12-02 21:56:30
A-1讲了一些基本的语法,A2部分继续上次的内容接着讲。 shell是一门编程语言,自然也有结构化的表示方法。常见的编程语言结构化就是判断和循环。shell中的判断分为3类:数值判断,字符判断,文件判断。 判断的几种形式 If command Then command Fi If command Then command Else command Fi If command Then command Elif command Then command Else command fi (1)数字判断 实例:简单的猜数字 (2)字符判断 实例:判断输入的选项 (3)文件判断 实例:创建log文件前检查目标路径是否存在 #!/bin/bash if [ ! -d /mnt/123testlog/2019-08-31 ] then mkdir -p /mnt/123testlog/2019-09-31 fi 还需要关注 If test xxxx的用法 对参数值得判断处理 复合条件判断 If [] && [] If [] || [] 双括号 --双圆括号(数学表达式高级功能) --双方括号(字符串高级功能) 多选择判断时使用if结构就比较繁琐了,采用case更佳 Case Case xxx in p1) cmd ;; p2) cmd ;; *) default cmd ;; Esac