<返回更多

如何在Linux中在指定的时间运行自定义命令

2019-05-01    
加入收藏

如何在linux中在指定的时间运行自定义命令

不知道大家有没有这样类似的经历,使用诸如rsync将一个大文件传输到局域网的另一个系统。 由于文件比较大,耗费的时间可能达到小时级别。这时我们可能就会想能不能在饭空或者休息时间来传输这个文件,这样就出现了我们的定时任务。

方法1:timeout命令

最常见的方法是使用timeout命令来实现此目的。

timeout命令是GNU coreutils包的一部分,预先安装在所有GNU / Linux系统中。

man timeout

如何在Linux中在指定的时间运行自定义命令

 

如上图man timeout信息所示:

格式:

timeout [OPTION] NUMBER[SUFFIX] COMMAND [ARG]...

这里的SUFFIX:

s:秒

m:分钟

h:小时

d:天

案例1:

5秒后执行tail -f /general/Tomcat-8.5-base/logs/catalina.out

timeout 5s tail -f /general/tomcat-8.5-base/logs/catalina.out

这里不是动态图,大家可能看不出效果。

大家可以自己亲自试一试。

如何在Linux中在指定的时间运行自定义命令

 

方法2:Crontab定时任务

补充:

安装命令:yum install crontabs。

这里我们仅做简单的介绍和使用,关于crontab更加详细的内容请参考:

Linux中Crontab定时任务简单讲解。

linux内置的cron进程也可以实现,cron搭配shell脚本,非常复杂指令也no问题。

(1)Cron介绍:

我们经常使用的是crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。

(2)配置文件:

/var/spool/cron/:

目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名。

/etc/crontab:

这个文件负责调度各种管理和维护任务。

/etc/cron.d/:

这个目录用来存放任何要执行的crontab文件或脚本。

补充:

我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

(3) crontab的使用

格式:

crontab [-u username]

-e:编辑工作表

-l:列出工作表里的命令

-r:删除工作

补充:

省略用户表表示操作当前用户的crontab。

(4)

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。

每行是一条命令。crontab的命令构成为时间+动作,其时间有分、时、日、月、周五种,操作符有:

*:取值范围内的所有数字

/:每过多少个数字

-:从X到Z

,:散列数字

借用网上一张crontab格式说明图:

如何在Linux中在指定的时间运行自定义命令

 

以下的youCommand代表的是你自己定义的命令。

案例1:

每1分钟执行一次

* * * * * youCommand

案例2:

每小时的第3和第15分钟执行

3,15 * * * * youCommand

案例3:

在上午8点到11点的第3和第15分钟执行

3,15 8-11 * * * youCommand

案例4:

每隔两天的上午8点到11点的第3和第15分钟执行

3,15 8-11 */2 * * youCommand

案例5:

每周一上午8点到11点的第3和第15分钟执行

3,15 8-11 * * 1 youCommand

案例6:

每晚的21:30重启smb

30 21 * * * /etc/init.d/smb restart

案例7:

每月1、10、22日的4 : 45重启smb

45 4 1,10,22 * * /etc/init.d/smb restart

案例8:

每周六、周日的1 : 10重启smb

10 1 * * 6,0 /etc/init.d/smb restart

案例9:

每天18 : 00至23 : 00之间每隔30分钟重启smb

0,30 18-23 * * * /etc/init.d/smb restart

案例10:

每星期六的晚上11 : 00 pm重启smb

0 23 * * 6 /etc/init.d/smb restart

案例11:

每一小时重启smb

* */1 * * * /etc/init.d/smb restart

案例12:

晚上11点到早上7点之间,每隔一小时重启smb

* 23-7/1 * * * /etc/init.d/smb restart

关于crontab更加详细的内容请参考:

Linux中Crontab定时任务详解。

欢迎大家给予宝贵的意见或者建议。

欢迎大家补充或者共享一些其他的方法。

感谢支持。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>