python学习之⾃动化运维(⼀):shell的使⽤第⼀章: shell快速⼊门:
⼀、运维简介:
1.运维简介以及企业中的那些事:
2、简单的运维知识
规划: 需要多少资源来⽀持项⽬的运⾏;
管理: 项⽬运⾏过程中的所有内容都管理起来;
流程规范: 所有操作都形成只读,提⾼⼯作效率;
平台: ⼤幅度提供⼯作效率;
监控: 实时查看项⽬运⾏状态指标;
告警: 状态指标异常,⾼职⼯作⼈员处理;
安全: ⽹站运营安全措施;
优化: 保证⽤户访问⽹站体验好;
2.1 ⾃动化运维: 就是将所有的运维⼯作都是⽤⾃动化的⽅式来实现
实现⾃动化的⽅式很多,常见的⽅式:⼯具和脚本。
⼯作中常见的脚本是shell脚本 和 其他开发语⾔脚本
shell脚本就是shell编程的⼀种具体实现;
⼆、shell简介:
1.什么是shell:
shell的定义: 在计算机科学中,shell就是⼀个命令解释器;
shell是位于操作系统和应⽤程序之间,是它们两者最重要的接⼝,shell负责把应⽤程序 的输⼊命令信息解释给操作系统,将操作系统指令处理后的结果解释给应⽤程序.
shell位置图:
总结来说,shell就是操作系统和应⽤程序之间的⼀个命令翻译⼯具.
2.shell的分类:
基本上shell分两⼤类: 图形化界⾯shell和命令⾏shell
图形界⾯shell:图形界⾯shell就是常说的桌⾯
命令⾏shell:
windows系统: 命令提⽰符
linux: sh / csh / ksh / bash / …
常说的shell是命令⾏式的shell,在⼯作中常⽤的是linux的bash.
shell:baike.baidu/item/shell/99702
3.查看系统shell信息:
查看当前系统的shell类型:
echo$SHELL
/bin/bash
查看当前系统环境⽀持的shell:
cat /etc/shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
4.shell脚本:
shell使⽤⽅式:
⼿⼯⽅式: ⼿⼯敲击键盘,在shell的命令⾏输⼊命令,按Enter后,执⾏通过键盘输⼊的命令,然后shell返回并显⽰命令执⾏的结果, 逐⾏输⼊命令、逐⾏进⾏确认执⾏;
脚本⽅式: 就是说把⼿⼯执⾏的命令a,写到⼀个脚本⽂件b中,然后通过执⾏脚本b,达到执⾏命令a的效果.
shell脚本定义: 当可执⾏的Linux命令或语句不在命令⾏状态下执⾏,⽽是通过⼀个⽂件执⾏时,将这个⽂件为shell脚本。
5.shell脚本⽰例:
5.1 创建临时shell脚本⽂件test.sh, 注意以.sh结尾
#!/bin/bash
# 这是临时shell脚本
echo"nihao"
echo"test"
5.2 脚本执⾏效果:
6.shell的优缺:
shell的优点:
存在时间长.拥有较多的积累;
编写简单;
对环境依赖⼩;
shell的劣势:
⽆法失效件复杂的功能;
不⽀持线代编程语⾔的⾼级特性: ⾯向对象;
第⼆章: shell基础知识:
⼀、shell脚本:
1.创建脚本
脚本创建⼯具:(命令⾏)
创建校本的常见编辑器是:vi/vim
笔者个⼈习惯使⽤:nano
脚本命名:
1. shell脚本的命名简单来说就是要有意义,⽅便通过 脚本名,来知道这个⽂件是⼲什么⽤的;
2. ⽂件名以.sh结尾;
脚本内容:
1. ⾸⾏指定解释器: #!/bin/bash;
2. 命令罗列和语法套⽤;
注释内容:
单⾏注释:
除了⾸⾏的#不是注释外,其他所有⾏内容,只要⾸个字符是#,那么就表⽰该⾏是注释
#!/bin/bash
echo'1'
# echo '2' # 这⼀⾏就表⽰注释
echo'3'
多⾏注释:
多⾏注释有两种⽅法::<<! … ! 和 :<<;字符 … 字符
#!/bin/bash
echo'1'
:<<!echo'2'
echo'3'
shell最简单脚本echo'4'
!
echo'5'
2. 脚本执⾏:
shell执⾏⼤⽅式:
shell脚本的执⾏通常可以采⽤以下⼏种⽅式:
bash /path/to/script-name or /bin/bash /path/to/script-name
/
path/to/script-name or ./script-name (注意是在当前⽬录下执⾏脚本)
source script-name or . script-name (注意"."后⾯有空格)
执⾏⽅式说明:
1. 脚本⽂件本⾝没有可执⾏权限或脚本⾸⾏没有命令解释器时使⽤的⽅法, 推荐使⽤bash执⾏
2. 脚本⽂件具有可执⾏权限时使⽤;
3. 使⽤source或者.点号,加载shell脚本⽂件内容,使shell脚本内容环境和当前⽤户环境⼀致。
区别:
source或者.点号与其他执⾏⽅式的⽐较
test.sh 脚本内容如下:
#!/bin/bash
ps
终端执⾏命令如下:
python@ubuntu:~/Desktop$ ps# 返回当前终端运⾏的进程
PID TTY TIME CMD
34863 pts/1 00:00:00 bash# 当前终端开启的bash进程
34891 pts/1 00:00:00 ps
python@ubuntu:~/Desktop$ bash test.sh
PID TTY TIME CMD
34863 pts/1 00:00:00 bash# 当前终端开启的bash进程
34894 pts/1 00:00:00 bash# 执⾏bash test.sh命令时开启了⼀个⼦进程
34895 pts/1 00:00:00 ps
python@ubuntu:~/Desktop$ source test.sh
PID TTY TIME CMD
34863 pts/1 00:00:00 bash# 只有当前终端开启的bash进程,执⾏
34900 pts/1 00:00:00 ps
test.sh 脚本内容如下:
#!/bin/bash
echo$user
终端执⾏命令如下:
python@ubuntu:~/Desktop$ user=python # 当前终端定义变量
python@ubuntu:~/Desktop$ echo$user# 打印变量
python
python@ubuntu:~/Desktop$ bash test.sh # 使⽤bash⽅式会开⼦进程,不能使⽤当前终端定义的变量
python@ubuntu:~/Desktop$ source test.sh # 使⽤source⽅式不会开⼦进程,能使⽤当前终端定义的变量
python
总结: source后者点号(.)执⾏⽅式不会开启⼦进程,能共享当前终端定义的变量,其他执⾏⽅式会开启⼦进程.执⾏机制:
3. 脚本开发规范:
1. 脚本命名要有意义,⽂件后缀是.sh;
2. 脚本⽂件⾸⾏是⽽且必须是脚本解释器;
#!/bin/bash
...
3. 脚本⽂件解释器后⾯要有脚本的基本信息等内容;
4. 脚本⽂件中尽量不⽤中⽂注释
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论