Linux Cron 定时任务

本文介绍了如何在Linux系统中使用crontab命令设置定时任务,包括编辑、列出、删除用户crontab的方法。强调了定时任务文件必须为Unix格式,并指出crontab不会自动导入环境变量,需要在脚本中显式导入。同时提供了定位crontab问题的技巧,如添加测试任务和检查日志文件。此外,还提到了定时任务文件在/var/spool/cron目录下的存储情况。

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

目标:

通过crontab命令在Linux系统设置定时任务

crontab命令

-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab
-i prompt before deleting
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-V print version and exit
-x <mask> enable debugging

准备定时任务的文件 /home/demo/cron-job

这个文件一定要是Unix(LF)格式,不能是Windows(CR LF)格式会导致定时任务执行失败

15 3 * * *  /bin/sh /home/demo/restart.sh

这种方式可能会手动执行restart.sh没问题,但是定时任务不生效,缺少环境变量导致。

在shell中执行时是能够找到环境变量的,但是在crontab中,它是不会自己导入环境变量的,需要我们指定 . /etc/profile 就是导入环境变量。并将所有路径都写成绝对路径。

15 3 * * * ./etc/profile; /bin/sh /home/demo/restart.sh
15 4 * * * ./etc/profile; /bin/sh /home/demo/restart.sh

通过文件给用户root设置定时任务

sudo crontab -u root /home/demo/cron-job

直接命令行修改用户root定时任务

sudo crontab -u root -e

查看用户roog的定时任务 

sudo crontab  -u root -l

增加了crontab任务后,在/var/spool/cron目录下会有一个账号命名的文件。该文件的内容就是刚账号的crontab任务。

对crontab问题的定位方法:

1.在crontab文件最后一行加入一个测试任务,如: * * * * * root echo “hello world” >> /root/test_cron 每分钟写一条,很快就能看出是不是crontab中语法的问题。

2.查看日志文件,定时任务的日志文件一般是/var/log/cron,查看下这个文件的最后几行就能知道定时任务是不是完全都停掉了,是不是在执行过程中遇到了什么问题。

  

参考

Linux下定时任务的查看及取消

【linux】crontab无效解决办法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值