linux crontab mailto,Crontab 知多少

本文主要介绍了 Linux 下 Crontab 的使用方法。手动执行正常但添加到 Crontab 无法执行,多是环境变量问题,添加任务时尽量用绝对路径或引入环境变量。还提到多用户下可将任务配置放 /etc/cron.d 目录,以及避免任务重复运行的方法,最后说明可通过日志恢复删除的 Crontab 任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原标题:Crontab 知多少

习惯在linux下工作的同学,可能经常会用 crontab 来布置定时任务。今天来和大家一起了解下 crontab 的相关使用方法。

我们经常会遇到,手动执行一个脚本一切正常,添加到 crontab 里却不能执行了。其实这类问题大多是由环境变量导致的,问题出在 crontab 的配置文件里。

使用命令打开配置文件:cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

crontab 默认的 path 是

/sbin:/bin:/usr/sbin:/usr/bin,不在该path路径下的脚本就会执行出错。所以我们在添加 crontab的时候,要尽可能的使用绝对路径(完整的全路径)。另外还可以在crontab编辑里引入环境变量 . /etc/profile ; xxxxx(crontab任务)。

此外很多人喜欢用 crontab -e 命令来编辑,多用户下,可能容易误删别人的任务。此时可以把任务配置放到/etc/cron.d 目录下。内容如下图所示:

MAILTO=""

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * * root sh /root/monitor_network.sh

上图的监控脚本是每隔1分钟执行一次,设想一种情况,如果1分钟内该任务没有执行完,那就会出现同时运行 2 个任务的情况,随着时间的积累,运行数可能会慢慢增加,耗费大量系统资源,那么如何避免这种情况呢?

1.程序层次

可以在脚本里加入下面的代码

num=`ps -ef|grep $0|grep -v 'grep'|grep -v $$|wc -l`

if [ $num -gt 0 ];then

exit

fi

2.使用linux的flock锁机制

MAILTO=""

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * * root flock -xn /tmp/monitor_network.lock sh /root/monitor_network.sh

3.如果有异常导致,程序无法自行终止时,可考虑使用 timeout命令

MAILTO=""

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * * root timeout -s 9 30 sh /root/monitor_network.sh

结束语:

如果不小心删除了crontab 任务,且没有记录的话。可以通过最近的 /var/log/cron 日志来恢复已经执行过的 crontab 。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值