初识crontab

说实话,对于Linux许多shell和工具,我都没研究过。除了写过点代码,熟记几个命令,其它基本上没什么突出的本事——有点担心简历上的文字了。

对于crontab,我一直只闻其名,未真正接触过。这次算有点认识了。

我一直想做一下清除日志的事情,因为无意中发现/var/log有20多MB。在周末做了压力测试后,竟然达到GB级别。后来查了些资料,可以通过crontab进行定时任务,于是了解了一下crontab。

其实crontab使用也简单,比如每隔一分钟,就做删除一个文件。可以这样:输入crond -e,选择一个编辑器,如vim,加入
0-59/1 * * * * rm /root/a.txt
表示每隔1分钟都删除一次a.txt

先前,我执行的命令是:0-59/1 * * * * ll,即每一分钟都列出当前目录。结果等了一分钟,毫无效果,于是一直上网搜索“crontab不执行”,却没什么有用的信息。后来我用删除的命令来测试,才发现的确会执行,每当我touch出一个a.txt文件后,时间跳过分钟时,这个文件就被删除了,——原来,命令已执行,只是我不知而已。

成功后就十分的兴奋,试试传说中的定时任务。如:
01 00 * * * /root/my_test.sh

表示每天00:01分执行一次my_test.sh脚本。


开启日志crontab的日志,编辑文件/etc/rsyslog.d/50-default.conf,打开注释:

cron.*                          /var/log/cron.log

重启crontab服务:

 /etc/init.d/cron restart

系统中有很多定时任务,看看/etc:

root@localhost:etc# ls cron*

 crontab

 cron.d:
 anacron  sysstat

 cron.daily:
 0anacron  apache2  apt  dpkg  logrotate  ntp  passwd  sysstat  upstart

 cron.hourly:

 cron.monthly:
 0anacron

 cron.weekly:
 0anacron  fstrim

每小时、每一天、每一周、每一月都分门别类地放在。

开始时,我以为要自己写个清理日志的脚本,放到crontab中,后来发现有一个叫logrotate的东东,这里看看与日志回滚有关的配置文件logrotate:

cat logrotate 
#!/bin/sh


# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
    [ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status


test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf


看看上面提到的 /etc/logrotate.conf文件:

cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
#weekly
# everyday Late Lee...
daily


# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog


# keep 4 weeks worth of backlogs

# keep 2 Late Lee
rotate 2


# create new (empty) log files after rotating old ones
create


# uncomment this if you want your log files compressed
compress


# packages drop log rotation information into this directory
include /etc/logrotate.d


# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}


/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
}


# system-specific logs may be configured here

在这个文件就可以配置是按天还是按周进行日志回滚。


有试验过程中出现提示:No MTA installed, discarding output,查了资料,网上有解决方法, 在每条定时脚本后面加入“>/dev/null 2>&1”就可以解决No MTA installed, discarding output的问题。

鉴于自己不是搞运维的,实际中使用crontab也不是很多,所以只能是”初识crontab“,深入的东西,待有机会再去了解了解。


李迟,2014年12月18日中午


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值