博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
切割nohup.out的脚本
阅读量:4221 次
发布时间:2019-05-26

本文共 2443 字,大约阅读时间需要 8 分钟。

写切割nohup.out文件的脚本:

#!/bin/bash

#help 这是为切割nohup.out文件编写的脚本

#定义时间

current_date=`date -d "-1 day" "+%Y%m%d"`

echo $current_date

split  -b 65535000 -d -a 4  /home/weblogic/bea/user_projects/domains/zhywdomain/nohup.out  /home/weblogic/bea/user_projects/domains/zhywdomain/log/log_${current_date}_

#切割日志60M

#清空nohup.out

cat /dev/null > /home/weblogic/bea/user_projects/domains/zhywdomain/nohup.out                            

定时任务

service crond start

crontab -e

59 11 * * * /home/weblogic/bea/user_projects/domains/zhywdomain/nohup.sh

============================================================================================================

脚本写完后,可以执行,但是定时任务不能执行,只是因为脚本里面的路径没有写全路径,crontab执行时找不到。

split  -b 65535000 -d -a 4 切割不能将大文件全部切割,只能切割一小部分 

修改为

split  -b +100m -d -a 4 

current_date=`date -d "-1 day" "+%Y%m%d"`

其中%m之前写的是%M,用echo查看时时间不对,后修改为小写m

"+%Y%m%d" 同一天执行两次脚本的话会将前一次相同后缀的文件覆盖,为了不被覆盖加上小时"+%Y%m%d%H"

若执行次数多,不能完全避免覆盖,可以减少覆盖机率

下面是定时任务不能执行时找到的文章

转载:

==================================================================================================================

1 crond服务未启动

crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是打开它:

crond

service crond start

如果提示crond命令不存在,可能被误删除了,CentOS下可以通过这个命令重新安装:

yum -y install crontabs

2 权限问题

比如:脚本没有x执行权限,解决方法:

增加执行权限,或者用bash abc.sh的方法执行

3 路径问题

有的命令在shell中执行正常,但是在crontab执行却总是失败。有可能是因为crontab使用的sh未正确识别路径,比如:以root身份登录shell后执行一个/root/test.sh,只要执行

./test.sh

就可以了。但是在crontab中,就会找不到这个脚本,比如写完整:

/root/test.sh

4 时差问题

因为服务器与客户端时差问题,所以crontab的时间以服务器时间为准。

5 变量问题

有时候命令中含有变量,但crontab执行时却没有,也会造成执行失败。


验证后,我的定时脚本test.sh不执行不是上述任何一种原因,其实我的脚本就一句话:

[html] 
 
  1. #!/bin/bash  
  2. echo 123 >> testFile  
我希望通过这种方式来测试 我设置的定时脚本起作用了,于是我设置了该脚本每分钟执行一次,但是死活在脚本所在目录看不到这个文件,我手动执行

# sh test.sh

却能看到在脚本所在目录能看到这个文件

我怀疑是crontab根本没有执行,于是我在crontab中直接添加了

[html] 
 
  1. */1 * * * * echo 123 >> /home/denglinjie/testFile  
testFile文件生成了,说明crontab是执行了的,那看来是我脚本自身存在问题

最后发现,原来是testFile这里必须写完整的路径,我天真的以为testFile会生成在脚本所在的目录,所以改成了如下形式

[html] 
 
  1. #!/bin/bash  
  2. echo 123 >> /data/denglinjie/testFile  
然后就可以了。

其实路径是个非常容易出问题的地方,假设在/home/denglinjie目录下有一个脚本文件test1.sh,然后在该目录下还有一个脚本文件test2.sh

在test1.sh中执行了test2.sh,而且用的是相对路径,即相对test1.sh所在的路径。

如果在crontab -e中编辑的时候,执行的方式是

sh /home/denglinjie/test1.sh,当执行到调用sh test2.sh的时候,系统会认为是从crontab文件所在的目录去找test2.sh,但是其实是找不到的,造成执行失败

最开始我想的方法是,我要将我写的待执行的脚本文件以及被调用的其他的脚本和crontab文件放到一个地方,这样就可以拉,但是失败了,可能是因为权限问题,我进不去/var/spool/cron目录。

所以另外一个解决方法就是在执行脚本之前先通过 cd   /home/denglinjie 命令进入到脚本所在目录

http://blog.csdn.net/tianlianhua1995/article/details/78674842

你可能感兴趣的文章
数字图像处理基本知识--笔记一
查看>>
傅里叶变换的通俗理解
查看>>
傅里叶变换理解之二
查看>>
最大公共字串问题
查看>>
面试经
查看>>
男女比例问题
查看>>
大范围内素数的求法
查看>>
各大公司经典算法面试题
查看>>
各种进制转换的原理
查看>>
谈数学学习
查看>>
重要的算法
查看>>
面试常见的算法
查看>>
GPU的硬件结构
查看>>
AES加密算法在GPU上的实现
查看>>
Visual C++下的一些程序调试和开发技巧
查看>>
图像处理和计算机视觉中的经典论文
查看>>
时间与空间复杂度
查看>>
递归算法与非递归算法的转化
查看>>
C/C++随机数的产生
查看>>
判断点是否在三角形内
查看>>