本章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 功能