发表于: 2017-11-01 20:49:57

0 860


今天做的事:


今天处理了昨天的遗留问题:服务的日志分布问题;前端代码部署问题。


首先是服务日志,这个其实就更改程序中log4j日志中的路径就可以。但是每次部署服务,更新代码什么的很麻烦,就写了一个脚本,命令堆叠,完成更新部署,自测了一下,还挺好用的。


之后发现之前copy的脚本有待完善,然后就加了点东西,免不了要学点东西:

首先是linux下if语句的使用;

使用的格式:

if [];then

  code

elif [];then

  code

else

  code

fi


使用了一个参数-n 用来判断参数是否为空,贴一下

[]里面的条件判断。

1 字符串判断

str1 = str2      当两个串有相同内容、长度时为真
str1 != str2      当串str1和str2不等时为真
-n str1        当串的长度大于0时为真(串非空)
-z str1        当串的长度为0时为真(空串)
str1           当串str1为非空时为真

2 数字的判断

int1 -eq int2    两数相等为真
int1 -ne int2    两数不等为真
int1 -gt int2    int1大于int2为真
int1 -ge int2    int1大于等于int2为真
int1 -lt int2    int1小于int2为真
int1 -le int2    int1小于等于int2为真

3 文件的判断

-r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真

3 复杂逻辑判断

-a         与
-o        或
!        非


时间有限,没有一一去试。


这里在测试参数的时候有个报错

[: too many arguments

这是因为参数没有做好引用

if [ -n $SIGN ]

改为

if [ -n "$SIGN" ]

问题解决


然后解决了脚本问题,开始给前端部署代码,今天具体看了一下问题,有个js文件报了502的错误,然后百度了一下,最后结合之前师兄的配置文件,加上自己瞎猜,估计是静态资源的加载问题,所以就在Nginx配置中配置了静态资源的加载,使用了正则表达式,果然这玩应很重啊,有时间一定得好好学学。


添加内容就很短的东西。

location ~ .*.(js|css)$

{

root filepath;

allow all;

}

然后就搞定了。。。

这里~表示后面是一个正则表达式,相当于一个标识符

.代表任意字符

*代表重复多次

后面那个.是文件后缀带的那个点

|代表选择,就是或

$代表的是字符串结束


期间遇到304状态码,并不是报错,这是表示资源没有变化,有缓存影响,可以使用ctrl+F5强制刷新。


虽然看起来没什么东西,但是做出来还是花了几个小时。。。


之后在写脚本的时候发现了一个问题,就是脚本中的最后的cd命令不起效,然后百度,发现了新大陆。

虽然我在脚本最后一行使用了

cd /

但是脚本运行完毕还是在脚本的当前路径下,没有变化,这里使用的是./*.sh命令使用的


之后百度,发现使用. *.sh命令可以完成cd切换路径,这里需要解释一下,.相当于source命令,可以说是别称把。


这里解释为什么两种执行方式会出现差异。


首先,./*.sh执行脚本必须要有相应的文件权限,否则无法运行;而使用source(也就是.)不需要文件权限。

其次,source执行脚本,是在当前脚本进程下执行的,所以,使用source执行脚本,就是纯粹的命令堆叠,什么命令都和手敲没什么区别。

但是使用./*.sh的方式执行脚本,是在当前脚本进程下创建了一个子shell运行脚本,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。

这就好比,你的脚本执行后,脚本本身有对应的PATH变量,用来保存你现在的当前路径,然后它有新建一个子shell,来执行你在脚本中写的命令,操作都可以正常运行,然后子shell运行最后一句cd,之后子shell结束,回到父shell,然后父shell通过PATH变量回到你的脚本所在路径,父shell结束,最后整个脚本运行完毕。(不知道理解是否有误,这块有点绕,刚开始没读懂)


现在所有服务器部署之类的也都做完了,也优化完善了,终于可以开始开发了,呼~


明天计划:写接口。


问题:都已解决,接下来的时间熟悉一下自动生成的代码,为明天开发做准备。


收获:收获了一堆linux上的知识,外加一点Nginx加载静态资源涉及的正则表达式,主要获得的都是脚本知识。。。



返回列表 返回列表
评论

    分享到