Linux服务器 node.js服务的进程管理,问题排查,资源监控 编写tce,scm(web和node打包),docker脚本
bash和shell类似于类和实例的关系,bash是实例,shell是类。
shell既是一个解释器也是一个编程语言。
shell的语法和命令
常用的自定义变量和环境变量
可以给变量赋值,可以给变量赋值命令,可以给变量赋值命令结果,如果进行计算要let声明。
系统环境变量常用命令:#,?,HOME,$PSTH
文件分为登录式和非登录式
管道:管道的作用 | 是将前一个命令的结果传递给后一个命令 ,管道右侧的命令必须能接受标准输入才行。比如grep命令,ls,mv等不能直接使用,keyishiyongxargs预处理,注意:管道命令仅仅处理stdout,对于stderr(出错的命令)会忽略掉,可以使用set -o pipefail设置shell遇到管道错误退出。
重定向
可以利用重定向改变shell的输出路线,<<输入重定向,到指定符号就停止输入
整数测试作用分别是:小于 等于 大于,字符串测试作用分别是:字符串为空,非空,字符串是否相等,文件测试:文件是否存在,是否存在且为普通文件
例如:
上图中$name没有加引号会被解析为上面赋值的字符串。
if语句 -o代表或,if语句要跟then来表示判断完成后干什么事。case语句中用esac结尾
循环都要跟do命令来指示达到判定条件后做什么
注:参数用空格表示就行
函数里的return不表示执行结果,调用函数不会的到return的10。
用sourse引入模块
常用命令:grep,sort,wc,head,tail,cut,find, xargs,which。
shell执行过程和原理
shell中是不以后缀名判断文件类型的,而是以文件中第一行的文件路径选择解释器 ,shell文件在bash中,启动方式中,前两种会在子进程中执行脚本,sourse会在本进程中执行脚本。
图中中间蓝色部分就是bash解释器,左边展示了一个输入来到之后经历的过程。
调试shell脚本和前端集成
1.echo和printf打印想要的结果
2.set -u/-x/-e/-o pipefail 会在shell最开始的时候用set调试
3.vscode
前端集成
exec和spawn的区别:exec会启动一个子shell解析传入的命令,并且将命令的结果存在缓冲区(缓冲区有大小限制200k),执行完毕之后将结果返回到函数中来,spawn不会启动子shell,但是会返回一个流对象,我们直接对流对象进行写入和读取操作,没有大小限制。