Linux學習命令匯總九——任務計劃調度atd,crond及文件訪問控制列表
linux 任務計劃:
一次性任務計劃命令: at ,batch ,依賴進程atd
周期性任務計劃命令:crontab ,anacron ,依賴進程crond
at,batch命令及選項
at,batch是可以處理進執行一次就結束調度的命令。不過在執行at時,必須有atd服務支持才行 。若atd默認未啟動,則at命令就會失效 。batch是利用at來進行命令的執行,系統空閑時才執行後臺任務 。
交互式:讓用戶在at> 提示符輸入多個要執行的命令
批處理:將任務的命令寫入文件由at進行調用
建議使用命令絕對路徑,使用Ctrl+d鍵提交任務
# at TIME
# at -m :當at的工作完成後,即使沒有輸出信息,依然以email方式通知該任務已完成
# at -l : 相當於atq 命令,列出目前系統上面所有at調度任務
# at -d JOBS:相當於atrm 命令,取消JOBS 調度 ,例 # at -d 1 取消第一個調度任務
# at -c job : 列出該job 的實際命令內容
# batch 不能指定時間,它自動選擇系統空閑時間執行
[root@study ~]# chkconfig --add atd 依賴atd服務 [root@study ~]# chkconfig atd on [root@study ~]# at now +5 minutes 從現在開始第5分鐘執行 at> /bin/ls /etc/passwd at> /bin/sync at> /sbin/shutdown -r now at> <EOT> job 5 at 2018-05-06 19:21 [root@study ~]# at -l 5 2018-05-06 19:21 a root 3 2018-05-06 18:24 b root [root@study ~]# at -d 3 [root@study ~]# atq 5 2018-05-06 19:21 a root [root@study ~]# at -m Garbled time [root@study ~]# at -c 5 #!/bin/sh # atrun uid=0 gid=0 # mail root 0 umask 22 HOSTNAME=study.itwish.cn; export HOSTNAME SHELL=/bin/bash; export SHELL HISTSIZE=1000; export HISTSIZE ... [root@study ~]# batch at> /bin/ls /etc/issue at> /bin/sync at> <EOT>
mail命令及選項
mail命令,並使用Ctrl+D鍵 提交郵件
# mail 查看郵件,並使用號碼選擇要查看的郵件,使用quit退出
# mail root 向root用戶發送郵件
# mail -s “How are”root
# mail -s “Ceshi” root < /etc/passwd 指定/etc/passwd 文件作為發送root用戶的郵件內容
[root@study ~]# yum install mailx -y 安裝mailx郵件 [root@study ~]# mail 查看郵件 Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/root": 2 messages 2 new >N 1 root Tue May 8 09:42 38/1511 "ces" N 2 root Tue May 8 09:43 18/583 "ces" & 1 輸入郵件號查看郵件內容 Message 1: From [email protected] Tue May 8 09:42:50 2018 Return-Path: <[email protected]> X-Original-To: root Delivered-To: [email protected] Date: Tue, 08 May 2018 09:42:50 +0800 To: [email protected] Subject: ces User-Agent: Heirloom mailx 12.4 7/29/08 Content-Type: text/plain; charset=us-ascii From: [email protected] (root) Status: R how are & 2 Message 2: From [email protected] Tue May 8 09:43:05 2018 Return-Path: <[email protected]> X-Original-To: root Delivered-To: [email protected] Date: Tue, 08 May 2018 09:43:05 +0800 To: [email protected] Subject: ces User-Agent: Heirloom mailx 12.4 7/29/08 Content-Type: text/plain; charset=us-ascii From: [email protected] (root) Status: R how are you ? & quit 退出
crontab ,anacron命令及選項
周期性任務:cron ,
# yum install crontabs -y 安裝crond 進程及crontab 命令
建議命令寫全路徑 ,日誌目錄為 /var/log/cron
cron任務命令依賴於crond進程 ,crond:守護進程,運行在後臺,隨時監聽著進程等待執行家目錄,主目錄 home directory
系統cron:
# chkconfig crond on 配置開機運行crond 進程
# service crond start 啟動crond進程
# service crond status 查看crond進行是否運行
# ps -aux | grep crond 查看運行中是否包含crond 進程
配置文件: /etc/crontab
[root@bogon ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
選項: 分鐘 小時 天 月 周 用戶 命令
註意:添加用戶名稱
例: */1 * * * * root /bin/echo "hello word" 表示每分鐘root 用戶執行/bin/echo "hello word" 語句
01 00 * * 1 root /etc/rc.d/init.d/httpd restart 表示每周一的0點1分root用戶執行 httpd 重啟服務
時間表示法:
1、每個時間位都應該使用其可用的有效範圍的值
2、某時間位上的*表示對應位的所有的有效取值
3、 - 表示連續的時間點取值 ,如 30-35
4、 , 表示離散的時間點取值 ,如 3 ,5
5、 */# 表示在指定的時間範圍內每隔# 執行一次 ,如 */2 * * * * /bin/echo "hello word" &> /dev/null 表示每隔2分鐘輸出語句“hello word”,通過輸出重定向而避免接收郵件
用戶cron:
使用crontab命令來實現,配置文件 /etc/spool/cron/ 目錄中以登錄名命名的文件
# crontab -l 查看自己的crontab任務列表
# crontab -e 通過editor 變量中定義的編輯器打開自己的cron配置文件,編輯單獨的任務都是用-e 選項,無論是刪除還是新建
# crontab -r 移除crontab文件
如果是管理員 # crontab -u username 為username用戶指定crontab作業 ,例 :crontab -e -u docker 為用戶docker 指定crontab作業
anacron :最小刻度是天 ,是crontab的補充,用於檢查crontab中某任務在過去一個周期是否沒有執行;如果沒有執行,則在開機以後的某個時間點讓其執行一次,無論其周期是否到達
[root@study ~]# vi /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed */1 * * * * root /bin/echo "hello word" 42 15 * * * root /etc/rc.d/init.d/httpd restart [root@study ~]# tail -f /var/log/cron 查看cron日誌 May 8 15:42:01 study crond[1361]: (*system*) RELOAD (/etc/crontab) May 8 15:42:01 study CROND[1756]: (root) CMD (/bin/echo "hello word") May 8 15:42:01 study CROND[1757]: (root) CMD (/etc/rc.d/init.d/httpd restart) [root@study ~]# mail 查看郵件確認 Heirloom Mail version 12.4 7/29/08. Type ? for help. >N 1 Cron Daemon Tue May 8 15:42 23/775 "Cron <root@study> /bin/echo "hello word"" N 2 Cron Daemon Tue May 8 15:42 24/824 "Cron <root@study> /etc/rc.d/init.d/httpd restart" [root@study ~]# crontab -e 為登錄用戶配置cron 任務 no crontab for root - using an empty one */1 * * * * /bin/ls /etc/passwd [root@study ~]# crontab -l */1 * * * * /bin/ls /etc/passwd [root@study ~]# crontab -u docker -e 為用戶docker 指定cron任務 no crontab for docker - using an empty one */1 * * * * /bin/cat /etc/passwd [root@study ~]# crontab -l */1 * * * * /bin/ls /etc/passwd [root@study ~]# crontab -r 刪除本用戶cron任務 [root@study ~]# crontab -u docker -l */1 * * * * /bin/cat /etc/passwd [root@study ~]# crontab -u docker -r [root@study ~]# cd /var/spool/cron/ 查看/var/spool/cron/目錄,確認那個用戶存在cron任務 [root@study cron]# ls
文件訪問控制列表facl
FACL:Filesystem Acess Control List
Linux(和其他Unix等POSIX兼容的操作系統)有一種被稱為訪問控制列表(ACL)的權限控制方法,它是一種權限分配之外的普遍範式。例 如,默認情況下你需要確認3個權限組:owner、group和other。而使用ACL,利用文件擴展屬性保存額外的訪問控制權限,你可以增加權限或其他用戶或組別。可以允許指定的用戶A、B、C擁有寫權限而不再是讓他們整個組擁有寫權限。
# setfacl 設定facl權限
-m: 設定權限
[u|g]:UID:perm
d:[u|g]:UID:perm 繼承父目錄facl權限
m::perm
-x:取消facl權限
[u|g]:UID
m:
-R: 為某一個目錄設置默認的訪問控制列表。意味著在這個目錄下的文件將自動繼承目錄的訪問控制列表權限。
例
# setfacl -m u:hadoop:rw inittab 配置文件inittab對用戶hadoop具有讀寫權限
# setfacl -x u:hadoop inittab 取消facl 權限
[root@study root]## yum install acl 安裝acl 功能 [root@study root]# vi /etc/fstab .... /dev/mapper/vg0-home /home ext4 defaults,acl 1 2 激活磁盤分區ACL功能 .... [root@study ~]# mount -o remount /home 重新掛載/home分區 [root@study ~]# useradd hadoop [root@study ~]# useradd docker [root@study ~]# cd /home [root@study home]# setfacl -m u:docker:rw ./a.txt [root@study home]# setfacl -m u:hadoop:rw ./a.txt [root@study home]# getfacl a.txt # file: a.txt # owner: root # group: root user::rw- user:hadoop:rw- user:docker:rw- group::r-- mask::rw- other::r-- [root@study home]# cat /etc/issue > a.txt [root@study home]# su - docker [docker@study ~]$ vi /home/a.txt CentOS release 6.9 (Final) Kernel \r on an \m
本章知識點匯總
# chkconfig atd on 在2-5級別下開機自動啟動該進程
# chkconfig crond on 開機啟動crond進程服務
# chconfig postfix on 開機啟動postfix郵件進程服務
# service atd start 啟動atd進程服務
# service crond start 啟動crond服務
# service postfix start 啟動郵件服務
# at TIME 執行一次性任務調度
# atq 查詢at 任務 ,相當於 # at -l
# atr 刪除at任務 ,相當於# at -d
# mail -s “Subject” Username 發送主題為Subject的郵件到Username用戶
# crontab -r 刪除本用戶的crontab任務
# crontab -l -u Username 顯示Username用戶的任務列表
# crontab -e 編輯本用戶的crontab任務
# setfacl -m [u|g]:Username:Permis Filename 添加FACL 功能
# setfacl -x [u|g]:Username:Permis Filename 取消FACL 功能
Linux學習命令匯總九——任務計劃調度atd,crond及文件訪問控制列表