Linux计划任务crontab

来源:互联网 发布:婚纱摄影基本软件 编辑:程序博客网 时间:2024/04/30 16:48

Linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。 
例如,建立文件crondFile,内容为“00 9 23 Jan * HappyBirthday”,运行“crontab cronFile”命令后,每当元月23日上午9:00系统自动执行“HappyBirthday”的程序(“*”表示不管当天是星期几)。 


.crontab时间格式内容

* * * * * command
M H D m d command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令或脚本内容

如果能掌握这个crontab的时间格式的定义,基本上就会避免出现“bad minute”错误。


[root@localhost ~]# pgrep crond  注:查看crond服务器是否运行;
2022


[root@localhost ~]# /etc/init.d/crond restart


3.正确格式样例一则
代码:
ora10g@tacsoft /home/oracle$ crontab -e
0 22 * * 0-6 /db_backup/dpump_dir/expdp.sh 1>>/db_backup/dpump_dir/expdp.log 2>&1
*/10  * * * *  /bin/sh   /var/lib/sphinx/reload_index.sh >/dev/null 2>&1
10 1  * * *  /bin/sh   /var/lib/sphinx/sphinx.sh >/dev/null 2>&1                                                                  
*/1 * * * *  /var/www/g0551/crontab/try.sh > /var/log/mylog.log 2>&1
0 1 * * *    /usr/bin/mysqldump -h 127.0.0.1 -u root -123456 --default-character-set=utf8 --skip-opt  g0551>/var/www/g0551/g0551.sql
try.sh如下:
#!/bin/bash
DB_USER='root'
DB_PASS='123456'
DB_HOST='localhost'
DB_PORT='3306'


BIN_DIR='/usr/bin'


$BIN_DIR/mysql -u$DB_USER -p$DB_PASS -h$DB_HOST -P$DB_PORT<<EOF


use g0551;


truncate table try_tmp_message;


EOF
~

Linux下使用crontab来执行定时任务计划

执行定时任务
语法: crontab [-u 用户名] [设置文件]
    crontab [-u 用户名] [-elr]


说明:cron是一个守护程序,它提供定时器的功能,让用户在特定的时间得以执行默认的指令或程序.只要用户会编辑定时器的设置文件,就可以使用定时器的功能. 定时器文件格式:

分  时  日  月  周    [用户]  command
 0   4    *    *    *      root    updatedb           #每天早上4:00以root用户身份执行updatedb命令


*/5 *   *    *    *      root      updatedb        #每五分制执行一次
*/1 *   *    *    *       root      updatedb        #每一分钟执行一次

其中用户root可以忽略不填,如:
1-59 * * * * echo "hello">>/root/hello.txt  #每分钟写个hello到/root/hello.txt这个文件中

注意检查一下crontab是否启动,/etc/init.d/crond   start


参数:
      -l    列出用户的定时器设置
      -e    编辑用户的定时器设置
      -r    删除用户的定时器设置
      -u<用户名>   指定要设置定时器的用户名称



如果遇到使用crontab -ecrontab -l的时候提示:no crontab for root
说明还没有为root这个账号提供crontab

可以自己创建一个配置文件来添加上去
1. #vi hello-conf
    1-59 * * * * echo "hello">/root/hello.txt

2. #crontab -u root hello-conf

3. #crontab -l    应该就可以列出任务列表了。

4. #crontab -e    现在就可以用这个命令来编辑配置文件了

--kaixuan's cnblogs

参考文档:http://www.xshell.net/linux/crontab-3.html

执行php脚本:

Try to put this into your .php file

<?php    #!/usr/local/bin/php -q//your code here?>

Then if you include any file into this file you must use something like:

include"/var/www/../your_absolute_path_from_root_folder/connect.php";

Finnaly make sure this file has the right permissions..Try

chmod 755 /var/www/.../file.php

Then if you edit your crontab file with the following command

vi /etc/crontab

put something like

10 6 * * * root php /var/www/..path../file.php

and restart the service with this command

/etc/init.d/cron restart

you have do your job!!

  • Note-Tip:the php file isn't neccessery to be into public_html folder!!