windows和linux下任务计划:样例
一、Windows下:
windows下创建bat文件,并写入内容。 然后添加到系统任务计划中, 以一个具有管理员权限的、禁止远程登录的用户定时运行。
1. 开机时同步系统时间(这个脚本是运行这2003上的,不敢保证其他系统可用)
@echo off
cd /d "%tmp%"
(
echo With CreateObject^("Microsoft.XMLHTTP"^)
echo .open "get", "http://open.baidu.com/special/time/", False
echo .send
echo WScript.echo DateAdd^("s",CLng^(Left^(Split^(Split^(.responseText,"baidu_time("^)^(1^),")"^)^(0^),10^)^),"1970-1-1 8:00"^)
echo End With
)>gettime.vbs
for /f "tokens=1*" %%i in ('cscript //nologo gettime.vbs') do date %%i & time %%j
2. mysql 每日备份任务。
mysql_backup.bat , 按 /年月/日.sql 的格式存储。
@echo off set FileDir="D:\backup\sql\example.com\" set FileName="exm_%date:~0,4%%date:~5,2%_%date:~8,2%.sql" set MysqlDir="C:\webware\mysql 5.1\bin" rem if not exist %FileDir% md %FileDir% %MysqlDir%\mysqldump -uroot -p123456 site_example > %FileDir%%FileName%
3. 执行php等web脚本任务
@ C:\PHP\php.exe -q D:\www\example.com\cron\unpaid_inform.php
这是一个使用mysql导出语句的方法,由于我服务器是2003,所以写了这个方法。
如果是更高版本的windows服务器, 直接复制mysql目录下/data/里的文件,效率要高一些——因为需要复制ibdata*和ib_logfile*, 所以一旦还原是要还原全部数据库。
二、Linux下:
linux下的任务计划很简单。
权限: 添加cron得使该用户有cron使用权。 除root用户外: cron.allow 存在 则 user需要添加到此文件;如果 cron.deny 存在,此列表中的用户将不可使用。优先级 cron.allow > cron.deny。
crontab -e 进入编辑当前user的crontab, crontab -e -u apache 编辑指定用户的。 添加cron如:
*/30 * * * * /.../example.sh param1
可以使用 wget 或 bash 脚本来请求网页。
使用场景1:php shell控制crontab。
我在用php执行shell添加crontab时,
exec("echo $string | crontab --", $last, $status);
将整个列表字符串写入到当前user(php使用的, 可能是apache或php-fpm指定的user)的cron列表文件, 在centos系列具体cron文件是 /var/spool/cron/user。
使用场景2:定时备份数据库(mysql)
建立一个bash脚本
#!/bin/bash /usr/local/mysql/mysqldump --add-drop-tables --single-transaction --quick -u myaccount -pmypass mydatabase > /var/data/2015-01-01.sql
* 01 * * * mysql_backup.sh
crontab 比 windows的任务计划简单得多。

浙公网安备 33010602011771号