导航:首页 > 操作系统 > linux定时上传

linux定时上传

发布时间:2022-10-31 20:27:55

linux设置定时任务

《使用PSSH批量管理Linux》 一文中,已经学习了使用pssh批量管理linux的技巧。而很多时候,我们需要定时执行一些任务,或者需要定时执行一些批量任务。因此,本文就来研究一下linux设置定时任务的方法。

主要参考 Linux Crontab 定时任务 、 Linux定时任务Crontab命令详解 和 Linux 定时任务详解 。

cron(crond)是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。linux系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。另外,由于使用者自己也可以设置计划任务,所以,linux系统也提供了使用者控制计划任务的命令:crontab命令。

crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。

linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。 /etc/crontab 文件就是系统任务调度的配置文件。

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

假设我们使用的是Ubuntu14.04.5 Server版,查看 /etc/crontab ,内容为:

第一行SHELL变量指定了系统要使用哪个shell;第二行PATH变量指定了系统执行 命令的路径。
接下来的命令格式为:
m h dom mon dow user command
英文全拼为:
minute hour day month week user commond

注意, /var/spool/cron 目录中的用户调度任务,没有user一项,因为文件名已经代表了user。

在以上各个字段中,还可以使用以下特殊字符:

crontab命令格式为:
crontab [-u username] [file] [ -e | -l | -r ]

设置定时任务和时间紧密相关,如果服务器的时区时间设置和本地不同,就不能保证计划任务的正确执行。所以使用crontab的第一步,是调节好服务器的时间。

下面参考 Ubuntu 16.04将系统时间写入到硬件时间BIOS ,对服务器时间进行调节。

时间是有时区的,无论硬件时间还是操作系统时间。hwclock的时区在/etc/default/rcS文件中设置,里面有一个参数UTC,默认值为yes,表示使用UTC时区,如果设置为no,那表示使用osclock的时区。建议hwclock与osclock设置相同的时区,也就是no。

1、查看服务器硬件时间
sudo hwclock -r ,看到的时间格式为: Wed 23 May 2018 11:02:17 AM HKT -0.031663 seconds

2、查看服务器系统时间
date ,看到的时间格式为: Wed May 23 11:02:41 HKT 2018

3、设置hwclock和osclock时区相同
sudo vim /etc/default/rcS ,找到:

修改为:

4、将系统时间写入硬件时间
sudo hwclock -w

5、修改系统时区
osclock的时区配置文件为/etc/timezone,不建议直接修改配置文件。

如果你想修改为CST时间,那么执行 sudo tzselect 命令时,选择Asia->China->Beijing Time即可,这时会提示使用Asia/Shanghai时区。(ubuntu和centos通用)

6、设置即刻生效
执行 date ,发现时区没有变化,依然是HKT。

sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo ntpdate time.windows.com

如果执行ntpdate报错:ntpdate[18409]: no server suitable for synchronization found ,那么就换一个时间同步工具。
sudo apt-get install rdate
sudo rdate -s time-b.nist.gov

再次执行 date ,发现时区已经变成了CST。

7、硬件时间同步
sudo hwclock -r ,发现硬件时间落后。
sudo hwclock -w ,再次把系统时间写入硬件时间,同步完成。

实例1:每分钟、每小时、每天、每周、每月、每年执行

实例2:每小时的第3和第15分钟执行
3,15 * * * * myCommand

实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand

实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand

实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand

实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb
0 * * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb
0 23-7/1 * * * /etc/init.d/smb restart

实例13:每月的4号与每周一到周三的11点重启smb
0 11 4 * mon-wed /etc/init.d/smb restart

实例14:一月一号的4点重启smb
0 4 1 jan * /etc/init.d/smb restart

实例15:每小时执行/etc/cron.hourly目录内的脚本
01 * * * * root run-parts /etc/cron.hourly
run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了。

目标:每分钟查看一下ganglia的状态,并保存到/tmp/log/ganglia目录。

1、创建/tmp/log/ganglia目录
sudo mkdir -p /tmp/log/ganglia

sudo chmod a+w /tmp/log/ganglia

2、编辑crontab
crontab -e ,选择编辑器为vim

3、在crontab文件中添加一行

4、查看crontab任务
crontab -l ,看到任务已经添加成功。

5、等待了五分钟,发现/tmp/log/ganglia目录下啥也没有。
sudo service cron status ,状态正常。
sudo /etc/init.d/cron restart ,重启cron试试。
又等待了五分钟,发现/tmp/log/ganglia目录下依然空空。

