简单介绍一下背景,jenkins自动部署需要前后的执行脚本
jenkins通过ssh协议对服务器进行请求,执行脚本
执行脚本里的内容不过是对资源文件进行备份、线上配置文件恢复、重启等操作
我在jenkins中配置一台新服务器,自动部署失败
逐一执行脚本发现问题:其中有恢复的cp脚本
cp -rf ./resource-backup ./resource
此处的cp -rf (recursive、force)递归强制拷贝文件
但是在却一直提示是否覆盖,脚本执行自然不能正常执行
查看alias 命令,发现是cp有别名【cp=cp -i】
三种解决方案
- cp命令前追加 unalias cp (临时取消别名)
unalias cp cp -rf ./resource-backup ./resource
-
执行\cp 命令代替cp (\shell 不用别名)
\cp -rf ./resource-backup ./resource
- root下编辑 vim ~/.bashrc; 可以看到 alias cp='cp' , 在句首添加注释#;保存后,执行[source ~/.bashrc]
各个厂商实现的shell版本略有差异,以上三个方案应该可以覆盖大部分版本是shell。