脚本执行报错 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

移除后,再次执行脚本,可以正常执行

posted @ 2024-08-09 18:28  darling331  阅读(20)  评论(0编辑  收藏  举报