由于上篇定时备份网站程序,有些读者反映没有讲解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中加上对应的任务命令就可以每天定时从远程服务器上下载文件了