Linux學習命令彙總九——atd,crontab任務計劃調度及facl文件訪問控制列表

本章Blog相關Linux知識點linux


linux 任務計劃:docker

    一次性任務計劃命令: at ,batch ,依賴進程atd
bash

    週期性任務計劃命令:crontab ,anacron ,依賴進程crond
app

mail命令,並使用Ctrl+D鍵 提交郵件
dom

# mail  查看郵件,並使用號碼選擇要查看的郵件,使用quit退出
編輯器

# mail root   向root用戶發送郵件ide

# mail -s 「How are」root 
oop

# mail -s 「Ceshi」 root <  /etc/passwd   指定/etc/passwd 文件做爲發送root用戶的郵件內容post

facl(文件訪問控制列表):Linux(和其餘Unix等POSIX兼容的操做系統)有一種被稱爲訪問控制列表(ACL)的權限控制方法,它是一種權限分配以外的廣泛範式。例 如,默認狀況下你須要確認3個權限組:owner、group和other。而使用ACL,利用文件擴展屬性保存額外的訪問控制權限,你能夠增長權限或其餘用戶或組別。能夠容許指定的用戶A、B、C擁有寫權限而再也不是讓他們整個組擁有寫權限ui


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 root@study.localdomain  Tue May  8 09:42:50 2018
Return-Path: <root@study.localdomain>
X-Original-To: root
Delivered-To: root@study.localdomain
Date: Tue, 08 May 2018 09:42:50 +0800
To: root@study.localdomain
Subject: ces
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: root@study.localdomain (root)
Status: R

how are

& 2
Message  2:
From root@study.localdomain  Tue May  8 09:43:05 2018
Return-Path: <root@study.localdomain>
X-Original-To: root
Delivered-To: root@study.localdomain
Date: Tue, 08 May 2018 09:43:05 +0800
To: root@study.localdomain
Subject: ces 
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: root@study.localdomain (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 重啓服務

時間表示法:

    一、每一個時間位都應該使用其可用的有效範圍的值

    二、某時間位上的*表示對應位的全部的有效取值

    三、 - 表示連續的時間點取值 ,如 30-35

    四、  , 表示離散的時間點取值 ,如 3 ,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:

# 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 功能

相關文章
相關標籤/搜索