习惯于在linux下工作的学生可能经常使用crontab来安排预定的任务。今天,让我们学习如何使用crontab。
我们经常会遇到,手动执行一个脚本是很正常的,但是添加到crontab后就无法执行了。其实这些问题大多是环境变量造成的,问题出在crontab的配置文件上。
使用以下命令打开配置文件:cat /etc/crontab
SHELL=/bin/bash
PATH =/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
#如需详细信息,请参阅手册4 crontabs
#作业定义示例:
# .-分钟(0 - 59)
# | .-小时(0 - 23)
# | | .-月中的某一天(1 - 31)
# | | | .-月(1 - 12)或1月、2月、3月、4月...
# | | | | .-星期几(0 - 6)(星期日=0或7)或星期日、星期一、星期二、星期三、星期四、星期五、星期六
# | | | | |
# * * * * * *要执行的用户名命令
Crontab的默认路径是
/sbin:/bin:/usr/sbin:/usr/bin,不在此路径下的脚本将执行错误。所以我们在添加crontab的时候,要尽可能使用绝对路径(完整的全路径)。另外,还可以引入环境变量。/etc/profile在crontab中编辑。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分钟内没有完成,两个任务将同时运行。随着时间的积累,运行次数可能会慢慢增加,消耗大量系统资源。如何避免这种情况?
1.程序级别
您可以将以下代码添加到脚本中
num = ` PS-ef | grep $ 0 | grep-v ' grep“| grep-v $ $ | WC-l `
if[$ num-gt 0];然后
退出
场电离(field ionization的缩写)
2.使用linux的群锁机制
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.如果程序因异常无法自行终止,可以考虑使用超时命令。
MAILTO= " "
PATH =/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * root time out-s 9 30 sh/root/monitor _ network . sh
结束语:
如果crontab任务被意外删除并且没有记录。执行的crontab可以通过最新的/var/log/cron日志恢复。
1.《crontab用法 Crontab 知多少》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《crontab用法 Crontab 知多少》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guonei/1181073.html