莫非是因为pssh没有使用绝对路径? whereis pssh ,找到pssh路径为 /usr/lib/pssh ,修改crontab为:

然而,并没有用。
还是查看下crontab日志吧!

以下主要参考 Ubuntu下用crontab 部署定时任务 。

1、编辑50-default.conf
sudo vim /etc/rsyslog.d/50-default.conf

2、把cron前的井号去掉,也就是修改为:

3、重启rsyslog服务
sudo service rsyslog restart

4、重启crontab服务
sudo service cron restart

5、查看crontab日志
less /var/log/cron.log

果然发现了问题:

也就是说,命令确实按时执行了,只不过没有执行完,被百分号截断了,导致log文件没有正常生成!

修改crontab为:

终于,log文件成功生成,nice!但是,文件内容是空的!因为, /usr/lib/pssh 是一个目录,不是pssh命令!真正的pssh命令是parallel-ssh,找到它的位置为 /usr/bin/parallel-ssh ,修改crontab:

至此,问题圆满解决。
实际使用的时候,一天获取一次ganglia的状态就够了,所以crontab改成:

以上,每天执行一次定时任务,抓取ganglia的运行状态保存到日志文件中。紧接着,我们的目标是使用脚本检查当天的日志文件,如果发现ganglia运行异常,则产生一个错误日志。

1、假设日志文件ganglia-20180524.log的内容为:

2、参考 grep命令最经常使用的功能总结 ,编写脚本checkganglia.sh

3、执行
chmod a+x checkganglia.sh

./checkganglia.sh

如果所有客户机的ganglia运行正常,就会输出All services are runing!。如果有的客户机ganglia进程不存在,则会在/tmp/log/ganglia/目录下生成当天的错误日志。

4、设置定时运行
因为日志的检查工作要在日志生成之后,所以时间上延后十分钟。

上面的脚本,还有很多要改进的地方。比如有的客户机宕机了,上面的脚本检查不出来。比如有的客户机ganglia服务没有启动,那么具体是哪几台?针对这两个问题,下面进行改进。假设已经知道客户机的数量为10。

参考 csplit命令 ,checkganglia.sh脚本修改为:

以上脚本,实现了当客户机数量不为10的时候,进行报错;当客户机ganglia服务没有启动时,进行报错,并且筛选出所有没有启动ganglia的客户机。

本文中,我们先学习了crontab的基础知识和基本用法。然后通过监控ganglia这一个应用场景来具体学习crontab的详细使用方法,包括查看cron日志的方法,crontab中命令转义的方法,定时执行脚本的方法,以及审阅日志脚本的编写和进阶。

至此,还不够完美,因为我们需要每天登录管理机查看有没有错误日志。下一篇 Linux设置邮件提醒 中,我们将会研究linux设置邮件提醒的方法。审阅完日志后,如果脚本能够给我们发送一封邮件,告知我们审阅的结果,那么我们就不必再每天查看错误日志。

Ⅱ 怎么将文件自动从windows上传到linux

  1. 网上下载pscp工具,网站为https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Ⅲ linux自动备份网站及自动上传FTP脚本的方法

对于我们个人站长来说,数据的重要不用再谈,而很多站长经常忘记备份数据,也有无良的JS跑路,硬盘损坏,数据丢了,其中DS就丢失过好几次数据,如果没有备份,肯定悲剧,本文介绍一种自动备份数据的方法!
本脚本特色:
1.纯zip压缩,1-9可自行调整压缩率
2.整台VPS备份,还原方便,非常适合站群
3.加入压缩密码,可以自己设置
4.加入绑米信息伪静态压缩,防止伪静态弄丢
5.请确保在home目录下有backup目录,如果没有请执行
mkdir
/home/backup
6.还原数据库请参考:导入数据库方法
最后更新时间:2012年8月25日
centos安装zip
yum
install
zip
debian安装zip
apt-get
install
zip
下载编辑
wget
-c
http://www.***.com/soft/beifen.sh
vi
beifen.sh
只编辑注解为需要修改的地方
【脚本开始】
#!/bin/bash
#下面的参数是你要修改的
MYSQL_USER=root
#mysql用户名
MYSQL_PASS=mysql密码
#mysql密码
FTP_USER=FTP用户名
#ftp用户名
FTP_PASS=FTP密码
#ftp密码
FTP_IP=FTP地址
#ftp地址
FTP_backup=FTP目录
#ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/home/wwwroot/
#要备份的网站数据
WEB_BANGMI=/usr/local/nginx/conf/
#要备份的绑米信息
WEB_MULU=/home/backup
#备份文件存放目录
WEB_MIMA=zhujima
#备份时候的密码
WEB_YASUOLV=1
#压缩率
1-9
如果VPS没有zip,请安装zip
#上面是你要修改的地方

