Linux下系統的定時及延時任務


一、系統的延時

  •  是臨時的。對系統做的任務指定一個時間點。發起的命令是at

at    時間點(now+1min)      ## 設定任務實行時間

  at>  執行命令                    ## 任務的動作

at><EOT>                 ## 用ctrl+D發起任務

  •  at命令常用參數:

  at   -l    查看列表

   
 

  at   -c  任務號   查看任務內容

   

   at    -r  任務號  取消任務執行

  注意:任務有輸出的時候,輸出會以郵件的形式發送給at任務的發起者。在超級用戶下查看郵件命令:mail(郵件在/var/mail/root下)。

  •  使用:  mail  -u  root      查看root用戶的郵件

  按n表示查看第n封的內容

  按q表示退出

>  /var/spool/mail/root    清空郵件  

 

二、設置延時任務的黑白名單

/etc/at.deny    系統中默認存在,在此文件中的用戶不能執行at

/etc/at.allow     系統中默認不存在;當存在時,普通用戶不能執行at命令,且只有在該文件中用戶可以執行

在root用戶下設置黑名單:vim  /etc/at.deny    添加 student      ##此時在student用戶下,不可以執行延時任務的設定

在root用戶下設置白名單:/etc/at.allow (該文件默認是不存在的)若建立出來,則普通用戶不能執行at命令;除了超級用戶,只有在at.allow里面的用戶才能使用at命令。          

注意:白名單出現,黑名單則會失效!

三、系統定時任務設定

  該命令是永久的。

    【1】系統控制crontab的服務

      crond.service  ## 當該服務開啟時,控制定時任務生效(不會執行錯誤時間點的任務)

 

    【2】crontab相關命令

  •   使用命令:  crontab  -e  -u   root 對文件編輯,以下結果表示每分鍾執行一次file1的創建 (-e 直接設定 -u  指定發起的用戶  無-u默認當前用戶)  
    
     
     注意:該文件目錄是:/var/spool/cron/,文件名為root (用戶發起者是誰,文件名就是誰
  •  使用命令:crontab  -l   -u  root  查看該用戶文件內容(與cat  /var/spool/cron/root結果一樣)         

 

    
 
  •  使用命令:crontab  -r  -u   root   對該用戶的文件內容的刪除 
     

    【3】crontab  時間表示方式: 

 

    *   *  *  *  *   rm  -rf     /mnt/*    ## 表示每分鍾執行一次

    * /2  *  *  *  *              ## 表示每2分鍾執行一次

    * /2  09-17  *  *  *            ##上午九點到下午的五點每兩分鍾執行一次

    * /2  */2    *  *  *          ## 每個兩小時每兩分鍾

    * /2  09-17  *  *  5             ## 【2】 該【1】條件的基礎上加上只在周五做

    * /2  09-17  *  1  5         ## 每周周五和每月一號的早9晚5沒兩分鍾執行一次  

    * /2  09-17  3,5  1  5             ##表示3月和五月每周周五和3.1及5.1的上午9點到下午5點,且每2分鍾一次

     注釋: man  crontab   命令使用查看      

                  man 5 crontab   查看該文件

  •  根目錄下的anacron用來監控並執行漏過的定時任務(crond.service默認是開機自啟動)  

  【3】文件的方式設定

  1)交互式:

      vim    /etc/cron.d/filename  ## 文件名自己取

     *   *   *   *     *  username    action

  實例:每分鍾使用root用戶執行/mnt/test/目錄下文件的刪除   

     
    注釋:打開另一個終端,可以使用watch -n 1 ls /mnt/test/* 命令觀察文件的內容

 

    2)非交互式:

     [root@foundation77 cron.d]# touch westos

     [root@foundation77 cron.d]# echo "* * * * * root touch /mnt/test/xniu" >> westos     ## 由於存在特殊字符*,所以要雙引號
     [root@foundation77 cron.d]# cat westos
     * * * * * root touch /mnt/test/xniu


   【4】使用crontab命令的執行限定

     /etc/cron.deny     系統中默認存在,在此文件中的用戶不能執行crontab

      /etc/cron.allow     系統中默認不存在;當存在時,普通用戶不能執行crontab命令,且只有在該文件中用戶可以執行

    注意:這兩個名單不會影響/etc/cron.d/目錄中定時任務的發起及執行 

     示例:

     1)修改/etc/cron.deny 文件,把student添加進去

     2)修改/etc/cron.allow文件為空

     3)使用 vim /etc/cron.b/westos,對內容進行修改

  

   
    4)一分鍾后,在/home/student目錄下對文件進行查看:

 

     [root@foundation77 cron.d]# ll /home/student/

     total 0
     -rw-r--r--. 1 student student 0 Aug  1 23:58 hello

 

四、臨時文件的管理

  【1】臨時文件,顧名思義為當一個程序運行時,臨時需要的文件。 

   cd    /usr/lib/tmpfiles.d/

   vim   westos.conf

   d  /mnt/westos  777   root   root    8s    ## 各參數分別表示:目錄形式   目錄名   權限   用戶  組用戶    清理的時長

 

   systemd-tmpfiles   --create    /usr/lib/tmpfiles.d/*    ## 建立westos.conf里面的文件

   systemd-tmpfiles  --clean    /usr/lib/temfiles.d/*    ## 在時長到達后,執行該命令會對臨時文件進行刪除

    【2】示例:

      [root@foundation77 cron.d]# cd /usr/lib/tmpfiles.d/

      [root@foundation77 tmpfiles.d]# vim xniu.conf
     
      [root@foundation77 tmpfiles.d]# systemd-tmpfiles --create /usr/lib/tmpfiles.d/*
      [root@foundation77 tmpfiles.d]# ls /mnt/
      create_all.sh  software  test1      vm_kuaizhao.sh
      creat_vm.sh    test      test.xml  vm_reset.sh
      [root@foundation77 tmpfiles.d]# touch /mnt/test1/file{1,6}
      [root@foundation77 tmpfiles.d]# ls /mnt/test1/
      file1  file6
      [root@foundation77 tmpfiles.d]# systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*     ##執行該命令的時候,時間要超過8s
      [root@foundation77 tmpfiles.d]# ls /mnt/test1/
     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM