『壹』 linux日志管理神器之Logrotate日志分割,以及crontab定时轮询
有些服务,会自动产生大量的日志文件,如果不限制,会占用磁盘空间。
如果单纯的用定时任务crontab删除,又不太灵活,这时需要日志神器logrotate。
logrotate工具是系统自带为了方便进行日志管理而产生的一个工具。
系统会定时运行 logrotate,一般是每天一次。也是基于定时任务crontab运行的。
配置文件:
主配置文件的位置在 /etc/logrotate.conf,一般配置在 /etc/logrotate.d/子目录下。
如系统默认日志配置:
配置文件参数:
更多信息请参考man logrotate帮助文档
模板是通用的,而配置参数则根据你的需求进行调整,不是所有的参数都是必要的。
在上面的配置文件中,我们只想要轮询一个日志文件,size=50M 指定日志文件大小可以增长到 50MB,dateext 指 示让旧日志文件以创建日期命名。
可自行参考/etc/logrotate.d/目录下系统默认的文件。
logrotate命令:
具体 logrotate 命令格式如下:
要为某个特定的配置调用 logrotate:
排障过程中的最佳选择是使用-d选项以预演方式运行 logrotate。要进行验证,不用实际轮循任何日志文件, 可以模拟演练日志轮循并显示其输出。
正如我们从上面的输出结果可以看到的,logrotate 判断该轮循是不必要的。如果文件的时间小于一天,就会发生了。
强制轮循即使轮循条件没有满足,我们也可以通过使用-f选项来强制 logrotate 轮循日志文件,-v参数提供了详细的输出。
个人项目配置:
项目每天可产生20G左右的日志,显示不能做每日轮询,所以额外需要添加定时任务做每小时,或者每隔多少分钟。
如果轮询日志异常报错如下:
error: skipping “” because parent directory has insecure permissions (It’s world writable or writable by group which is not “root”) Set “su” directive in config file to tell logrotate which user/group should be used for rotation.”
需要加 su root root 选项。
同时添加定时任务:
定时任务说明:
第一条,每隔40分钟轮询执行一次logrotate任务。
第二条,每天凌晨4点删除前一天的日志,原因如下:
由于项目系统产生日志格式的原因,会导致以下情况:
如果昨天的分割到4个后(或者1,2,3),时间到第二天后,没法转储递增,会一直停留在4,没法删除,每天会有,久而久之,也会占用磁盘空间。所以需要定时删除。
设置完成
开启定时任务日志,以便查看定时任务是否执行。后续可取消。
重启rsyslog
『贰』 linux查看定时任务有什么流程
很多朋友都想知道怎么查看linux的定时任务?下面就一起来看看吧!
查看linux的定时任务
1、打开linux系统,在linux的桌面的空白处右击。
2、敬竖消在弹出的下拉选项里,点击打亮知开终端。
3、在终端窗口中输入systemctlstatus命令查看atd服务是否开启。
4、输入date命令就可以查看到当前的纤滑定时任务了。
『叁』 怎么查看linux服务器是否还在执行我的定时任务
1、你的任务执行是否会产生记录,如果有,就看日志,如果没有,就把输出内容追加到一份文件中进行日志记录。
2、可以考虑对进程进行监控,查看你的计划任务指定的任务进程存活了多久。在任务暂停的时间点,根据设备主要性能指标的数值进行排查。
『肆』 如何查看linux系统的所有用户的定时任务
crontab命令选项基本只有对用户操作的选项:
-u 指定一个用户
-l 列出某个用户的任务计划
-r 删除某个用户的任务
-e 编辑某个用户的任务
所以,要查看所有用户的,只能根据/etc/passwd文件中的用户名一一枚举了,可以用脚本。
『伍』 linux 定时任务怎么看执行
crontab -l -u XXX 列出XXX用户的所有定时任务,如有没有会提示 no crontab for XXX 没有直接查看所有用户的命令只内能一个一容个来查。 cat /etc/passwd |cut -f 1 -d : 此命令列出所有用户。
『陆』 linux下编写定时任务crontab
linux下的crontab服务:
1、crontab 是用来让使用者在固定时间或固定间隔执行程序之用
在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。
以某一频率执行任务
linux缺省会启动crond进程,crond进程不需要用户启动、关闭。
crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。
cron的调度文件有以下几个:
1. crontab
2. cron.d
3. cron.daily
4. cron.hourly
5. cron.monthly
6. cron.weekly
如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。
示例:
每隔一分钟执行一次脚本 /opt/bin/test-cron.sh
可以在cron.d新建脚本 echo-date.sh
内容为
*/1 * * * * root /opt/bin/test-cron.sh
2、cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,如果它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
你也可以将这个服务在系统启动的时候自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
现在Cron这个服务已经在进程里面了,我们就可以用这个服务了
查看服务是否已经运行用 ps -ax | grep cron
3、crontab命令
查看该用户下的crontab服务是否创建成功, 用 crontab -l 命令
命令 which php 查看linux下安装的php的路径
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
任务调度的crond常驻命令crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此 任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
crontab命令选项:
-u指定一个用户
-l列出某个用户的任务计划
-r删除某个用户的任务
-e编辑某个用户的任务
4、cron文件语法:
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
5、 新增调度任务
新增调度任务可用两种方法:
1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
6、 查看调度任务
crontab -l //列出当前的所有调度任务
crontab -l -u jp //列出用户jp的所有调度任务
7、 删除任务调度工作
crontab -r //删除所有任务调度工作
8、 任务调度执行结果的转向
例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中
30 5 * * * ls >/jp/test 2>&1
注:2>&1 表示执行结果及错误信息。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行 /etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本
大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写::要运行的某个脚本名,而不是文件夹名了。
总结:
编写定时任务的两种方式:1.sudo vim /etc/crontab 2. sudo crontab -e
查看定时任务的两种方式:1.sudo cat /etc/crontab 2.sudo crontab -l
*/1 * * * * appuser cd /app/webserver/website/api-cb.chuchujie.com/master/current/script/ && ./back_coupon.sh 2 10 >> /dev/null 2>&1
查看定时任务是否运行:
sudo tail -f /var/log/cron //定时任务日志(查看刚才设置的任务是否执行)
注:脚本有可执行权限
sh a.sh(不需要执行权限)
./sh (需要执行权限)
1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别的。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
『柒』 Linux系统中如何查看日志信息
cat
tail -f
日 志 文 件 说 明
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
系统:
echo $PATH # 显示系统变量的信息
# uname -a # 查看内核/操作系统/CPU信息
# cat /etc/issue
# cat /etc/redhat-release # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
资源:
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载
磁盘和分区:
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
网络:
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
进程:
# ps -ef # 查看所有进程
# top # 实时显示进程状态(另一篇文章里面有详细的介绍)
用户:
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务
服务:
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务
程序:
# rpm -qa # 查看所有安装的软件包