shell脚本

Shell进阶精品课程

北城余情 提交于 2019-12-02 13:05:37
课程链接 https://edu.51cto.com/sd/96966 课程目标 系统性的掌握shell相关知识,进阶shell脚本能力,对shell各方面了然于心 适用人群 具备shell基础但想深入、系统性掌握shell的同学,shell脚本和命令行调试能力欠佳的同学 课程简介 本套课程是借助bash来对shell解释器方方面面的深入探索,循序渐进分析shell各方面的特性,从而从根上系统并深入地掌握shell相关的知识,对其特性、用法、工作机制等各方面知根知底,对了解操作系统、进阶shell脚本能力、命令行排错等等方面都大有裨益。 课程目录 课程概述 从bash解释器开始 bash启动和环境配置 3-1.bash交互式和登录式的判断 3-2.bash如何读取配置文件 进程基础 4-1.一些进程基础概念 4-2.伪代码演示进程操作 4-3.模拟并理解僵尸进程和孤儿进程 管道和IObuffer 5-1.管道的基本特性 5-2.管道的陷阱示例分析 5-3.管道示例分析IO buffer的类型 5-4.IO buffer的层次 5-5.命名管道 shell内置结构的陷阱 进程替换、命令替换、后台进程 命令组合 (补)shell read读取文件和read替换管道 重定向 9-1.重定向基础 9-2.基础重定向操作和exec 9-3.高级重定向 9-4.高级重定向用法示例

自动化运维Shell入门

