Linux定时任务分为周期性定时任务和一次性定时任务,周期性定时任务是通过crontab实现,可以在设定的时间点执行系统命令或是shell脚本程序,时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作,需要开启crond守护进程;一次定时任务是通过at命令实现 ,在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd守护进程。我们是rhel7.2系统对这两个系统命令做一下说明
首先,查看守护进程的状态 ,通过systemctl status 守护进程名称,状态是running
-
[root@localhost ~]# systemctl status crond
-
● crond.service - Command Scheduler
-
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
-
Active: active (running) since Tue 2016-05-03 10:58:09 CST; 24h ago
-
Main PID: 1833 (crond)
-
CGroup: /system.slice/crond.service
-
└─1833 /usr/sbin/crond -n
-
-
May 03 10:58:09 localhost.localdomain systemd[1]: Started Command Scheduler.
-
May 03 10:58:09 localhost.localdomain systemd[1]: Starting Command Scheduler...
-
May 03 10:58:09 localhost.localdomain crond[1833]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 17% if used.)
-
May 03 10:58:09 localhost.localdomain crond[1833]: (CRON) INFO (running with inotify support)
-
[root@localhost ~]# systemctl status atd
-
● atd.service - Job spooling tools
-
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
-
Active: active (running) since Tue 2016-05-03 10:58:09 CST; 24h ago
-
Main PID: 1841 (atd)
-
CGroup: /system.slice/atd.service
-
└─1841 /usr/sbin/atd -f
-
-
May 03 10:58:09 localhost.localdomain systemd[1]: Started Job spooling tools.
-
May 03 10:58:09 localhost.localdomain systemd[1]: Starting Job spooling tools...
crontab命令的文本格式: 第一列是分钟,第二列是小时,第三列是日,第四列时月,第五列是周,第六列是系统运行的命令
点击(此处)折叠或打开
-
# Example of job definition:
-
# .---------------- minute (0 - 59)
-
# | .------------- hour (0 - 23)
-
# | | .---------- day of month (1 - 31)
-
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
-
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
-
# | | | | |
-
# * * * * * user-name command to be executed
crontab命令的使用方法
-
Usage:
-
crontab [options] file
-
crontab [options]
-
crontab -n [hostname]
-
-
Options:
-
-u define user #指定crontab运行的用户
-
-e edit user's crontab #编辑crontab定时任务
-
-l list user's crontab #查看当前定时任务内容
-
-r delete user's crontab #删除用户的crontab
-
-i prompt before deleting
-
-n set host in cluster to run users' crontabs
-
-c get host in cluster to run users' crontabs
-
-s selinux context
-
-x enable debugging
实例1:每天18点和23点之间每隔30分钟重启下sshd服务
-
0,30 18-23 * * * /etc/init.d/sshd restart
at命令的文本格式:at 时间点;通过atrm删除一个at定时任务
-
Usage: at [-V] [-q x] [-f file] [-mMlbv] timespec ... #at任务运行命令的时间点
-
at [-V] [-q x] [-f file] [-mMlbv] -t time
-
at -c job ...
-
atq [-V] [-q x] #查看
-
at [ -rd ] job ...
-
atrm [-V] job ... #删除任务
-
batch
实例1:通过at 在11:40 创建文件
-
[root@localhost ~]# at 11:40 #时间
-
at> touch file{1..10} #执行的命令
-
at>
-
job 1 at Wed May 4 11:40:00 2016
-
[root@localhost ~]# at -l #查看at任务
1 Wed May 4 11:40:00 2016 a root
[root@localhost ~]# atq
1 Wed May 4 11:40:00 2016 a root
[root@localhost ~]#
at命令来产生所要运行的计划任务,并将这个计划任务以文字档的方式写入 /var/spool/at/ 目录内,该工作便能等待 atd 这个服务的取用与运行了
我们来看下 /var/spool/at/目录,在文件a000020173e406末尾可以看到我们输入的命令行内容 rm file*
-
[root@localhost ~]# at 11:50
-
at> rm file*
-
at>
-
job 2 at Wed May 4 11:50:00 2016
-
[root@localhost ~]# ll /var/spool/at/spool/
-
total 0
-
[root@localhost ~]# ll /var/spool/at/
-
total 4
-
-rwx------ 1 root root 2945 May 4 11:41 a000020173e406
-
drwx------. 2 daemon daemon 6 May 4 11:40 spool
-
[root@localhost ~]# cat /var/spool/at/a000020173e406
-
#!/bin/sh
-
# atrun uid=0 gid=0
-
# mail root 0
-
umask 22
-
XDG_SESSION_ID=1; export XDG_SESSION_ID
-
HOSTNAME=localhost.localdomain; export HOSTNAME
-
SHELL=/bin/bash; export SHELL
-
HISTSIZE=1000; export HISTSIZE
-
SSH_CLIENT=192.168.2.10\ 53028\ 22; export SSH_CLIENT
-
QTDIR=/usr/lib64/qt-3.3; export QTDIR
-
QTINC=/usr/lib64/qt-3.3/include; export QTINC
-
SSH_TTY=/dev/pts/0; export SSH_TTY
-
QT_GRAPHICSSYSTEM_CHECKED=1; export QT_GRAPHICSSYSTEM_CHECKED
-
USER=root; export USER
-
LS_COLORS=rs=0:di=01\;34:ln=01\;36:mh=00:pi=40\;33:so=01\;35:do=01\;35:bd=40\;33\;01:cd=40\;33\;01:or=40\;31\;01:mi=01\;05\;37\;41:su=37\;41:sg=30\;43:ca=30\;41:tw=30\;42:ow=34\;42:st=37\;44:ex=01\;32:\*.tar=01\;31:\*.tgz=01\;31:\*.arc=01\;31:\*.arj=01\;31:\*.taz=01\;31:\*.lha=01\;31:\*.lz4=01\;31:\*.lzh=01\;31:\*.lzma=01\;31:\*.tlz=01\;31:\*.txz=01\;31:\*.tzo=01\;31:\*.t7z=01\;31:\*.zip=01\;31:\*.z=01\;31:\*.Z=01\;31:\*.dz=01\;31:\*.gz=01\;31:\*.lrz=01\;31:\*.lz=01\;31:\*.lzo=01\;31:\*.xz=01\;31:\*.bz2=01\;31:\*.bz=01\;31:\*.tbz=01\;31:\*.tbz2=01\;31:\*.tz=01\;31:\*.deb=01\;31:\*.rpm=01\;31:\*.jar=01\;31:\*.war=01\;31:\*.ear=01\;31:\*.sar=01\;31:\*.rar=01\;31:\*.alz=01\;31:\*.ace=01\;31:\*.zoo=01\;31:\*.cpio=01\;31:\*.7z=01\;31:\*.rz=01\;31:\*.cab=01\;31:\*.jpg=01\;35:\*.jpeg=01\;35:\*.gif=01\;35:\*.bmp=01\;35:\*.pbm=01\;35:\*.pgm=01\;35:\*.ppm=01\;35:\*.tga=01\;35:\*.xbm=01\;35:\*.xpm=01\;35:\*.tif=01\;35:\*.tiff=01\;35:\*.png=01\;35:\*.svg=01\;35:\*.svgz=01\;35:\*.mng=01\;35:\*.pcx=01\;35:\*.mov=01\;35:\*.mpg=01\;35:\*.mpeg=01\;35:\*.m2v=01\;35:\*.mkv=01\;35:\*.webm=01\;35:\*.ogm=01\;35:\*.mp4=01\;35:\*.m4v=01\;35:\*.mp4v=01\;35:\*.vob=01\;35:\*.qt=01\;35:\*.nuv=01\;35:\*.wmv=01\;35:\*.asf=01\;35:\*.rm=01\;35:\*.rmvb=01\;35:\*.flc=01\;35:\*.avi=01\;35:\*.fli=01\;35:\*.flv=01\;35:\*.gl=01\;35:\*.dl=01\;35:\*.xcf=01\;35:\*.xwd=01\;35:\*.yuv=01\;35:\*.cgm=01\;35:\*.emf=01\;35:\*.axv=01\;35:\*.anx=01\;35:\*.ogv=01\;35:\*.ogx=01\;35:\*.aac=01\;36:\*.au=01\;36:\*.flac=01\;36:\*.mid=01\;36:\*.midi=01\;36:\*.mka=01\;36:\*.mp3=01\;36:\*.mpc=01\;36:\*.ogg=01\;36:\*.ra=01\;36:\*.wav=01\;36:\*.axa=01\;36:\*.oga=01\;36:\*.spx=01\;36:\*.xspf=01\;36:; export LS_COLORS
-
MAIL=/var/spool/mail/root; export MAIL
-
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
-
PWD=/root; export PWD
-
LANG=en_US.UTF-8; export LANG
-
KDEDIRS=/usr; export KDEDIRS
-
HISTCONTROL=ignoredups; export HISTCONTROL
-
SHLVL=1; export SHLVL
-
HOME=/root; export HOME
-
LOGNAME=root; export LOGNAME
-
QTLIB=/usr/lib64/qt-3.3/lib; export QTLIB
-
SSH_CONNECTION=192.168.2.10\ 53028\ 192.168.2.163\ 22; export SSH_CONNECTION
-
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
-
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
-
QT_PLUGIN_PATH=/usr/lib64/kde4/plugins:/usr/lib/kde4/plugins; export QT_PLUGIN_PATH
-
cd /root || {
-
echo 'Execution directory inaccessible' >&2
-
exit 1
-
}
-
${SHELL:-/bin/sh} << 'marcinDELIMITER0a6599c3'
-
rm file*
-
-
marcinDELIMITER0a6599c3
-
[root@localhost ~]#
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27039319/viewspace-2093305/
,如需转载,请注明出处,否则将追究法律责任。