Ubuntu部署crontab开机自启动

1.安装cron组件

1.1更新软件列表

apt-get update

1.2 安装

apt-get install cron

1.3 开启日志功能

1.3.1 安装rsylog组件

 apt-get install rsyslog

 1.3.2 配置日志记录

vim /etc/rsyslog.d/50-default.conf 配置文件的cron.* /var/log/cron.log前面的注释#去掉。

重启rsyslog服务

service rsyslog restart

待后续配置好cron启动程序后,会有日志输出到这个文件中 

2.设定定时任务

定时任务有用户级别和系统级别两种方式的任务文件。

2.1用户级别crontab -e

crontab -e是用户级别的计划任务文件。

2.1.1 crontab -e

crontab -e

 在末尾添加 

* * * * * echo "Hello,world from crontab -e" >> /tmp/Helloworld.txt

 每分钟输出Hello,world from crontab -e到/tmp/Helloworld.txt文件下。

2.1.2 service cron restart

service cron restart重启cron服务。 

2.1.2 文本编辑问题

如果出现下面的情况,则需要修改默认文本编辑器。

先关掉ssh连接,重连接ssh

sudo select-editor选择3,vim编辑器即可。

 

2.2 系统级别/etc/crontab

/etc/crontab是系统级别的计划任务文件。在/etc/crontab文件中,需要指定任务的运行用户,/etc/crontab文件需要使用root用户来编辑

例如:

* * * * * root echo "Hello,world from /etc/crontab" >> /tmp/Helloworld.txt

操作流程如下:

a、vim /etc/crontab

b、 在末尾添加 

* * * * * root echo "Hello,world from /etc/crontab" >> /tmp/Helloworld.txt

每分钟输出Hello,world到/tmp/Helloworld.txt文件下。

 3 cron组件常用命令

3.1启停服务

用以下的方法启动、关闭这个cron服务:

service cron status //查看crontab服务状态 
service cron start //启动服务 
service cron stop //关闭服务 
service cron restart //重启服务 
service cron reload //重新载入配置

crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务

查看调度任务 
crontab -l //列出当前的所有调度任务 
crontab -l -u jp //列出用户jp的所有调度任务 
删除任务调度工作 
crontab -r //删除所有任务调度工作

3.2 定时任务

* * * * * echo "Hello world!" 中“*”的解释:

minute - 从0到59的整数 

hour - 从0到23的整数 
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令) 
除了数字还有几个特殊的符号:"*"、"/"和"-"、","

*代表所有的取值范围内的数字
"/"代表每的意思,"/5"表示每5个单位
"-"代表从某个数字到某个数字
","分开几个离散的数字

例子:
15,30,45,59 * * * * echo "xgmtest....."     表示,每隔15分钟,执行一次打印命令 


每天早上 6 点
0  6  * * * echo  "Good morning."  >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
 
每两个小时(第一个为 15 ,指明没两个小时的第 15 min中执行一次)
15  */ 2  * * * echo  "Have a break now."  >> /tmp/test.txt 
 
晚上 11 点到早上 8 点之间每两个小时和早上八点
0  23 -7 / 2 , 8  * * * echo  "Have a good dream"  >> /tmp/test.txt
 
每个月的 4 号和每个礼拜的礼拜一到礼拜三的早上 11 点
0  11  4  *  1 -3  command line
 
1 月 1 日早上 4 点
0  4  1  1  * command line
 
每小时(第一分钟)执行/etc/cron.hourly内的脚本
01  * * * * root run-parts /etc/cron.hourly
 
每天(凌晨 4 : 02 )执行/etc/cron.daily内的脚本
02  4  * * * root run-parts /etc/cron.daily
 
每星期(周日凌晨 4 : 22 )执行/etc/cron.weekly内的脚本
22  4  * *  0  root run-parts /etc/cron.weekly
 
每月( 1 号凌晨 4 : 42 )去执行/etc/cron.monthly内的脚本
42  4  1  * * root run-parts /etc/cron.monthly
 
注意:   "run-parts" 这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。  
 
每天的下午 4 点、 5 点、 6 点的 5  min、 15  min、 25  min、 35  min、 45  min、 55  min时执行命令。
5 , 15 , 25 , 35 , 45 , 55  16 , 17 , 18  * * * command
 
每周一,三,五的下午 3 : 00 系统进入维护状态,重新启动系统。
00  15  * * 1 , 3 , 5  shutdown -r + 5
 
每小时的 10 分, 40 分执行用户目录下的innd/bbslin这个指令:
10 , 40  * * * * innd/bbslink
 
每小时的 1 分执行用户目录下的bin/account这个指令:
1  * * * * bin/account
 
每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):
203  * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@ 62 ;expire. 1 st)  
 
每年的一月和四月, 4 号到 9 号的 3 点 12 分和 3 点 55 分执行/bin/rm -f expire. 1 st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。
12 , 553  4 -91 , 4  * /bin/rm -f expire. 1 st$#@ 62 ;$#@ 62 ;mm.txt

本节引用文章来源:https://blog.csdn.net/qq_30270931/article/details/79137486

3.3 开机任务

可以在用户级别或者系统级别中添加该任务

3.3.1 用户级别

@reboot echo "Hello,world!reboot from crontab -e" >> /tmp/Helloworld.txt

 

3.3.2 系统级别

@reboot root echo "Hello,world!reboot from /etc/crontab" >> /tmp/Helloworld.txt