Table of Contents:

像部署服务器的工作可能会要用到些公共的文件啥的,可以放到一个静态服务器或cdn上,shell脚本中用wget去获取脚本

好的实践方法:
* shell脚本要实时的打印脚本的执行情况,以方便调用人员知道执行情况,而不会产生焦虑

Shell是什么?1分钟理解Shell的概念!

Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。

Shell是运维人员必须掌握的技能

OPS 这项工作的细节内容包括:
* 安装操作系统,例如 CentOS、Ubuntu 等。
* 部署代码运行环境,例如网站后台语言采用 PHP,就需要安装 Nginx、Apache、MySQL、PHP 运行时等。
* 及时修复漏洞,防止服务器被攻击,这包括 Linux 本身漏洞以及各个软件的漏洞。
* 根据项目需求升级软件,例如 PHP 7.0 在性能方面获得了重大突破,如果现在服务器压力比较大,就可以考虑将旧版的 PHP 5.x 升级到 PHP 7.0。
* 监控服务器压力,别让服务器宕机。例如淘宝双十一的时候就会瞬间涌入大量用户,导致部分服务器宕机,网页没法访问,甚至连支付宝都不能使用。
* 分析日志,及时发现代码或者环境的问题,通知相关人员修复。

Shell命令的本质到底是什么?如何自己实现一个命令?

Shell 命令分为两种:
* Shell 自带的命令称为内置命令,它在 Shell 内部可以通过函数来实现,当 Shell 启动后,这些命令所对应的代码(函数体代码)也被加载到内存中,所以使用内置命令是非常快速的。
* 更多的命令是外部的应用程序,一个命令就对应一个应用程序。运行外部命令要开启一个新的进程,所以效率上比内置命令差很多。

Linux Shell命令提示符

[mozhiyan@localhost ~]$

$是命令提示符。Linux 用这个符号标识登录的用户权限等级:如果是超级用户(root 用户),提示符就是#;如果是普通用户,提示符就是$

第二层命令提示符
有些命令不能在一行内输入完成,需要换行,这个时候就会看到第二层命令提示符。第二层命令提示符默认为>,请看下面的例子:
比如:

[root@localhost bin]# echo "aaa
> bbb
> ccc"
aaa
bbb
ccc

执行Shell脚本(多种方法)

./test.sh
bash test.sh
source filename

source 是 Shell 内置命令的一种,它会读取脚本文件中的代码,并依次执行所有语句。你也可以理解为,source 命令会强制执行脚本文件中的全部命令,而忽略脚本文件的权限。

Shell四种运行方式(启动方式)精讲

Shell 一共有四种运行方式:
* 交互式的登录 Shell;
* 交互式的非登录 Shell;
* 非交互式的登录 Shell;
* 非交互式的非登录 Shell。

Shell配置文件(配置脚本)的加载

登录式的 Shell

Bash 官方文档说:如果是登录式的 Shell,首先会读取和执行 /etc/profiles,这是所有用户的全局配置文件,接着会到用户主目录中寻找 ~/.bash_profile、~/.bash_login 或者 ~/.profile,它们都是用户个人的配置文件。

非登录的 Shell

如果以非登录的方式启动 Shell,那么就不会读取以上所说的配置文件,而是直接读取 ~/.bashrc。

~/.bashrc 文件还会嵌套加载 /etc/bashrc,请看下面的代码:

if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

如何编写自己的Shell配置文件(配置脚本)?

对于普通用户来说,也许 ~/.bashrc 才是最重要的文件,因为不管是否登录都会加载该文件。

我们可以将自己的一些代码添加到 ~/.bashrc,这样每次启动 Shell 都可以个性化地配置。如果你有代码洁癖,也可以将自己编写的代码放到一个新文件中(假设叫 myconf.sh),只要在 ~/.bashrc 中使用类似. ./myconf.sh的形式将新文件引入进来就行了

实例1:给 PATH 变量增加新的路径

如果我们想增加自己的路径,可以将该路径放在 ~/.bashrc 文件中,例如:

PATH=$PATH:$HOME/addon