zoukankan      html  css  js  c++  java
  • 计划任务_crontab

    1. crontab原理和使用

    Cron 实际上是两个独立的程序。Cron damon, 或者叫做cron ,crond 它是伴随系统一起启动的常驻程序

    来检查是否cron 在系统上运行, 用ps 命令 和 grep 过滤所需内容:

    ps -ef|grep cron 
    
    root    387      1   0   Jun 29 ?     00:00:00 crond 
    
    root  32304  20607   0   00:18 pts/0  00:00:00 grep cron 

    进程 crond 每分钟激活一次,检查cron 文件列表,那里面记录着什么程序应该在什么时间来运行。如果有程序需要运行,它启动他们然后继续休眠,你不需要关系cron的运行机制,只需要知道它在运行,并且不停地轮询cron 任务列表。

    The cron 列表文件 随系统的不同可能不同,但通常由下面的东西组成,每个用户的计划任务文件一般是放下面 :

    在 /var/spool/cron 或者 /var/spool/cron/crontabs

    这些文件是利用cron 的用户建立的,每一个(计划任务)文件使用了用户名字信息,你总能发现 一个root 文件 在 /var/spool/cron/root 。如果有一个叫jinx的用户使用了cron 那么一定存在一个 文件/var/spool/cron/jinx

    ls -l /var/spool/cron 
    
    -rw-------   1  root    root          3768 Jul 14  23:54  root 
    
    -rw-------   1  root    group          207 Jul 15  22:18  jinx 

    cron的另一部分是 表 编辑器, crontab ,它用来编辑 /var/spool/cron 目录中的文件。crontab 自己知道哪的文件需要修改,能让事情变的更简单。

    crontab 辅助工具有三个选项: -l , -r , -e . 

    -l 选项 列出当前 userid 文件中的 任务列表。

    -r 选项 删除一个 cron 表文件

    -e 编辑 文件

     也可直接写一个计划任务文件,然后crontab  文件名 形成计划任务.

    test@hefu:~$ pwd
    /home/test
    test@hefu:~$ cat test_cront.cron 
    * * * * *  /home/test/1.sh
    test@hefu:~$ crontab  -l
    no crontab for test
    test@hefu:~$ crontab  test_cront.cron 
    test@hefu:~$ crontab  -l
    * * * * *  /home/test/1.sh

    2.计划任务遇到的问题

      因为是在 普通用户下 没法编写 /etc/crontab 文件,所以给了setfacl -m u:ubuntu:rw /etc/cront.

    导致了计划任务都没有执行. 说明这种方法不可行.

    3. 普通用户执行crontab

    参考:  普通用户无法使用crontab故障排除

    4.使用 crontab -e 与 直接编辑 /etc/crontab 的区别

    Linux配置定时任务,大家都知道使用crontab这个系统功能,但有时候我们需要区分用户执行,下面就直接说一下2种方法的区别:

    方法1:

    使用命令 crontab -e 然后直接编辑定时脚本。

    这样执行以后,属于用户自定义的,会被写到 /var/spool/cron 目录下,生成一个和用户名一致的文件,文件内容就是我们编辑的定时脚本。

    [root@localhost cron.d]# cd /var/spool/cron  
    [root@localhost cron]# ll  
    总用量 4  
    -rw-------. 1 root root 52 12月  9 10:58 root  
    [root@localhost cron]# pwd  
    /var/spool/cron  
    [root@localhost cron]# cat root   
    30 03 * * * /root/automysqlbackup.sh  

    方法2:

    使用命令 vi /etc/crontab 编辑定时脚本。

    如:

    [root@localhost ~]# cat /etc/crontab                                                                                                                                                                        
    SHELL=/bin/bash                                                                                                                                                                                             
    PATH=/sbin:/bin:/usr/sbin:/usr/bin                                                                                                                                                                          
    MAILTO=root                                                                                                                                                                                                 
    HOME=/                                                                                                                                                                                                      
                                                                                                                                                                                                                
    # run-parts                                                                                                                                                                                                 
    30 * * * * root /usr/sbin/ntpdate 210.72.145.4

    (系统级的)做系统级配置我们会直接配置 /etc/crontab

    (用户级的)一般还是建议大家使用 crontab -e ,这样系统也会帮着检查我们配置的脚本语法。

  • 相关阅读:
    JDBCUtils
    C3P0配置
    反射基本常识(二)
    反射基本常识(一)
    String to Integer (atoi)
    ZigZag Conversion
    Longest Palindromic Substring
    Palindrome Number
    Reverse Integer
    Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/yitianyouyitian/p/9088590.html
Copyright © 2011-2022 走看看