#删除淘宝客缓存,属于自定义设置。可自行操作
#rm
-rf
/home/wwwroot/1.com/Apicache/*

#定义数据库的名字和旧数据库的名字
DataBakName=Data_$(date
+"%Y%m%d").zip
#定义数据库名字
WebBakName=Web_$(date
+%Y%m%d).zip
#定义备份网站名字
BANGMI=BANGMI_$(date
+%Y%m%d).zip
#定义绑米备份名字

OldData=Data_$(date
-d
-5day
+"%Y%m%d").zip
#定义5天前数据库名字
OldWeb=Web_$(date
-d
-5day
+"%Y%m%d").zip
#定义5天前网站名字
BANGMIshan=BANGMI_$(date
-d
-5day
+"%Y%m%d").zip
#定义5天前绑米名字

#删除本地3天前的数据
rm
-rf
$WEB_MULU/Data_$(date
-d
-3day
+"%Y%m%d").zip
$WEB_MULU/Web_$(date
-d
-3day
+"%Y%m%d").zip
$WEB_MULU/BANGMI_$(date
-d
-3day
+"%Y%m%d").zip

#导出全部数据库
cd
$WEB_MULU
/usr/local/mysql/bin/mysqlmp
-u$MYSQL_USER
-p$MYSQL_PASS
--all-databases
>
$(date
+"%Y%m%d").sql

#压缩数据库文件为一个文件
zip
-r
-$WEB_YASUOLV
-P
$WEB_MIMA
$DataBakName
$WEB_MULU/*.sql
rm
-rf
$WEB_MULU/*.sql

#压缩网站数据
cd
$WEB_DATA
zip
-r
-$WEB_YASUOLV
-P
$WEB_MIMA
$WebBakName
./*
mv
$WebBakName
$WEB_MULU/$WebBakName
cd
$WEB_MULU

#压缩绑米信息
cd
$WEB_BANGMI
#进入绑米目录
zip
-r
-$WEB_YASUOLV
-P
$WEB_MIMA
$BANGMI
./*
mv
$BANGMI
$WEB_MULU/$BANGMI

#上传到FTP空间,删除FTP空间5天前的数据
cd
$WEB_MULU
#进入备份目录
ftp
-v
-n
$FTP_IP
<<
END
user
$FTP_USER
$FTP_PASS
type
binary
cd
$FTP_backup
delete
$BANGMIshan
delete
$OldData
delete
$OldWeb
put
$DataBakName
put
$WebBakName
put
$BANGMI
bye
END
加入权限,写入定时执行
chmod
777
/root/beifen.sh
crontab
-e
30
21
*
*
*
/root/beifen.sh
注:每天21:30开始备份并且上传FTP
本文地址:http://www.zhujima.com/139.html

Ⅳ linux定时通过shell脚本利用sftp命令上传文件。需要手动输入密码,用openSSH-clients这个插件可以解决么

Linux系统提供多种不同的Shell以供选择。

常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。
Bourne Shell是AT&T Bell实验室的 Steven Bourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。
C Shell是加州伯克利大学的Bill Joy为BSD Unix开发的,与sh不同,它的语法与C语言很相似。它提供了Bourne Shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell与BourneShell并不兼容。
Korn Shell是AT&T Bell实验室的David Korn开发的,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。Korn Shell的效率很高,其命令交互界面和编程交互界面都很好。
Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点

Ⅳ Linux自动通过FTP上传到WINDOWS下的FTP SERVER上

写 bash shell 脚本吧,Linux 下面定时运行。 很简单的,shell 内容就是执行你所输入的命令。你可以先在 Linux 下面直接输入命令看看效果,之后写入 shell 脚本就行了。 另外问个问题,你不会 Linux ,为什么还要用 Linux ?而且还是串口远程登录,这台服务器应该是很老的…… 具体 shell 脚本怎么写,我建议你 google 搜索,很简单的。 因为是工作需要,所以我不打算直接写给你,让你有个自学的机会吧。

Ⅵ linux文件 自动 定时 发送到我外网邮箱中去。

首先是你要安装了MTA,随便哪个都行,像exim、postfix、sendmail等等,安装后启动它。直接安装,配置也不用动的。
然后是在crontab里加一行,表明是定时发送邮件
0 1 * * * “命令”(表示每天1:00零分的时候发送邮件)
命令如下:
1、如果你的文件是文本的话,可以直接用 cat a.text | mail [email protected] 发送就行了
2、如果你的文件不是文本的话,可以用 cat hello | nail -a a.text [email protected]也就行了。注:nail为一种文本模式下的mail客户端,和mail命令是一样的,不过功能比它强大而已,它存在于mailx中,其实mail、nail、mailx都是同一个命令,mail、nail只是mailx的连接而已(fedora13),相信ubuntu也是一样的,如果实在没有,就安个mailx吧;hello为邮件内容,随便写的。

Ⅶ Linux制定定时备份文件到FTP服务器的问题

crontab -u 用户名(root)
* * * * * 每个星号表示 每分 每小时 每天 每月 每星期 如果是每天15:30广播一次,就是
30 15 * * * wall “hello world”

至于你自己的命令,自己看着办吧。

Ⅷ 想将ubuntu下某个文件夹下的文件定时上传至FTP或者共享文件夹,也可以直接传至另一台LINUX上使用。

写的一个简单脚本.
linux1 = A (不定时生成文件)
linux2 = B (需隔一天后使用文件)
B 主机必须提供FTP服务,建立相应的FTP用户,具备相应的上传权限和容量等.
/home/backup :文件备份临时目录
/home/bak :本地文件备份目录
注意:如果服务器语言为英文,请将脚本内中文注释改为英文或删除.

A 主机
-----------------------------------------------------------------------
mkdir /home/backup
mkdir /home/bak
vi /home/backup.sh
vi /etc/crontab
30 2 * * * root /home/backup.sh
#建立目录,设置每天2:30定时执行备份脚本

backup.sh内容

#!/bin/bash
#
# 说明:
# 自动备份本机文件到远程FTP
#
PATH=/bin:/usr/bin:/sbin:/usr/sbin
LANG=C
LC_ALL=C
# 设置A路径
date='date +%Y-%m-%d'
bakdir=/home/backup
home=/home
# A主机 "/etc/目录下的文件"
cp -a /etc/* $bakdir
# 延迟20S,等文件拷贝结束
sleep 20s
sync;sync
# 在本机压缩与打包
cd $bakdir
tar -zcf "$date".tar.gz *
sleep 20s
sync;sync
# 备份到B主机
id="username"
pw="yourpassword"
cd= $bakdir
# 利用FTP备份到192.168.1.200
ftp -n 192.168.1.200 > $home/ftp.log 2>&1 <<EOC
user $id $pw
binary
cd $bakdir
put "$date".tar.gz
bye EOC
sync;sync
# 移动到本机备份
mv $bakdir/"$date".tar.gz $bakdir/bak
sleep 20s
sync;sync

Ⅸ 如何在linux服务器中定时将文件发送至本机

可以通过cron job实现
先写一个脚本,命令是通过mail将文件发送给用户的邮箱,类似
mail -s "title" [email protected] < filename
然后设置cron job,定时运行即可

Ⅹ Linux自动通过FTP上传到WINDOWS下的FTP SERVER上

写 bash shell 脚本吧,Linux 下面定时运行。

很简单的,shell 内容就是执行你所输入的命令。你可以先在 Linux 下面直接输入命令看看效果,之后写入 shell 脚本就行了。

另外问个问题,你不会 Linux ,为什么还要用 Linux ?而且还是串口远程登录,这台服务器应该是很老的……

具体 shell 脚本怎么写,我建议你 google 搜索,很简单的。
因为是工作需要,所以我不打算直接写给你,让你有个自学的机会吧。

阅读全文

与linux定时上传相关的资料

热点内容
如何批量快速压缩视频 浏览:432
我的世界如何加入ice服务器 浏览:873
兄弟cnc编程说明书 浏览:204
php闪电入门教程学习 浏览:152
金岳霖逻辑pdf 浏览:938
linuxtomcat线程 浏览:77
pboc长度加数据加密 浏览:187
英雄联盟国际服手游怎么下安卓 浏览:297
程序员的思路 浏览:234
只能用命令获得的四种方块 浏览:358
怎么用命令方块防止开创造 浏览:807
扫描版的pdf 浏览:790
编程猫怎样做3d游戏 浏览:207
怎么查找云服务器上的ftp 浏览:156
我的世界服务器如何注册账号 浏览:934
统计英文字符python 浏览:424
linux信息安全 浏览:910
压缩机接线柱爆 浏览:1001
程序员自主创业 浏览:585
汇编程序员待遇 浏览:360