四时宝库

程序员的知识宝库

linux定时从远程服务器上下载文件之shell脚本

由于上篇定时备份网站程序,有些读者反映没有讲解crontab部分,在这里就补充一部分crontab的知识内容。

一般在linux控制管理端输入”crontab -l“命令就可以查看定时任务里的任务列表信息。如下图:

如果想要编辑定时任务列表需要输入“crontab -e”,这时已经打开定时任务的编辑页面了

crontab各参数说明:

crontab [-u user] [file]

crontab [-u user] [-e|-l|-r]

crontab -l -u root 查看root用户的任务表

注意crontab是分用户的,以谁登录就会编辑到谁的crontab

-e : 执行文字编辑器来编辑crontab,内定的文字编辑器是VI

-r : 删除目前的crontab

-l : 列出目前的crontab(查看专用)

-i : 会和-r 配合使用,在删除当前的crontab时询问,输入y 则删除

/etc/init.d/crond restart(stop/start)重启或者停止后再启动

crontab文件的使用示例:

30 21 * * * 表示每晚的21:30

45 4 1,10,22 * * 表示每月1、10、22日的4 : 45

10 1 * * 6,0 表示每周六、周日的1 : 10

0,30 18-23 * * * 表示在每天18 : 00至23 : 00之间每隔30分钟

0 23 * * 6 表示每星期六的11 : 00 pm

* */1 * * * 每一小时

* 23-7/1 * * * 晚上11点到早上7点之间,每隔一小时

* 8,13 * * 1-5 从周一到周五的上午8点和下午1点

0 11 4 * mon-wed 每月的4号与每周一到周三的11点

0 4 1 jan * 一月一号的4点

如果还想继续了解crontab的相关知识,请在留言区域留言。我会抽时间单独整理出来一篇关于crontab的知识


现在开始讲解,定时从远程服务器上下载文件

前期准备工作:linux系统需要先安装好expect。如果linux没有安装expect,要先安装好后才可以使用。

expect 是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预。说白了, expect 就是一套用来实现自动交互功能的软件。

在实际工作中,我们运行命令、脚本或程序时,这些命令、脚本或程序都需要从终端输入某些继续运行的指令,而这些输入都需要人为的手工进行。而利用 expect ,则可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行。这就是 expect 。如需详细了解expect,我可以单独整理出来一篇关于expect的文章

下面是对代码的详细说明:其中

@后的星号是你远程服务器的IP地址

send后的星号是你远程服务器的密码

/bak/bakmysql/*.tar.gz 是远程服务器上的文件

/bak/bakmysql/是我另外一台服务器的目录

下面放上具体shell代码

#!/usr/bin/expect -f

spawn scp -r root@***.***.***.***:/bak/bakmysql/*.tar.gz /bak/bakmysql/

set timeout 3000

expect "root@***.***.***.***'s password:"

set timeout 3000

send "*******\r"

set timeout 3000

send "exit\r"

expect eof

然后把文件保存命名为cron.sh保存到服务器上对应的位置,在crontab中加上对应的任务命令就可以每天定时从远程服务器上下载文件了

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接