Linux ❀ RHCE自研教学笔记 - Redhat 8.2 Crontab定时任务教研笔记

Posted 国家级干饭型选手°

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux ❀ RHCE自研教学笔记 - Redhat 8.2 Crontab定时任务教研笔记相关的知识,希望对你有一定的参考价值。

Crontab - 定时执行:我们在使用Linux的时候,可能需要每天查看系统运行情况,获取CPU、内存、磁盘的使用情况;如果每天人为执行,不仅麻烦甚至可能会有遗漏,此时我们就可以定时执行任务,以避免此类情况产生;

1、At - 生效一次


[root@localhost ~]# man at
[root@localhost ~]# at 17:00 Apr 22			/定时执行,后接具体时间或现在以后多久;
[root@localhost ~]# at now + 2 minutes
warning: commands will be executed using /bin/sh
at> echo helloworld					 	 /需要执行的命令;
at> <EOT>						 	 /ctrl+d退出,<EOT>为退出标识;
job 1 at Fri Jan 15 00:39:00 2021
[root@localhost ~]# atq						/查看任务,执行完成就会消失,id递增;
1	Fri Jan 15 00:39:00 2021 a root		 /job=;
[root@localhost ~]# atrm 3					/删除job=3的任务;

[root@localhost ~]# cd /var/spool/at/
[root@localhost at]# at now + 2 minutes
warning: commands will be executed using /bin/sh
at> echo 111
at> <EOT>
job 4 at Fri Jan 15 00:46:00 2021
[root@localhost at]# ll
total 4
-rwx------. 1 root root 3162 Jan 15 00:44 a0000401999f4e	/如果有计划产生并且未执行,则会生成随机文件,执行结束该文件删除;

[root@localhost at]# cat a0000401999f4e 
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
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:\\*.dz=01\\;31:\\*.gz=01\\;31:\\*.lrz=01\\;31:\\*.lz=01\\;31:\\*.lzo=01\\;31:\\*.xz=01\\;31:\\*.zst=01\\;31:\\*.tzst=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:\\*.wim=01\\;31:\\*.swm=01\\;31:\\*.dwm=01\\;31:\\*.esd=01\\;31:\\*.jpg=01\\;35:\\*.jpeg=01\\;35:\\*.mjpg=01\\;35:\\*.mjpeg=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:\\*.ogv=01\\;35:\\*.ogx=01\\;35:\\*.aac=01\\;36:\\*.au=01\\;36:\\*.flac=01\\;36:\\*.m4a=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:\\*.oga=01\\;36:\\*.opus=01\\;36:\\*.spx=01\\;36:\\*.xspf=01\\;36:; export LS_COLORS
SSH_CONNECTION=192.168.90.1\\ 60597\\ 192.168.90.128\\ 22; export SSH_CONNECTION
LANG=en_US.UTF-8; export LANG
HISTCONTROL=ignoredups; export HISTCONTROL
HOSTNAME=localhost.localdomain; export HOSTNAME
XDG_SESSION_ID=4; export XDG_SESSION_ID
USER=root; export USER
SELINUX_ROLE_REQUESTED=; export SELINUX_ROLE_REQUESTED
PWD=/var/spool/at/spool; export PWD
HOME=/root; export HOME
SSH_CLIENT=192.168.90.1\\ 60597\\ 22; export SSH_CLIENT
SELINUX_LEVEL_REQUESTED=; export SELINUX_LEVEL_REQUESTED
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share; export XDG_DATA_DIRS
SSH_TTY=/dev/pts/0; export SSH_TTY
MAIL=/var/spool/mail/root; export MAIL
SHELL=/bin/bash; export SHELL
SELINUX_USE_CURRENT_RANGE=; export SELINUX_USE_CURRENT_RANGE
SHLVL=1; export SHLVL
LOGNAME=root; export LOGNAME
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus; export DBUS_SESSION_BUS_ADDRESS
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
HISTSIZE=1000; export HISTSIZE
LESSOPEN=\\|\\|/usr/bin/lesspipe.sh\\ %s; export LESSOPEN
OLDPWD=/root; export OLDPWD
cd /var/spool/at/spool || {
	 echo 'Execution directory inaccessible' >&2
	 exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER5b2de08d'
echo 111
marcinDELIMITER5b2de08d

2、Crontab - 周期性永久生效


当前用户配置定时任务,执行用户为当前登录用户;

[root@localhost ~]# crontab -e				/配置定时任务
* * * * * cat /etc/passwd
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost ~]# cat /var/spool/cron/root 		/查看配置内容,该文件名称=登录用户名称;
* * * * * cat /etc/passwd					/定期执行某个命令;
* * * * * wall haha						/定期执行某个脚本文件;

全局用户配置定时任务,执行用户为所定义用户;

[root@localhost ~]# cat /etc/crontab 
SHELL=/bin/bash						/默认shell路径;
PATH=/sbin:/bin:/usr/sbin:/usr/bin			/环境变量路径;
MAILTO=root							/任务执行信息通过电子邮件发送给root用户;

# For details see man 4 crontabs

# 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

具体时间:

  • minute - 分钟,可以是从0到59之间的任何整数;
  • hour - 小时,可以是从0到23之间的任何整数;
  • day - 日期,可以是从1到31之间的任何整数;
  • month - 月份,可以是从1到12之间的任何整数;
  • week - 星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日;
  • command - 定期执行的命令,可以是系统命令,也可以是自己编写的脚本文件;
    特殊字符:
* - 代表所有可能的值;
, - 隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”;
- - 整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”;
/ - 指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次;同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次;

注:当我们需要在同一时间执行多个脚本的时候为了避免多次写入可以用run-parts来避免;run-parts:是一个在/usr/bin/run-parts目录下的脚本,其作用是执行一个目录下的所有脚本/程序;

[root@localhost ~]# crontab -l					/显示所有计划任务;
[root@localhost ~]# crontab -r					/清除所有计划任务;

3、设置用户不可制定定期任务


[root@localhost ~]# vim /etc/at.deny
redhat
[root@localhost ~]# su - redhat
[redhat@localhost ~]$  at now + 1minutes
You do not have permission to use at.

注:在系统中并没有at.allow这个文件,但是只要你编辑这个文件再次允许你这个用户,系统默认先看允许文件的用户;

[root@localhost ~]# vim /etc/at.allow
redhat

以上是关于Linux ❀ RHCE自研教学笔记 - Redhat 8.2 Crontab定时任务教研笔记的主要内容,如果未能解决你的问题,请参考以下文章

Linux ❀ RHCE自研教学笔记 - Redhat 8.2 SFTP服务教研笔记

Linux ❀ RHCE自研教学笔记 - Redhat 8.2 SFTP服务教研笔记

Linux ❀ RHCE自研教学笔记 - Redhat 8.2 Nmcli服务教研笔记

Linux ❀ RHCE自研教学笔记 - Redhat 8.2 Nmcli服务教研笔记

Linux ❀ RHCE自研教学笔记 - Redhat 8.2 HTTP服务教研笔记

Linux ❀ RHCE自研教学笔记 - Redhat 8.2 FTP服务教研笔记