成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

8、周期性任務、find、break和continue學習筆記

find [options] [查找路徑] [查找條件] [處理動作]

目前創(chuàng)新互聯(lián)建站已為上千余家的企業(yè)提供了網(wǎng)站建設、域名、虛擬主機、網(wǎng)站改版維護、企業(yè)網(wǎng)站設計、興隆臺網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

查找路徑:默認為當前目錄

查找條件:默認為查找指定路徑下的所有文件

處理動作:默認為顯示

查找條件:

-name "文件名稱" 支持使用globbing正則表達式

-iname "文件名稱" 查找時不區(qū)分字符大小寫

-user UserName 根據(jù)屬主查找

-group GroupName 根據(jù)屬組查找

-uid UID 根據(jù)uid查找

-gid GID 根據(jù)gid查找

-nouser 查找沒有屬主的文件

-nogroup 查找沒有屬組的文件

組合條件:

-a 與,同時滿足

-o 或,滿足其一

-not, ! 非,取反

-type: 根據(jù)文件類型查找

f: 普通文件

d: 目錄

b: 塊設備

c: 字符設備

l: 符號鏈接文件

p: 命名管道

s: 套接字

-size: 根據(jù)文件大小查找(常用單位:k, M, G)

-#M 查找所有文件大小小于#M的文件

+#M 查找所有文件大小大于#M的文件

#M 查找所有文件大小等于#M的文件

根據(jù)時間戳查找:

以天為單位(time):

-atime

-mtime

-ctime

+# 查找(#+1)天之外被訪問過的文件

