如何理解定时任务-cron
linux中定时任务就像是你自己手机里提前设置好的闹钟,不仅仅如此,这个“闹钟”到点了可以自己执行任务(可以用自动化脚本实现)。利用好定时任务可以让你控制的自动化更加省时省力
1.如何区分是谁创建的定时任务?
linux是可以多用户固定操作维护的,那如何避免造成多用户设置一个定时任务造成混乱呢?实际上不同用户创建的定时任务都会用对应的用户名来命名,以此区分不同的用户创建的不同用户名
执行如下命令
cd /var/spool/cron
[root@hce spool]# cd /var/spool/cron
[root@hce cron]# ll
总用量 12
-rw------- 1 oldboy oldboy 23 5月 26 11:18 oldboy
-rw------- 1 paipai paipai 26 5月 26 11:22 paipai
-rw------- 1 root root 222 6月 26 21:44 root
就可以发现在我所使用的服务器中,我一共使用了三个用户,创建定时任务,具体的定时任务创建。
2.crontab的使用
常用命令
[paipai@hcss-ecs-72ce cron]$ crontab -l #查看当前系统登录用户编写的定时任务具体内容
[paipai@hcss-ecs-72ce cron]$ crontab -e #编辑定时任务
[paipai@hcss-ecs-72ce cron]$ crontab -r #删除当前登录用户编辑好的定时任务内容
执行删除命令的效果如下所示
[paipai@hcss-ecs-72ce cron]$ crontab -l
#hello my name is paipai
[paipai@hcss-ecs-72ce cron]$ crontab -r
[paipai@hcss-ecs-72ce cron]$ crontab -l
no crontab for paipai
[paipai@hcss-ecs-72ce cron]$
3.创建一个定时任务
使用crontab -e进入当前用户的工作表编辑,是常见的vim界面。一行是一条命令
crontab的命令构成为时间+动作,其中时间有五种单位表示,分别代表“分钟、小时、天、月、周”
3.1取值范围
- 分,取值范围【00,59】
- 小时,取值范围【00,23】
- 天,取值范围【1,31】
- 月,取值范围【1,12】
- 周,取值范围【0.6】
3.2具体的操作符
- 「 * 」取值范围内所有的数字,每
- 「 / 」每过多少个数字
- 「 - 」从X-Z
- 「 ,」具体对应的时间点
4.操作实例
a. 每隔一分钟执行一次查看文件的命令
* * * * * cat /home/paipai/ok/practice
b. 每小时的第3和第15分钟执行命令
3,15 * * * * cat /home/paipai/ok/practice
c. 在上午8点-11点的第3和第15分钟执行命令
3,5 8-11 * * * cat /home/paipai/ok/practice
d. 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * cat /home/paipai/ok/practice
e. 每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 cat /home/paipai/ok/practice
f. 每晚的21:30执行命令
30 21 * * * cat /home/paipai/ok/practice
g. 每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * cat /home/paipai/ok/practice
h. 每周六、周日的1 : 10执行命令
10 1 * * 6,0 cat /home/paipai/ok/practice
i. 每天18 : 00至23 : 00之间每隔30分钟重启执行命令
*/30 18-23 * * * cat /home/paipai/ok/practice
或者是
0,30 18-23 * * * cat /home/paipai/ok/practice
j. 每星期六的晚上11 : 00 pm执行命令
00 23 * * 6 cat /home/paipai/ok/practice
k. 每一小时重启命令
* */1 * * * cat /home/paipai/ok/practice
l. 晚上11点到早上7点之间,每隔一小时重启smb
❎错误写法
* 1/23-07 * * * cat /home/paipai/ok/practice
正确写法
00 23-07/1 * * * cat /home/paipai/ok/practice
5.什么是SMB
- SMB(Samba),主要用户文件和打印服务共享
- linux系统中如果SMB服务没有被安装,则需要执行yum install samba命令来执行安装
[root@hcss-ecs-72ce init.d]# yum install samba
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 samba.x86_64.0.4.10.16-25.el7_9 将被 安装
- 如何查看samba的命令是否被安装(仅用whereis能查出来,which无法查出)
[root@hcss-ecs-72ce ~]# whereis samba
samba: /usr/lib64/samba /etc/samba /usr/share/man/man7/samba.7.gz
[root@hcss-ecs-72ce ~]# 】which samba
/usr/bin/which: no samba in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
- 查找工具where跟which有什么区别?
功能 | whereis | which |
---|---|---|
目的 | 查找二进制文件、源文件、手册页 | 查找可执行文件的完整路径 |
搜索路径 | 特定的预定义目录 | $PATH变量指定的目录 |
输出 | 多个相关文件类型的位置 | 第一个找到的可执行文件路径 |
注意事项
where并不是一个标准的linux命令,如果意图是寻找windows中whereis的命令功能,则应该使用which来代替