crontab结合scp从安装到使用

网友投稿 1194 2022-09-03

crontab结合scp从安装到使用

crontab结合scp从安装到使用

1. crontab的安装

1.1. 检测服务器是否已经安装了crontab:

rpm -qa |

如果未安装,进行下列操作:

yum install vixie-cron --> vixie-cron是安装cron的主程序yum install crontabs --> contabs用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序

1.2. 操作命令

service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置service crond status //查看状态chkconfig –level 35 crond on //设置开机自动启动crond服务:chkconfig –list crond //开机级别的crond服务运行情况 ,2、3、4、5级别开机会自动启动crond服务 chkconfig

2. crond表达式

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}

minute: 区间为 0 – 59hour: 区间为0 – 23day-of-month: 区间为0 – 31month: 区间为1 – 12. 1 是1月. 12是12月.Day-of-week: 区间为0 – 7. 周日可以是0或7.

一些符号的使用:

星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。百分号(%):在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+%Y%m%d’。

示例:

每5分钟运行一次命令*/5 * * * * /root/bin/check-status.sh每个月的第一天 13:10运行10 13 1 * * /root/bin/full-backup.sh每个工作日 11 p.m 运行。0 23 * * 1-5 /root/bin/incremental-backup.sh0 23 * * 1,2,3,4,5 /root/bin/incremental-backup.sh

建议:

数字的表示最好用2为阿拉伯数字显示周和日最好不要同时用定时任务要加注解可以定向到日志文件或者空文件定时任务一定是绝对路径,且目录必须存在才能出结果crontab 服务一定要开启运行

3. cron表达式的添加

crontab执行脚本的添加有两种方式,一种是crond -e命令添加一个脚本,一种是创建一个crontab文件。

3.1 crond命令

使用crontab -e命令进行定时任务的编辑,部署一个脚本,示例如下:

*/1 * * * * sh /test/test.sh >>

其他命令:

crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务crontab -l //列出当前的所有调度任务 crontab -l -u jp //列出用户jp的所有调度任务crontab -r //删除所有任务调度工作crontab

3.2 crontab文件(用户级别)

在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。 cron进程根据它来确定使用哪个编辑器编辑 crontab文件。99%的UNIX和LINUX用户都使用vi,你可以编辑$ HOME目录下的. profile文件,在其 中加入这样一行:

EDITOR=vi; export

然后wq保存并退出

1)创建一个名为usercron的文件,其中user是用户名,例如, saintcron。在该文件中加入如下的内容

# 早上九点到晚上6点,每15分钟打印一句good job0,15,30,45 09-18 * * * /bin/echo 'good job' >

2)提交刚刚创建的crontab文件,命令格式:crontab [-u user] file

crontab

3)同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即saint)

使用场景:

用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

3.3 crontab文件(系统级别)

crontab文件格式

SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=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

前三行是用来配置crond任务运行的环境变量。

第一行SHELL变量指定了系统要使用哪个shell,这里是bash;

第二行PATH变量指定了系统执行命令的路径;

第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户

1)编辑crontab文件

sudo vi

2)后续操作与3.2类似,最后重启一下crond服务。

4. 系统调度服务和用户调度服务

系统级任务调度主要完成系统的一些维护操作。用户级任务调度主要完成用户自定义的一些任务。可以将用户级任务调度放到系统级任务调度来完成(不建议这么 做),但是反过来却不行,root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc /crontab文件。如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个 定时重启系统的任务也是无效的。

5. 注意点

1)可以在crontab文件中设置如下形式,忽略日志输出:

0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1

“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。 2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:

#!/bin/shsource /etc/profileexport RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf/usr/local/jboss-4.0.5/bin/run.sh -c mev &

六、Crontab和scp结合使用

Linux下文件传输一般有两个命令scp、ftp(工具需要-安装)

1. scp的文件传输脚本

这里假设主机A 用来获到主机B的文件。

在主机A的用户根目录下执行如下命令来生成配对密钥:ssh-keygen -t rsa 遇到提示回车默认即可,两次回车后,显示完成。公钥被存到用户目录下.ssh目录,比如root存放在:/root/.ssh/id_rsa.pub将 .ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为 authorized_keys,到主机A中执行命令和主机B建立信任,例(假设主机B的IP为:192.168.100.4): scp ~/.ssh/id_rsa.pub 192.168.100.4:/root/.ssh/authorized_keys (如果是集群之间实现秘钥免登录,authorized_keys里面的内容就只能累加,而不能这样直接修改文件名)下面就可以用scp、ssh命令不需要密码来获取主机B的文件了 ssh 192.168.100.4 回车就不需要密码了。

注:其实id_rsa.pub内容添加到对方机器的authorized_keys中就行了

修改crontab的配置文件 sudo vi /etc/crontab使用crontab -e命令进行定时任务的编辑,部署一个脚本

*/1 * * * * sh /data/wind/Wind.WDP.BackUpEsData/test.sh >>

crontab -l 查看已经运行的定时任务

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MySQL常用的函数,可总结回顾下知识点(mysql 函数语法)
下一篇:zookeeper集群搭建
相关文章

 发表评论

暂时没有评论,来抢沙发吧~