-# 查找#天之內被訪問過的文件

  查找短于(#+1)> x >=#天的時間段被訪問過

以分鐘為單位(min):

-amin

-mmin

-cmin

+# 查找(#+1)分之外被訪問過的文件

-# 查找#天之分被訪問過的文件

  查找短于(#+1)> x >=#分的時間段被訪問過

根據(jù)權限查找:

-perm [+|-]MODE

MODE         精確匹配

+MODE         任何一類用戶的任何一位權限匹配;常用于查找某類用戶的某特定權限是否存在;

-MODE          每類用戶的指定要檢查的權限位都匹配;

文件權限:644

-perm 600否,因為不匹配644

-perm +222是,因為任何一位有2權限

-perm +002      否,因為任何一位的權限都不匹配

-perm -444是,因為每位的4權限都匹配

練習:

1、查找/var/目錄屬主為root且屬組為mail的所有文件;

# find /var/ -user root -a -group mail

2、查找/usr目錄下不屬于root、bin或hadoop的所用文件;

# find /usr/ -not -user root -a -not -user bin -a -not -user hadoop

# find /usr/ -not \( -user root -o -user bin -o -user hadoop \)

3、查找/etc/目錄下最近一周內其內容修改過的,且不屬于root或hadoop的文件;

# find /etc/ -mtime -7 -a -not -user root -a -not -user hadoop

# find /etc/ -mtime -7 -a -not \( -user root -o -user hadoop \)

4、查找當前系統(tǒng)上沒有屬主或屬組,且最近1個月內曾被訪問過的文件;

# find / \( -nouser -o -nogroup \) -a -atime -30

5、查找/etc/目錄下大于1M且類型為普通文件的所有文件;

# find /etc/ -size +1M -a -type f

6、查找/etc/目錄所有用戶都沒有寫權限的文件;

# find /etc/ -not -perm +222

所有都沒有:相反:任何一個有

所有都有:相反:至少有一個沒有

7、查找/etc/目錄下至少有一類用戶沒有寫權限;

# find /etc/ -not -perm -222

8、查找/etc/init.d/目錄下,所有用戶都有執(zhí)行權限且其它用戶有寫權限的文件;

# find /etc/init.d/  -perm -113 

處理動作:

-print 默認打印在標準輸出上

-ls 以長格式輸出各文件信息

-exec COMMAND {} \; 對查找到的文件執(zhí)行指定的命令

-ok COMMAND {} \;交互式的-exec;

| xargs COMMAND

find補充材料(摘自互聯(lián)網(wǎng)):

find與xargs

在使用find命令的-exec選項處理匹配到的文件時, find命令將所有匹配到的文件一起傳遞給exec執(zhí)行。但有些系統(tǒng)對能夠傳遞給exec的命令長度有限制,這樣在find命令運行幾分鐘之后,就會出現(xiàn) 溢出錯誤。

錯誤信息通常是“參數(shù)列太長”或“參數(shù)列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。

find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,并如此繼續(xù)下去。

在有些系統(tǒng)中,使用-exec選項會為處理每一個匹配到的文件而發(fā)起一個相應的進程,并非將匹配到的文件全部作為參數(shù)一次執(zhí)行;這樣在有些情況下就會出現(xiàn)進程過多,系統(tǒng)性能下降的問題,因而效率不高;

而使用xargs命令則只有一個進程。另外,在使用xargs命令時,究竟是一次獲取所有的參數(shù),還是分批取得參數(shù),以及每一次獲取參數(shù)的數(shù)目都會根據(jù)該命令的選項及系統(tǒng)內核中相應的可調參數(shù)來確定。

文件的特殊權限:

可執(zhí)行文件:suid

任何用戶執(zhí)行此可執(zhí)行文件時,不再以用戶自己的身份當作進程的屬主,而是以文件的屬主當作進程的屬主

suid表現(xiàn)為文件屬主執(zhí)行權限位上的s或S,有執(zhí)行權限的為s而沒有執(zhí)行權限的為S

如何設定suid權限:

chmod u+s FILE

目錄文件:sgid

具有sgid的目錄,用戶在此目錄下創(chuàng)建文件時,新建文件的屬組不再是用戶所屬的基本組,而是目錄的屬組

sgid表現(xiàn)為文件屬組執(zhí)行權限位上的s或S,有執(zhí)行權限的為s而沒有執(zhí)行權限的為S

如何設定sgid權限:

chmod g+s FILE ...

粘滯位:sticky

對于公共可寫的目錄,用戶可創(chuàng)建文件,可以刪除自己的文件,但無法刪除別的用戶的文件

sticky表示為文件其它用戶執(zhí)行權限位上的t或T,,有執(zhí)行權限的為t而沒有執(zhí)行權限的為T

如何設定sticky權限:

chmod o+t FILE ...

練習:

1、復制cat命令至/tmp目錄,普通用戶使用/tmp/cat命令能查看root用戶有權限查看的所有文件

cp `which cat` /tmp/

cp /etc/shadow /tmp/

chmod u+s cat

 2、新建/tmp/test目錄:

 要求openstack和docker用戶對其有寫權限,且在目錄創(chuàng)建的文件的屬組都為cloud組

 要求每個用戶不能刪除別人的文件,但可以編輯

 mkdir /tmp/test

 groupadd cloud

 useradd -G cloud openstack

 useradd -G cloud docker

 chmod g+w /tmp/test/

 chown :cloud /tmp/test

 chmod g+s test/

 

 

Linux任務計劃:

一次性任務執(zhí)行:at

周期性任務執(zhí)行:crontab

一次性任務執(zhí)行:

at: 

交互式:讓用戶在at>提示符輸入多個要執(zhí)行命令;

at TIME

at>

Ctrl+d:提交任務;

批處理:將任務的各命令寫入文件由at進行調用;

at -f /path/to/at_job_file TIME

at作業(yè)有隊列:使用單個字母表示

查看作業(yè):at -l = atq

刪除一個尚未執(zhí)行的作業(yè):

at -d job_num

atrm job_num

任務計劃的執(zhí)行結果會通過郵件的方式發(fā)送給任務提交者;

mail命令:

交互模式接收郵件;

交互模式發(fā)送郵件:

-s "Subject"

< /path/to/somefile

周期性任務計劃:cron

crond: 守護進程

服務進程: 阻塞,輪詢

系統(tǒng)cron:

文件:/etc/crontab

用戶cron:

/var/spool/cron/UserName

/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、每個時間位都應該使用其可用的有效取值范圍內的值;

2、某時間位上的*表示對應位的所有有效取值;

3、-: 連續(xù)的時間相鄰點取值;

4、,: 離散的時間點取值;

5、/#:表示在指定時間范圍內每隔#一次;

注意:通過輸出重定向而拒收郵件:

將執(zhí)行結果重定向到/dev/null

&> /dev/null

將郵件發(fā)給空用戶

MAILTO=""

用戶cron:

使用crontab命令來實現(xiàn)

-l: 查看自己的cron任務列表;

-e: 通過EDITOR變量中定義的編輯器打開用戶自己的cron配置文件;

編輯單獨的任務都使用-e選項,無論是刪除、修改還是新建;

-r: 移除crontab文件

如果是管理員:

-u UserName:為別的用戶配置crontab作業(yè);

# crontab -e -u docker

提醒:如果在crontab的用戶命令中使用%,得轉義為\%

5 3 * * * /bin/touch ~/testfile_`date +\%Y-\%m-\%d`.txt

在使用單引號后,%也可以不用轉義

5 3 * * * /bin/touch ~/testfile_`date +'%Y-%m-%d'`.txt

練習:

1、每3分鐘執(zhí)行一個“echo "how are you?";

2、每周2、4、6備份/etc/目錄至/backup目錄中,備份的文件名以當etc_開頭并跟上當日的日期作為文件名;

3、每天6、9、12、15、18查看一下當前系統(tǒng)掛載的所有文件系統(tǒng),并將查看的結果追加至/tmp/mounts.txt文件中;

4、每天每兩小時取當前系統(tǒng)內存空間余量,將其保存至/stats/memory.txt文件中;

crontab文件的格式:

空白行會被忽略

# 開頭的行是注釋;

1、*/3 * * * * /bin/echo "how are you?"

2、3 2 * * 2,4,6 /bin/tar -Jcf /backup/etc_`date '+%F'`.tar.xz /etc/* 

3、17 6,9,12,15,18 * * * /bin/mount >> /tmp/mounts.txt

4、34 */2 * * * /bin/grep "^MemFree:" /proc/meminfo  >> /stats/memory.txt

如何實現(xiàn)秒級別的任務:

* * * * * for i in {0..4}; do /bin/echo "how are you?"; sleep 10; done 

 

facl: 文件訪問控制列表

facl: 附加原有權限模型之上另一層權限控制機制,保存至文件擴展屬性信息中;

getfacl FILE 獲取文件的權限信息

setfacl {-x|-m} 權限 FILE 設置文件的權限

-m: 設定權限

-m u:UserName:Perms

-m g:GroupName:Perms

-m m::Perms

-x: 取消權限

-x u:UserName

-x g:GroupName

-x m:

-R: 遞歸

bash編程之循環(huán)控制:

for varName in LIST; do

循環(huán)體

done

while CONDITION; do

循環(huán)體

done

until CONDITION; do

循環(huán)體

done

循環(huán)控制:

continue: 提前結束本次循環(huán)而開始評估下一輪;

break [n]: 跳出當前循環(huán)

練習:提示用戶輸入用戶名,顯示用戶的ID號;直到用戶輸入quit退出;

#!/bin/bash

#

if [ $UID -ne 0 ]; then

echo "`basename $0` must be running as root"

exit 1

fi

while true; do

read -p "Enter a user name: " userName

if [ "$userName" == 'quit' ]; then

break

fi

id -u $userName

done

練習:寫一個腳本

1、提示用戶輸入一個目錄路徑;

2、顯示目錄下至少包含一個大寫字母的文件名;

#!/bin/bash

#

while true; do

        read -p "Enter a directory: " dirName

        [ "$dirName" == 'quit' ] && exit 3

        [ -d "$dirName" ] && break || echo "Wrong directory..."

done

for fileName in $dirName/*; do

        if [[ "$fileName" =~ .*[[:upper:]]{1,}.* ]]; then

                echo "$fileName"

        fi

done

當前文章:8、周期性任務、find、break和continue學習筆記
地址分享:http://jinyejixie.com/article12/poedgc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、企業(yè)建站、自適應網(wǎng)站、微信公眾號、網(wǎng)站策劃定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司
博客| 保山市| 青龙| 格尔木市| 遂宁市| 西乌| 西乌| 通化县| 宁远县| 拉孜县| 九龙城区| 新民市| 双城市| 广河县| 诸暨市| 太仓市| 和龙市| 武城县| 阆中市| 恩施市| 依安县| 太仓市| 墨竹工卡县| 抚顺县| 临高县| 普陀区| 奎屯市| 新野县| 巨鹿县| 廉江市| 客服| 平潭县| 行唐县| 五莲县| 化隆| 丹阳市| 封开县| 大渡口区| 平顺县| 盐城市| 泰宁县|