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