linux初学者-延迟及定时任务篇
在linux系统的学习工作中,南面会遇到需要延迟进行的任务和需要定时去完成的任务,就像手机的闹钟一样,这时候就需要用到linux系统当中的系统延迟和定时任务的设置了,下文将对延迟和定时任务的设置和使用进行一些介绍。
1、系统延迟任务
系统延迟任务是系统任务将在规定的时间或者在一定时间之后才进行的任务设置,和定时任务不同,这种命令发起的任务都是一次性的。
一般发起延迟任务的命令是"at",例如下图,在目录"/mnt"下有6个文件,需要延迟清空这个目录,则输入"at 时间"按回车后输入"rm -fr /mnt/*",任务输入完成后按"ctrl+d"来完成命令。由图可以看出,在设定的时间之后完成了这个命令。
"at"命令还可以加入一些参数来实现不同的功能,常用的参数例如:
输入"atq"或者"at -l"可以查看已经设置好的延迟任务。
输入"atrm 任务编号"或者"at -d 任务编号"可以删除所设置的延迟任务。
还有一些其他的参数例如,输入"at -c 任务编号"可以查看延迟任务所要执行的命令内容。
"at now+xmin"可以设置命令在延迟x分钟之后进行。"at -f 文件"可以延迟执行文件中的命令内容。例如在文件中写入"mkdir /mnt/test",并在一分钟之后执行。
在使用"at"命令时,会发现不管是普通用户还是超级用户,都可以对主机发起延迟命令,如下图所示,然而在有些情况下,需要对延迟命令的执行权限进行限定。
在对延迟命令的执行权限进行限定是有两种情况,一种是不允许一些用户执行延迟命令,一种是只允许一些用户执行延迟命令,这时就需要用到命令执行的黑名单和白名单。
命令执行的黑名单就是不允许一些用户执行,这需要将用户的名称编写在文件"/etc/at.deny"下,例如下图,将student用户的名称写入这个文件中,则student用户无法再执行延迟命令。但是没有在文件中tom用户不受影响。
命令执行的白名单自然就是允许一些用户执行延迟命令了,值得注意的是,在系统中,这个白名单文件并不存在,需要自己建立建立一个"/etc/ra.allow"文件,这个文件一旦出现,那么所有用户将不能再执行延迟命令,例如下图,文件建立后,没有再黑名单中的tom用户也不能执行延迟命令了。在这个文件中写入"student",那么student用户可以使用延迟命令。
2、定时任务
定时任务就和闹钟类似,是永久存在的,可以循环执行的。定时任务的程序crond,在系统中每分钟做扫描。
一般linux系统中定时任务的发起方式有两种。
2.1、第一种发起方式是通过命令来实现的。常用的命令及其参数有三种,"crontab -u username -e"表示设置一个定时任务,以username的身份运行,"crontab -u username -l"表示查看设置的定时任务,"crontab -u username -r"表示删除设置的定时任务。例如下图,设置一个在"22:30分"执行一个"touch /mnt/file{1..5}"的任务,查看并且删除这个定时任务。
2.2、第二种发起方式是通过编辑文件来实现的。在文件"/etc/cron.d/filename"中编写命令,例如在此文件中输入命令"* * * * * root touch /mnt/root{1..5}"和"* * * * * tom touch /mnt/tom{1..5}"。
2.3、定时任务的执行权力设定。与延迟任务的执行权力设定类似,定时任务执行权力的黑名单设定是编写"/etc/cron.deny"文件,白名单设定是编写"/etc/cron.allow"文件,白名单文件同样是不存在的,需要自己建立。
2.4 设置任务时的时间格式。在上文中可以看出,在设置定时任务时需要设置时间,上文都是"* * * * *",时间的格式是:
* * * * *
分 时 天 月 周
常用的时间格式和意义是:
* * * * * 每隔一分钟
* * */2 * * 每隔两天
* 08-17/2 * * * 早上八点到下午五点每隔两小时
* * 01,15 * 6 每个月的1号,15号以及星期六
05 * * * * 每小时正点过五分钟
05 02 * * * 每天早上2点05分
0 08 01 * * 每个月一号早上8点30分
00 07 25 12 * 12月25日早上7点00分
30 16 * * 5 每个星期五16点30分
*/5 * * * * 每隔五分钟
*/10 9-17 1,15 * * 每个月的1号和15号9点到17点每隔10分钟(17点不会运行)
0 0 1 jan 0 1月1日的0点0分和1月的每个月星期日(不仅是1月1日所在的星期日)
3、系统临时文件的管理
系统在使用服务是,会产生临时文件,这些文件在服务使用完成后或者一段时间后就没有用了,这时就需要对系统产生的临时文件进行管理,及时清除不必要的文件。
在清理文件时,需要先进行设置文件的存在于系统的时间,设置是通过编写"/usr/lib/tmpfiles.d/*.conf"文件来实现的,其中"*"是文件的名称,可以自行设置,但是必须以".conf"结尾。例如在此文件中写入"d /mnt/we 1777 root root 10s",其中"d"是文件类型,"/mnt/we"是清理目录,"1777"是执行权限,"root"和"root"是文件所有人和文件所有组,"10s"是文件存在时间,结合起来,上述内容表示"在/mnt目录下有一个所有人和所有组都是root并且权限为1777的目录we,该目录内的文件可以存在的时间为10s"。这个we目录在系统中是不存在的。
使用"systemd-tmpfiles --create /usr/lib/tmpfiles.d/we.conf",可以建立临时文件目录。"systemd-tmpfiles --clean /usr/lib/tmpfiles.d/we.conf",可以清理该目录下的临时文件。值得注意的是,只有文件存在期限过了的文件可以被清理。例如下图所示,在建立了文件之后,只有过了10s才可以被清理。
上述的系统临时文件管理清理命令需要自己输入,可以和定时任务结合使用,使得自动清理临时文件。例如需要在"/mnt"下建立一个"quit"目录,其中的文件可以存在2min,但是系统将每分钟清理一次这个目录。为了方便,这些步骤可以用脚本来完成,如下图所示。输入"watch -n 1 ls -Rl /mnt"来观察这个目录的变化。
在使用脚本文件后"/mnt"目录下会出现一个"quit"目录,在"4:49:53"在"quit"目录下建立5个文件,这五个文件在"4:52:02"全部被清理。
以上就是linux中常用的延迟任务、定时任务和系统临时文件的管理,及其一点应用。
linux初学者-延迟及定时任务篇的更多相关文章
- linux初学者-NFS网络文件系统篇
linux初学者-NFS网络文件系统篇 在上一篇的SAMBA篇中介绍了linux系统和windows系统之间共用的网络文件系统CIFS,主要用于客户端是windows的情况.在linux系统之间,所用 ...
- linux初学者-CIFS网络文件系统篇
linux初学者-CIFS网络文件系统篇 CIFS是一种通用网络文件系统,主要用于网络设备之间的文件共享.CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是 ...
- linux初学者-DNS集群篇
linux初学者-DNS集群篇 DNS服务器一般在使用时,为了缓解服务器的压力,多使用一个主DNS服务器,多个副DNS服务器,这些DNS服务器就组成了一个DNS集群. 在DNS主服务器配置好后,需要另 ...
- linux初学者-磁盘拉伸缩减篇
linux初学者-磁盘拉伸缩减篇 在系统的使用过程中,往往会出现这样的问题,由于刚开始无法估计需要的磁盘空间,导致后期磁盘空间不够,使得数据没地方存储,又或者后期磁盘空间过大,造成资源的浪费.这种在使 ...
- linux初学者-磁盘分区方式篇
linux初学者-磁盘分区方式篇 一般的计算机都会采用mbr分区方式,这种分区方式只能够建立四个主分区,如果还需要或更多的分区,就需要将其中一个主分区建立成一个扩展分区,在里面建立逻辑分区,这些分区信 ...
- linux初学者-普通磁盘分区篇
linux初学者-普通磁盘分区篇 磁盘是计算机的重要组成部分,是记录数据的场所.在使用磁盘时,经常需要对其进行分区来实现不同的用途.下文将介绍在linux系统中普通磁盘分区的方法. "fdi ...
- ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘
本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...
- linux初学者-SElinux篇
linux初学者-SElinux篇 SElinux是强制访问控制(MAC)安全系统,是linux历史上最杰出的新安全系统.对于linux安全模块来说,SElinux的功能是最全面的,测试也是最充分的, ...
- linux初学者-firewall篇
linux初学者-firewall篇 firewalld是防火墙的另一种程序,与iptables相同,但是使用起来要比iptables简单的点,不需要了解3张表和5条链也可以使用. 1.firewa ...
随机推荐
- qt获取网络ip地址的类
最近在学习qt网络编程,基于tcp和udp协议. 看了一些别人的程序和qt4自带的例子,困扰我最大的问题就是获取ip的类,总结起来还挺多的. 主要介绍常用的QtNetwork Module中的QHos ...
- Tido 习题-二叉树-树状数组实现
题目描述 这就是一个简单的树状数组入门题 可以动态地进行区间和查询 随时可能会进行更新 #include<iostream> #include<cstdio> #inclu ...
- C语言指针学习总结
上学的时候学习C语言,最烦的就是里面指针,可是指针也恰恰是C语言的灵魂. 最近在重温数据结构的内容,因为大多数据结构的教材都是用C语言描述的,而数据结构中也大量的用到了指针的内容,所以我就在这篇笔记中 ...
- Vue.js 是如何实现 MVVM 的?
目录 框架到底为我们做了什么? 如何理解 MVVM ? 如何实现 MVVM - 以 Vue.js 为例 Vue 如何实现响应式 Vue 如何解析模板 Vue.js 运行机制 手写一个 Vue.js 框 ...
- sql server编写简洁四则运算表达式脚本实现计算批次功能(C#等其它编程语言也能直接用此通用表达式)
问题: 在数据库编程开发中,有时会遇到数据量比较大的情况,如果直接大批量进行添加数据.修改数据.删除数据,就会是比较大的事务,事务日志也比较大,耗时久的话会对正常操作造成一定的阻塞.虽不至于达到删库跑 ...
- java基础知识总结(二)
Java中的代码块 java中的代码块是用{}括起来的代码,进行一些功能的限定 静态代码块:在类第一次被初始化的是后执行,负责一些类的初始化操作,仅仅只执行一次 构造代码块:顾名思义,辅助构造器进行初 ...
- 微信小程序内链微信公众号的方法
最近接了一个需求,要求在微信小程序内部添加关注微信公众号的方式并给出解决方案,经过几天的翻官网文档,查周边资料,问资深技术员,初步给出两个解决方案: 题外话: 搬砖容易,建设难,搬砖的小伙伴请注明文章 ...
- Codeforces Round #563 (Div. 2)C
C. Ehab and a Special Coloring Problem 题目链接:http://codeforces.com/contest/1174/problem/C 题目 You're g ...
- Linux不重启识别新添加的磁盘
现网的一台EXSI 下的虚拟机一般在进行配置变更后都会通过重启来识别新增的配置,不过业务侧某台主机因为业务需要无法重启,想通过不重启直接识别护容上去的新磁盘.经测试,发现如下方可以解决. 1.通过ex ...
- python学习 -女神或者男神把微信消息撤回后好慌,有了这个妈妈再也不担心你看不到女神或者男神撤回的消息了(超详解)
简介 有时候在忙工作,女朋友发了一个消息,就撤回了,但是人天生的都有一颗好奇心,而且在当今这个时代找个女朋友不容易,一个程序猿找一个女朋友更是不容易的.人家好不容易跟你,你还不得把人家当老佛爷侍候着, ...