Linux crontab命令 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成 *** 作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
crontab文件:指定包含待执行任务的crontab文件。
Linux下的任务调度分为两类:系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。
/etc/crontab文件包括下面几行:
前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。
用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致,使用者权限文件如下:
/etc/cron.deny 该文件中所列用户不允许使用crontab命令
/etc/cron.allow 该文件中所列用户允许使用crontab命令
/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名
crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command 顺序:分 时 日 月 周
其中:
在以上各个字段中,还可以使用以下特殊字符:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
查看crontab服务状态:
service crond status
手动启动crontab服务:
service crond start
查看crontab服务是否已设置为开机启动,执行命令:
ntsysv
加入开机自动启动:
chkconfig –level 35 crond on
每1分钟执行一次command
每小时的第3和第15分钟执行
在上午8点到11点的第3和第15分钟执行
每隔两天的上午8点到11点的第3和第15分钟执行
每个星期一的上午8点到11点的第3和第15分钟执行
每晚的21:30重启smb
每月1、10、22日的4 : 45重启smb
每周六、周日的1:10重启smb
每天18 : 00至23 : 00之间每隔30分钟重启smb
每星期六的晚上11:00 pm重启smb
每一小时重启smb
晚上11点到早上7点之间,每隔一小时重启smb
每月的4号与每周一到周三的11点重启smb
一月一号的4点重启smb
每小时执行/etc/cron.hourly目录内的脚本
1.修改crontab文件添加或修改定时任务直接编辑文件:nano /etc/crontab
或使用crontab命令:crontab -e
2.语法介绍:
里面已经有一些test示例,照着添加或修改就行,这里做点简单介绍:
time user command
分 时 天 月 星期 用户 命令
minute hour day month dayofweek user command
A. 时间 time:
minute: 分钟,从 0 到 59 之间的任何整数
hour: 小时,从 0 到 23 之间的任何整数
day: 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)
month: 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)
dayofweek: 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)
command: 要执行的命令(command是linux终端可以直接执行的命令。)
这里一些符号可以表示以上特殊数值:
*表示所有有效值
-表示范围, 比如1-4(从1到4)
,表示散数数值, 比如1,2,4,7...
/表示每隔,比如 */19 (每隔19 )
看一些简单的例子,以下是我自己的一个crontab文件:
root@mtx:~#crontab -l
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/.sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow usercommand
#17 ** * *root cd / &&run-parts --report /etc/cron.hourly#每小时的17分
#25 6* * *roottest -x /usr/sbin/anacron || ( cd / &&run-parts --report /etc/cron.daily )#每天6点25分
#47 6* * 7roottest -x /usr/sbin/anacron || ( cd / &&run-parts --report /etc/cron.weekly )#每年7月份里每一天的6点47分
#52 61 * *roottest -x /usr/sbin/anacron || ( cd / &&run-parts --report /etc/cron.monthly )#每个月1号的6点52分
*/4 * * * * root /home/Tool/httpslow/httpslow.sh 每4分钟
#
B. 命令 command
命令command直接是linux终端可以执行的命令或可执行脚本的绝对位置
3.使用方法:
crontab crontab_file (-u user)#如crontab /etc/crontab -u root (root用户执行默认配置文件)
crontab -l#查看当前正在运行的crontab服务
crontab -r#删除用户crontab配置文件
crontab -i#删除前给出提示
crontab -h#查看帮助
/etc/init.d/cron start/stop/restart/reload#启动/停止/重启/重新加载 crontab服务
简单的临时重复命令完全可以有其他方案代替:
while truedo clear &&echo '您的ip地址是:' &&wget -qo- ifconfig.me/ipsleep 120done
#每2分钟刷新一次外网ip地址,并打印出来”
watch -n 5 netstat -nus#显示网络流量,每5秒刷新一次
。。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)