例行性工作排程 (crontab)
说白了,就是一些例行工作的日常执行的排序程序
Linux 工作排程的种类: at,cron
鸟叔说,atd并不是在所有版本都是开启的,但是centos7默认是开启的
[root@localhost ~]# systemctl restart atd #重启atd服务
[root@localhost ~]# systemctl enable atd #开机自运行
[root@localhost ~]# systemctl atd status
Unknown operation 'atd'.
[root@localhost ~]# systemctl status atd #查阅一下atd目前的状态
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled) #是否开机启动
Active: active (running) since 一 -- :: CST; 26s ago #active(running)是否正在运行中
Main PID: (atd)
CGroup: /system.slice/atd.service
└─ /usr/sbin/atd -f 8月 :: localhost.localdomain systemd[]: Started Job spooling tools.
利用at进行工作排程,工作排程就类似于任务。就需要将任务放到一个文本文件中,这个文本文件放在/var/spool/at目录中。这样就可以利用at来执行了
这就类似于自启动进程。在写黑客程序的时候,都会有一个默认自启动的服务,Linux这里就是类似于这么个东东,这就需要限制账户来执行Linux的at排程,以免黑客程序的入侵
利用/etc/at.allow与/etc/at.deny这两个文件来限制at的执行。执行原理如图
at语法
at指令的下达,会进入一个at shell的环境来操作。指令的下达就与环境变量有关,同时与当时的工作目录也有关联,因此使用绝对路径会比较保险一些。
利用at命令,将/root/.bashrc进行邮寄
[root@localhost ~]# at now + minutes
at> /bin/mail -s "testing at job" root < /root/.bashrc
at> <EOT>
job at Mon Aug ::
[root@localhost ~]# at -c
#!/bin/sh
# atrun uid= gid=
# mail root
umask
XDG_SESSION_ID=; export XDG_SESSION_ID
HOSTNAME=localhost.localdomain; export HOSTNAME
SELINUX_ROLE_REQUESTED=; export SELINUX_ROLE_REQUESTED
SHELL=/bin/bash; export SHELL
HISTSIZE=; export HISTSIZE
SSH_CLIENT=192.168.132.1\ \ ; export SSH_CLIENT
PERL5LIB=/root/perl5/lib/perl5:; export PERL5LIB
SELINUX_USE_CURRENT_RANGE=; export SELINUX_USE_CURRENT_RANGE
QTDIR=/usr/lib64/qt-3.3; export QTDIR
QTINC=/usr/lib64/qt-3.3/include; export QTINC
PERL_MB_OPT=--install_base\ /root/perl5; export PERL_MB_OPT
SSH_TTY=/dev/pts/; export SSH_TTY
QT_GRAPHICSSYSTEM_CHECKED=; export QT_GRAPHICSSYSTEM_CHECKED
USER=root; export USER
LS_COLORS=rs=:di=\;:ln=\;:mh=:pi=\;:so=\;:do=\;:bd=\;\;:cd=\;\;:or=\;\;:mi=\;\;\;:su=\;:sg=\;:ca=\;:tw=\;:ow=\;:st=\;:ex=\;:\*.tar=\;:\*.tgz=\;:\*.arc=\;:\*.arj=\;:\*.taz=\;:\*.lha=\;:\*.lz4=\;:\*.lzh=\;:\*.lzma=\;:\*.tlz=\;:\*.txz=\;:\*.tzo=\;:\*.t7z=\;:\*.zip=\;:\*.z=\;:\*.Z=\;:\*.dz=\;:\*.gz=\;:\*.lrz=\;:\*.lz=\;:\*.lzo=\;:\*.xz=\;:\*.bz2=\;:\*.bz=\;:\*.tbz=\;:\*.tbz2=\;:\*.tz=\;:\*.deb=\;:\*.rpm=\;:\*.jar=\;:\*.war=\;:\*.ear=\;:\*.sar=\;:\*.rar=\;:\*.alz=\;:\*.ace=\;:\*.zoo=\;:\*.cpio=\;:\*.7z=\;:\*.rz=\;:\*.cab=\;:\*.jpg=\;:\*.jpeg=\;:\*.gif=\;:\*.bmp=\;:\*.pbm=\;:\*.pgm=\;:\*.ppm=\;:\*.tga=\;:\*.xbm=\;:\*.xpm=\;:\*.tif=\;:\*.tiff=\;:\*.png=\;:\*.svg=\;:\*.svgz=\;:\*.mng=\;:\*.pcx=\;:\*.mov=\;:\*.mpg=\;:\*.mpeg=\;:\*.m2v=\;:\*.mkv=\;:\*.webm=\;:\*.ogm=\;:\*.mp4=\;:\*.m4v=\;:\*.mp4v=\;:\*.vob=\;:\*.qt=\;:\*.nuv=\;:\*.wmv=\;:\*.asf=\;:\*.rm=\;:\*.rmvb=\;:\*.flc=\;:\*.avi=\;:\*.fli=\;:\*.flv=\;:\*.gl=\;:\*.dl=\;:\*.xcf=\;:\*.xwd=\;:\*.yuv=\;:\*.cgm=\;:\*.emf=\;:\*.axv=\;:\*.anx=\;:\*.ogv=\;:\*.ogx=\;:\*.aac=\;:\*.au=\;:\*.flac=\;:\*.mid=\;:\*.midi=\;:\*.mka=\;:\*.mp3=\;:\*.mpc=\;:\*.ogg=\;:\*.ra=\;:\*.wav=\;:\*.axa=\;:\*.oga=\;:\*.spx=\;:\*.xspf=\;:; export LS_COLORS
MAIL=/var/spool/mail/root; export MAIL
PATH=/usr/lib64/qt-3.3/bin:/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
PWD=/root; export PWD
LANG=zh_CN.UTF-; export LANG
KDEDIRS=/usr; export KDEDIRS
SELINUX_LEVEL_REQUESTED=; export SELINUX_LEVEL_REQUESTED
HISTCONTROL=ignoredups; export HISTCONTROL
SHLVL=; export SHLVL
HOME=/root; export HOME
PERL_LOCAL_LIB_ROOT=:/root/perl5; export PERL_LOCAL_LIB_ROOT
LOGNAME=root; export LOGNAME
QTLIB=/usr/lib64/qt-3.3/lib; export QTLIB
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share; export XDG_DATA_DIRS
SSH_CONNECTION=192.168.132.1\ \ 192.168.132.16\ ; export SSH_CONNECTION
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
XDG_RUNTIME_DIR=/run/user/; export XDG_RUNTIME_DIR
QT_PLUGIN_PATH=/usr/lib64/kde4/plugins:/usr/lib/kde4/plugins; export QT_PLUGIN_PATH
PERL_MM_OPT=INSTALL_BASE=/root/perl5; export PERL_MM_OPT
OLDPWD=/srv; export OLDPWD
cd /root || {
echo 'Execution directory inaccessible' >&
exit
}
${SHELL:-/bin/sh} << 'marcinDELIMITER056cdc8c'
/bin/mail -s "testing at job" root < /root/.bashrc #这里就是我们的指令 marcinDELIMITER056cdc8c
batch:系统有空时才进行的后台任务
batch指令,会在cpu工作负载小于 0.8 的时候,才进行你所下达的任务指令。
鸟哥解释的很清楚,这个工作负载的概念
整分时间 概念
循环执行的例行性工作排程
我理解的就是,每隔多长时间执行一次的程式
上面三个图就是 日期格式 的范围
上面倒数第而张图,那个例子很清晰。。
上面几个日期函数的特殊字符,我觉得很有用。。。
这里有个例外。就是鸟哥在文中说的,cron这个命令,有的unix会把他放到内存里去执行,这样,需要重启一下cron服务,才能执行你的修改后的指令 systemctl restart crond ,将服务重启一下
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root #发生错误时,发送的地址,默认是发送给root。可以发送到自己的邮箱地址。 # For details see man crontabs # Example of job definition:
# .---------------- minute ( - )
# | .------------- hour ( - )
# | | .---------- day of month ( - )
# | | | .------- month ( - ) OR jan,feb,mar,apr ...
# | | | | .---- day of week ( - ) (Sunday= or ) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
将某个sh产生的信息丢入垃圾桶
xxxxx.sh > /dev/null 2>&1
后面的2>&1,不大理解为什么要加这个,所以查了一下
对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。
对于2 ,表示标准错误,stderr。
2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null(这里才是重点)
可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.
偶尔也可以把 & 在命令的最后加上,表示让程序后台执行。
为何2>&1要写在后面?
index.php task testOne >/dev/null 2>&1
我们可以理解为,左边是标准输出,好,现在标准输出直接输入到 /dev/null 中,而2>&1是将标准错误重定向到标准输出,所以当程序产生错误的时候,相当于错误流向左边,而左边依旧是输入到/dev/null中。
可以理解为,如果写在中间,那会把隔断标准输出指定输出的文件
将指令至于背景中,我理解的意思就是后台运行
在指令后面加&
[root@localhost ~]# tar -zpcf /tmp/etc.tar.gz /etc &
例行性工作排程 (crontab)的更多相关文章
- 例行性工作排程 (crontab)
1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式: ...
- 第十六章、例行性工作排程 (crontab)
1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作 2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式 ...
- linux备忘录-例行性工作排程 (crontab)
例行性工作排程 例行性工作排程分为两类 at at是只执行一次就结束的指令安排.要想使用at,必须要有atd服务的支持. crontab crontab是每隔一段时间自动执行的指令安排.crontab ...
- 鸟哥私房菜基础篇:例行性工作排程 (crontab)习题
猫宁!!! 参考:http://cn.linux.vbird.org/linux_basic/0430cron.php 1-今天假设我有一个命令程序,名称为: ping.sh 这个档名!我想要让系统每 ...
- Linux学习-循环执行的例行性工作排程
循环执行的例行性工作排程则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的例行性工作,因此这个系统服务是默认启动的. 另外, 由于使用者自己也可以进行例行性工 ...
- Linux学习-什么是例行性工作排程
那么 Linux 的例行性工作是如何进行排程的呢?所谓的排程就是将这些工作安排执行的流程之意! 咱们的 Linux 排程就是透过 crontab 与 at 这两个东西! Linux 工作排程的种类: ...
- 浅谈 linux 例行性工作 crontab (linux定时任务)
定时任务大家都挺说过,就好比你手机上的闹钟,到了指定的时候就会响起. 今天在对redis缓存进行定时储存时又操作了一把,发现一些细节,写的不好.大家就将就看吧, 首先 简单介绍一下linux 例行性工 ...
- 第十五章 例行性工作(crontab)--循环执行的例行性工作调度 crontab(定时任务)
循环执行的例行性工作调度 crontab(定时任务) 15.1 例行性工作调度 不考虑硬件与服务器的链接状态,Linux帮助提醒很多任务. Linux例行性工作是如何进行调度的? Linux调度就是通 ...
- linux例行性工作调度学习(一)
Linux系统中有一种例行性工作(crontab)可以调度,是通过crontab和at来实现的. 这两种工作调度: 一种是例行性的,就是每隔一定的周期要来办的事项. 一种是突发性的,就是这次做完以后就 ...
随机推荐
- echarts学习思路及常用属性记录
此篇博文分享自己对于入门学习echart的思路及对常见组件的用法记录,如serise.data和坐标轴对应关系,多个坐标轴,多个grid的对齐,tooltip的超出处理,坐标轴/toolti ...
- Codeforces 364D 随机算法
题意:给你一个序列,定义ghd为一个序列中任意n / 2个数的gcd中最大的那个,现在问这个序列的ghd为多少. 思路:居然是论文题...来自2014年国家集训队论文<随机化算法在信息学竞赛中的 ...
- MySQL日志文件与分析
1.查询日志.慢查询日志.二进制日志对比 查询日志 general_log 会记录用户的所有操作,其中包含增删查改等 可以指定输出为表 慢查询日志 slow_log 只要超过定义时间的所有操作语句都记 ...
- 十一、结构模式之享元(Flyweight)模式
什么是享元模式 享元模式是对象的结构模式,是运用共享技术来有效的支持大量细粒度的对象.享元对象能做到共享的关键是区分内蕴状态和外蕴状态.一个内蕴状态是存储在享元对象内部,并且是不会随环境改变而有所不同 ...
- String 字符串和StringBuffer的知识点总结
String字符串 1 字符串.equals(); equals和length的区别:equals ...
- jQuery 菜单 垂直菜单实现
HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...
- webpack 学习1 安装构建项目
本文中使用的webpack版本是4+,请注意区分 node.js安装 node.js下载地址 选择较低版本的稳定版下载,下载完成后得到的是一个msi文件,点击安装即可 安装完毕以后新建一个文件夹,并在 ...
- docker 数据持久化
confluence #!/bin/bash docker run \ --name confluence \ --volume "$PWD/data/opt":/opt \ -- ...
- 因为看见,所以发现:QBotVariant谢绝落幕
互联网给人带来便捷的同时,其公开大量的资源也同样给恶意利用者带了便捷,越来越多公开的恶意程序源码降低了对外攻击.入侵的难度,使得安全问题愈加严重. 阿里云安全团队从今年5月份监测到一BOT家族,其样本 ...
- The Second Scrum Meeting!
第七周会议 情况简述 会议概要:汇报已完成的任务,讨论并解决遇到的问题 参与人员:詹晓宇 谢赛金 熊紫仁 徐翠萍 周娟 孙尚煜 会议地点:六区研讨性教室 具体内容 小组成员 已完成任务 计划 ...