技术分享 LINUX 查看内容

at、cron定时任务 增加 删除 查看

老高 | 发布于 2019-11-26 09:08| 浏览()| 评论() | 收藏() | 点赞() | 打印

语法:at   <时间描述>  

例:

◦ at 6pm Monday

◦ at now + 5 minutes

◦ at 13:15 05/12/2010

------------------------at计划任务--------------------------
[chen@localhost 桌面]$ su - root
密码:
[root@localhost ~]# service atd status#先查看系统中atd服务是否运行
atd (pid  2042) 正在运行...
[root@localhost ~]# chkconfig --list|grep atd#也可以通过这种方式查看,当前系统运行在5级别,默认是运行的
atd            0:关闭1:关闭2:关闭3:启用4:启用5:启用6:关闭
[root@localhost ~]# at 21:00#在每天的21:00点执行下面的操作
at> cat /etc/passwd >> /passwd.backup 
at> <EOT>#ctrl+D结束任务
job 1 at 2012-08-07 21:00#系统会分配一个job号,这里是1
[root@localhost ~]# atq#atq查询当前用户的at计划任务
12012-08-07 21:00 a root
#每个用户默认都可以指定自己的at计划任务,但是root可以在/etc/at.deny中写入用户名
#使这些用户不能使用at计划任务,写入的时候每个用户名占一行
[root@localhost ~]# vim /etc/at.deny 
chen
user1#指定chen和user1不能使用at计划任务
[root@localhost ~]# exit
logout
[chen@localhost 桌面]$ at 10:00
You do not have permission to use at.#chen不能使用at了
[chen@localhost 桌面]$ su - user1
密码:
[user1@localhost ~]$ at 10:00
You do not have permission to use at.#user1也不能使用at
[user1@localhost ~]$ su - user2
密码:
[user2@localhost ~]$ at 10:00#但是user2可以,因为user2没有被写入/etc/at.deny中
at> <EOT>
job 2 at 2012-08-08 10:00
[user2@localhost ~]$ exit
logout
[user1@localhost ~]$ exit
logout
[chen@localhost 桌面]$ su - root
密码:
[root@localhost ~]# vim /etc/at.deny 
chen
user1#这里把user1删掉,保存退出。
[root@localhost ~]# su - user1
[user1@localhost ~]$ at 10:00
at> <EOT>
job 3 at 2012-08-08 10:00#可以看到user1可以创建at计划任务了
[user1@localhost ~]$ exit
logout
[root@localhost ~]# exit
logout
[chen@localhost 桌面]$ at 10:00#chen还是不可以的
You do not have permission to use at.
[chen@localhost 桌面]$ su - root
密码:
[root@localhost ~]# su - user1#再切换到user1
[user1@localhost ~]$ atq 
32012-08-08 10:00 a user1
[user1@localhost ~]$ atrm 3#可以通过atrm job号删除一个计划任务
[user1@localhost ~]$ atq#可以看到job 3任务被删除。
[user1@localhost ~]$ exit
logout


corn的特殊时间表示方法

* 表示该范围内到任意时间

, 表示间隔的多个不连续时间

- 表示一个连续的时间范围

/ 指定间隔的时间频率

示例:

时间的格式是从左到右依次为:分、时、日、月、星期、指令

0 17 * * 1-5 周一到周五每天的17:00

30 8 * * 1,3,5 周一、三、五每天到8:30

0 8-18/2 * * * 每天的8到18点,每隔两小时

0 * */3 * * 每隔3天

注意:

1.时间中没有年

2.时间格式第一项分钟不能为*,其他都可以

----------------------------cron计划任务------------------------------
 
[root@localhost ~]# service crond status
crond (pid  3155) 正在运行...
[root@localhost ~]# chkconfig --list|grep crond
crond          0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
[root@localhost ~]# /etc/init.d/crond restart#可以这样重启服务
停止 crond:                                               [确定]
正在启动 crond:                                           [确定]
[root@localhost ~]# crontab -e -u chen#编辑chen这个用户的cron计划任务
no crontab for chen - using an empty one
crontab: installing new crontab
You have mail in /var/spool/mail/root
 
0 17 * * 1-5 tar cvfz /tmp/log.tar.gz /var/log/*#写入这句话,每周一到周五的17:00备份/var/log/*
 
[root@localhost ~]# exit
logout
[chen@localhost 桌面]$ crontab -l#普通用户可以通过这样查看自己的计划任务
0 17 * * 1-5 tar cvfz /tmp/log.tar.gz /var/log/*
[chen@localhost 桌面]$ crontab -e -u user1#普通用户不能指定其他用户的cron计划任务
must be privileged to use -u
[chen@localhost 桌面]$ su - user1
密码:
[user1@localhost ~]$ crontab -e#普通用户只能加-e编辑自己的cron计划任务
no crontab for user1 - using an empty one
crontab: installing new crontab
 
0 15 * * 1,3,5 ls /etc/* >> /etc.backup
[user1@localhost ~]$ crontab -l#查看当前的cron任务
0 15 * * 1,3,5 ls /etc/* >> /etc.backup
[user1@localhost ~]$ ls /var/spool/cron/#所有用户的cron任务默认保存在/var/spool/cron/下面并以用户名命名
ls: 无法打开目录/var/spool/cron/: 权限不够#但是普通用户不能查看,这必须的!
[user1@localhost ~]$ exit
logout
[chen@localhost 桌面]$ su - root
密码:
[root@localhost ~]# ls /var/spool/cron/#root就可以看了,所有人的都在这里
chen  user1
[root@localhost ~]# cat /var/spool/cron/user1#cat下可以看到其中的内容
0 15 * * 1,3,5 ls /etc/* >> /etc.backup
#最后试验下root可以删除普通用户的cron任务和普通用户删除自己的计划任务
[root@localhost ~]# crontab -l -u chen#root查看普通用户的任务
0 17 * * 1-5 tar cvfz /tmp/log.tar.gz /var/log/*
[root@localhost ~]# crontab -r -u chen#root删除chen普通用户的任务
[root@localhost ~]# crontab -l -u chen
no crontab for chen#已经被删除了
[root@localhost ~]# su - user1
[user1@localhost ~]$ crontab -l#查看自己的任务
0 15 * * 1,3,5 ls /etc/* >> /etc.backup
[user1@localhost ~]$ crontab -r#删除自己的任务
[user1@localhost ~]$ crontab -l
no crontab for user1#已经被删除了
最后总结以下:
root可以创建没普通用户cron计划任务crontab -e -u chen
普通用户只能创建自己的cron计划任务crontab -e
所有用户的cron任务都默认保存在/var/spool/cron/下面,以各自的用户名命名,只有root用户可以查看
root还可以命令查看具体用户的任务crontab -l -u chen
普通用户可以查看自己的cron计划任务crontab -l
root可以删除普通用户的任务crontab -r -u chen
普通用户只能删除自己的cron计划任务crontab -r
和at计划任务一样,root可以编辑/etc/cron.deny,将用户名写入这个文件,一行一个用户名,这样可以禁止该用户使用cron任务,这里不再试验了

查看cron任务执行记录

tail -f /var/log/cron

不小心删除/var/log/cron的日志怎么办?

service rsyslog restart  
service crond restart

无法启动tomcat的问题,在脚本中加入

export JAVA_HOME=/usr/data0/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin

相对路径问题,定时任务执行的脚本中使用绝对路径

warfile="/usr/data0/wars/pinhuba/deploy.war"


发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)

表情