脚本执行报错 cp: cannot stat '/home/dar/app/log_back'$'\r''/nohup.out': No such file or d
背景
针对线上nohup日志较大,需要进行拆分,所以写了一个脚本文件,用来定时执行(或者手动执行)
脚本一
log_dir="/home/dar/app/log_back"
# 拷贝日志文件到昨天的log中
cp $log_dir/nohup.out $log_dir/nohup-$(date +"%Y%m%d_%H%M%S").log
# 清空nohup.out日志
truncate -s 0 $log_dir/nohup.out
# 删除14天以前的日志
find $log_dir -mtime +14 -name 'nohup*.log' -delete
脚本二
log_dir="/qtl/interphone"
# 拷贝日志文件到昨天的log中
cp $log_dir/nohup.out $log_dir/nohup`date -d yesterday +%Y%m%d`.log
# 清空nohup.out日志
echo > $log_dir/nohup.out
# 删除14天以前的日志
find $log_dir -mtime +14 -name 'nohup*.log' -exec rm -rf {} \;
这个脚本,看起来是没有问题的,但是传输到linux服务器上后,执行,就会报错,找不到路径,看错误信息,就是一些乱七八糟的字符影响了
truncate: cannot open '/home/dar/app/log_back'$'\r''/nohup.out'$'\r' for writing: No such file or directory
'ind: unknown predicate `-delete`
然后,需要使用dos2unix命令或者sed来移除Windows风格的行结束符
sed -i 's/\r//' log.sh
移除后,再次执行脚本,可以正常执行
惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。
一代天骄,成吉思汗,只识弯弓射大雕。
俱往矣,数风流人物,还看今朝