Linux CentOS7 基礎:重定向和文件查找

目錄

1. 文件描述符

定義:

輸入輸出標準說明:

查看和進程相關的文件:

2. 重定向

輸出重定向:

輸入重定向:

錯誤重定向:

EOF:

null黑洞和zero空文件:

管道:

tee:

3. 文件查找

which:

whereis:

locate:

grep:

find:

4. 命令判斷

5. 計劃任務

at單次執行計劃任務:

cron週期性的計劃任務:


1. 文件描述符

定義:

是內核爲了高效管理已被打開的文件所創建的索引,用於指向被打開的文件,所有執行 I/O 操作的系統調用都通過文件描述符;文件描述符是一個簡單的非負整數,用以標明每一個被進程所打開的文件,程序剛剛啓動的時候,第一個打開的文件是 0,第二個是 1,依此類推。

輸入輸出標準說明:

STDIN:標準輸入,默認設備是鍵盤,文件編號爲0

STDOUT:標準輸出,默認設備是顯示器,文件編號爲1,可以重定向到文件

STDERR:標準錯誤,默認設備是顯示器,文件編號爲2,可以重定向到文件

查看和進程相關的文件:

查看一個進程打開的文件:ll /proc/進程ID/fd

查看和臨時設置一個進程最多打開多少個文件:ulimit -n,ulimit -n 2048


2. 重定向

輸出重定向:

定義:將命令的正確輸出結果保存到指定的文件中,而不是直接顯示在顯示器的屏幕上

語法:> 文件名 #表示將標準輸出的內容,寫到文件中;如果此文件已經存在,將會覆蓋原文件中的內容

           >> 文件名 #表示將標準輸出的內容,追加到文件中;如果此文件不存在,將會新建該文件

舉例:

           查看當前主機的CPU的類型並保存到cpu.txt文件中(不顯示在屏幕中):cat /proc/cpuinfo > cpu.txt

           將內核的版本信息追加到cpu.txt:uname -a >> cpu.txt

           清空一個文件:> cpu.txt

輸入重定向:

定義:不使用標準輸入端口輸入文件,而是使用指定的文件作爲標準輸入設備

語法:< 文件名 

錯誤重定向:

定義:將命令執行過程中出現的錯誤信息(選項或參數錯誤)保存到指定的文件,而不是直接顯示在顯示器的屏幕上

作用:將錯誤信息保存到文件中

舉例:

           將錯誤顯示的內容和正確顯示的內容分開:ls /etc/passwd xxx 2> a.txt

EOF:

用法介紹:“EOF”通常與“<<”結合使用,“<”作爲子命令或子shell的輸入,直到遇到“EOF”,再次返回到主調shell,可將其理解爲分界符(delimiter)。

舉例:

  

null黑洞和zero空文件:

把/dev/null看作“黑洞”,所有寫入它的內容都會永久丟失,從它那無法讀取到任何內容。

/dev/zero在類UNIX系統中是一個特殊的文件,它會提供無限的空字符(NULL,ASCII NUL,0x00)。典型的用法是用它來產生一個特定大小的空白文件。

舉例:

           使用DD命令產生一個50M的文件:dd if=/dev/zero of=b.txt bs=1M count=50

           查看一個文件的大小:du -sh b.txt

           正確的內容寫入一個文件,錯誤的信息寫入一個文件:ls /tmp xxx >1.txt 2>2.txt

           把正確消息和錯誤消息輸入到相同的位置:ls /tmp xxx &> 1.txt

管道:

注意:

           (1)管道命令只處理前一個命令的正確輸出;

           (2)管道右邊的命令,必須能夠接收標準輸入的數據流命令纔行;

           (3)管道符可以把兩條命令連起來,它可以鏈接多個命令使用。

舉例:ps -aux | grep sshd

tee:

功能:讀取標準輸入的數據,並將其內容輸出成文件

舉例:

           將磁盤使用的信息寫入文件:df -h|tee m.txt

           將磁盤使用的信息追加到文件:df -h|tee -a m.txt


3. 文件查找

which:

which useradd:查看可執行文件的位置

whereis:

whereis useradd:查看可執行文件的位置及相關文件

locate:

updatedb,locate root

grep:

語法:grep 關鍵字 文件

grep -v 關鍵字 文件:查詢不包括關鍵字的條目

grep -i 關鍵字 文件:查詢忽視大小寫

grep ^# 文件:查詢以#開頭的條目

grep #$ 文件:查詢以$結尾的條目

grep ^$ 文件:查詢空行

grep -n 關鍵字 文件:查詢並加行號

grep "nologin\|root" /etc/passwd:“或”查找

find:

格式:find pathname -options

find pathname -name:按照文件名查找文件

find pathname -perm:按照文件權限查找文件

find ./ -perm 755:查找文件權限爲755的文件

find pathname -user:按照文件屬主查找文件

find pathname -group:按照文件屬組查找文件

find pathname -mtime -n/+n:按照文件的更改時間查找文件,-n/+n表示文件更改時間距現在n天以內/以前

find pathname -size n:按照文件的大小來查找文件

find pathname -type:查找某一類型的文件,b 塊設備文件,d 目錄文件,c 字符設備文件,p 管道文件,l 符號鏈接文件,f 普通文件

find . -name "*.txt" -exec mv {} /opt \;:找到當前目錄下txt格式的目錄並移動到/opt

mtime 文件最後一次修改的時間,atime 文件最後一次訪問的時間,ctime 文件最後一次變化的時間(修改時間)

find /opt -size +20k -a -size -50k:-a 且,-o 或,+ 大於,- 小於

find /bin/ -maxdepth 1 -perm 755:查找/bin 目錄下權限等於 755 的可執行的文件


4. 命令判斷

; 不考慮左右命令的相關性 cd /xxx ; touch a.txt

&& 只有前面的命令執行成功,後面的命令纔會執行 cd /etc && touch a.txt

|| 如果前面的命令執行成功,後面的命令就不去執行了;或者如果前面的執行不成功,纔會去執行後面的命令 ls /etc/passwd || cd /etc


5. 計劃任務

at單次執行計劃任務:

       (1)啓動atd服務:systemctl status atd,systemctl restart atd,systemctl enable atd

       (2)at 時間:at 20:20,at 20:20 2020-1-1,at now +10min

       (3)輸入要執行的命令:mkdir /root/th

       (4)結束:ctrl d

       (5)查看計劃任務:at -l

       (6)刪除計劃任務:atm 計劃任務的編號

cron週期性的計劃任務:

       主文件(說明文件):/etc/crontab

       systemctl status crond:查看crond服務的狀態

       systemctl restart crond:重啓crond服務

       systemctl enable crond:開機自動啓動crond服務

       crontab -e:創建一個計劃任務

       1 1 9 * * /root/backup.sh:分 時 日 月 周 執行一個備份腳本,命令最好用絕對路徑

       crontab -l:查看計劃任務

       crontab -r:刪除計劃任務

       0 0 1,2,3 * * /root/backup.sh:每月的1、2、3日凌晨0點0分執行一個備份腳本

       0 0 1-10 * * /root/backup.sh:每月的1至10日凌晨0點0分執行一個備份腳本

       */5 * * * * /root/backup.sh:每5分鐘執行一個備份腳本

       /var/spool/cron/root:計劃任務文件的位置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章