删除回忆录丶 提交于 2019-12-02 12:23:09
运维shell 作用 项目部署 项目监控 什么是shell shell是一个程序,/bin/bash/,是一个命令解释器所有linux命令都由他来执行,打开终端就进入了 shell的交互式命令 运行方式 bash *.sh 更改可执行权限后使用./*.sh来执行 shource *.sh 语法 没有缩进要求,缩进是没有意义的 注释使用 # 双引号 "" 内嵌入变量是解释变量 单引号 '' 内写什么,就是什么,不会解释变量 shource 不会开启新的进程来执行脚本,可以跟当前窗口共享进程,以及变量 所以变量可以使用普通变量 反引号&& $() 内嵌命令将命令执行之后的结果写进变量 变量的使用 # 设 变量名为 name 且有值 调取变量方式如下 echo $name echo ${name) echo "$name" echo "${name}" #规范写法 测试语句(判断) 利用 text 和 [] 来结合内置变量 $? 来进行判断语句 #方法1 text 2 = 2 # 条件前后必须加空格 $? #方法2 [ 1 = 2 ] # `[]`内前后追加空格 $? $? 结果0为真 1为假 变量 本地变量 在当前系统的某个环境下生效的变量作用范围小 普通变量 只在当前命令窗口 环境 下才可以调用 name=langwang #

shell及其操作环境

99封情书 提交于 2019-12-02 12:13:31
来源: 鸟哥的Linux私房菜 第十章、認識與學習BASH Shell是什么?1分钟理解Shell的概念! ssh在本地调用远程主机上的命令,不登录远程主机shell 一、Shell Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。 Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。 shell有两种意思 ,一种程序或一种脚本语言 shell中可以执行shell脚本语言 有的编程语言,如 C/C++、Pascal、汇编等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。 这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。 而有的编程语言,如 Shell、Python、PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分

shell 除法和格式化输出printf

我只是一个虾纸丫 提交于 2019-12-02 11:43:28
相关知识的补充: printf命令模仿C程序库里的printf()程序。printf由POSIX标准所定义,因此使用printf的脚本比使用echo有着更好的移植性。 printf使用引用文本或者空格分隔参数,外面可以在printf中使用格式化字符串,还可以指定字符串的宽度,左右对齐方式等。默认不会像echo自动添加换行符,但是可以手动添加\n printf命令的语法: printf format - string [ arguments ...] 参数说明: format-string:为格式控制字符串 arguments:为参数列表 尝试下面实例 printf "%-10s %-8s %-4s\n" 姓名 性别 体重 kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 输出的结果为 姓名 性别 体重 kg 郭靖 男 66.12 杨过 男 48.65 郭芙 女 47.99 实例中的%s %c %d都是格式替代符 %-10s指一个宽度为10个字符(-代表左对齐,没有代表右对齐)任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。 %-4

shell编程案例大全(持续更新)

谁都会走 提交于 2019-12-02 11:14:42
与服务相关的脚本 1.判断apache服务是否正常,如果不正常则重启,并且输出信息到屏幕,把服务信息写入到一个新的文件中,可以把这个脚本加入到循环定时任务里面去 # 判断apache服务是否开启,如果没有开启则将其自动开启 test=$(ps aux | grep httpd | grep -v httpd) if [[ -n $test ]] then echo "$(date) apache is OK" >> /log/apache else echo "$(date) apache is failed" /usr/bin/systemctl restart httpd &> /dev/null if [[ $?==0 ]]; then echo "restart success" >> /log/apache else echo "reestart fail" >> /log/apache fi fi 如图 与文件相关的脚本 批量解压缩某个目录下的压缩文件 #!/bin/bash read -p 'enter a dir' dir touch /root/text cd $dir ls *.tar.gz >> /root/text ls *.tgz >> /root/text for i in $(cat /root/text) do tar -zxf $i &> /dev

使用Shell脚本一键部署基础LAMP架构

牧云@^-^@ 提交于 2019-12-02 10:53:40
使用Shell脚本一键部署基础LAMP架构 安装顺序:apache→mysql→PHP 实验所需软件包:链接: https://pan.baidu.com/s/1tKAjqn50NnR7F3JmzyHF1w 提取码:1xpr #!/bin/bash #一键自动构建LAMP架构(请使用source执行或者使用.命令执行) #数据库默认密码为123123 #远程挂载 df - hT | grep - o "cifs" if [ $? -ne 0 ] ; then echo "Start mount" yum install expect - y read - p "请输入提供硬盘主机IP:" gongip / usr / bin / expect << - EOF spawn mount . cifs / / $gongip / LAMP - C7 / mnt / expect { "Password*" { send "\r" } } expect eof EOF fi #安装apache服务 cd / mnt / tar zxf apr - 1 . 6 . 2 . tar . gz - C / opt tar zxf apr - util - 1 . 6 . 0 . tar . gz - C / opt / tar jxf httpd - 2 . 4 . 29 . tar .

Shell - 传递参数到Shell 脚本

心不动则不痛 提交于 2019-12-02 10:49:36
文章目录 Shell - 传递参数到Shell 脚本 1、参数传递规则 2、参数引用规则 3、执行文件参数 4、获得传递的参数个数 5、其它特殊组合 Shell - 传递参数到Shell 脚本 1、参数传递规则 以空格分隔开 ./xxx.sh 1 2 3 2、参数引用规则 $n 即可引用第n个参数,n从1开始 echo "param 1 : $1 " echo "param 2 : $2 " echo "param 3 : $3 " 3、执行文件参数 $0 会传递执行文件名 echo "x file name : $0 " 4、获得传递的参数个数 echo "param count : $# " 5、其它特殊组合 ## 显示所有的参数为一个字符串 echo " $* " ## 显示当前脚本运行的进程ID echo $$ ## 显示后台运行的最后一个进程的ID echo $! ## 显示所有的参数为单个的字符串 echo " $@ " ## 显示shell 使用的当前选项 echo $- ## 显示命令的退出状态,0表示没有错误,其它值表明有错误 echo $? 来源: https://blog.csdn.net/qq_15071263/article/details/102753942

shell脚本编写主从centos6

微笑、不失礼 提交于 2019-12-02 10:37:43
[shell脚本编写主从centos7(https://blog.csdn.net/weixin_45697341/article/details/102752855) 执行之前配好ssh免密 和关闭防火墙 注意改成自己的IP vim aa.sh #!/bin/bash yum -y install mysql mysql-server #主安装mysql sed -i '/0/a\server-id=1' /etc/my.cnf #sed修改主配置 sed -i '/1/a\log-bin=mysql-bin' /etc/my.cnf service mysqld start #启动mysql mysql -e "grant all on *.* to he@'%' identified by '123';" #shell mysql授权 mysql -e "flush privileges;" file=`mysql -e "show master status"|awk '/mysql/{print $1}'` #shell查看mysql二进日志 rz=`mysql -e "show master status"|awk '/mysql/{print $2}'` yum -y install expect #安装免交互 #以下属于expect免交互 /usr/bin

shell脚本编写主从centos7

不羁的心 提交于 2019-12-02 10:37:30
shell脚本编写主从centos6 首先安装阿里源好执行expect安装 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 执行之前配好ssh免密 和关闭防火墙 注意改成自己的IP vim aa.sh #!/bin/bash yum -y install mariadb mariadb-server #主安装mysql sed -i '/0/a\server-id=1' /etc/my.cnf #sed修改主配置 sed -i '/1/a\log-bin=mysql-bin' /etc/my.cnf systemctl restart mariadb #启动mysql mysql -e "grant all on *.* to he@'%' identified by '123';" #shell mysql授权 mysql -e "flush privileges;" file=`mysql -e "show master status"|awk '/mysql/{print $1}'` #shell查看mysql二进日志 rz=`mysql -e "show master status"|awk '/mysql/{print $2}'` yum -y

Python全栈开发之常用模块

孤街浪徒 提交于 2019-12-02 10:32:00
No.1 sys sys模块是与Python解释器交互的一个接口 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1) sys.version 获取Python解释程序的版本信息 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 No.2 os os模块是与操作系统交互的一个接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir(“dirname”) 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: (’.’) os.pardir 获取当前目录的父目录字符串名:(’…’) os.makedirs(‘dirname1/dirname2’) 可生成多层递归目录 os.removedirs(‘dirname1’) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir(‘dirname’) 生成单级目录;相当于shell中mkdir dirname os.rmdir(‘dirname’) 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os