跟高手學習LINUX筆記-11

第11節重定向和文件的查找
11.1文件描述符 0、1、2
先來幾句在linux圈內的名言
1、執行命令後沒有信息提示最好的提示
2、在linux系統中一切皆文件
3、搞linux運維的一定要會看懂日誌與報錯信息,哪怕它是英文的
11.1 文件描述符定義
文件描述符:也就是系統內核爲了高效管理系統中的文件,給每個打開的文件分配一個非負整數,便於管理
常用的文件描述符:
0-->標準輸入,默認是鍵盤、鼠標
1-->標準輸出,默認是顯示器
2-->錯誤輸出,默認是顯示器
單個進程最多可以打開多少個文件是有限制的,可以這樣處理:
例1:
[root@node-1 ~]# ulimit -n
1024
[root@node-1 ~]#ulimit -n 20480 #臨時修改一個進程最多可以同時打開的文件數爲20480
[root@node-1 ~]# vim limits.conf 和 nproc.conf
#可以通過修改這兩個文件後重啓生效
11.2重定向的含義-管道的使用-tee命令
11.2.1 輸出重定向
定義:將命令的輸出結果本來顯示在顯示器,現重新定向保存到指定的文件裏
重定向輸出使用”>” “>>” 操作符號
語法:
> 文件名 #表示將標準輸出的內容,寫到後面的文件中,如果此文件名已經存在,將會覆蓋原文件中的內容
>> 文件名 #表示將標準輸出的內容,追加到後面的文件中。若重定向的輸出的文件不存在,則會新建該文件
此項內容在RHCSA中涉及,比較重要
例1:查看當前主機的內存信息保存到meminfo.txt中
[root@node-1 ~]# cat /proc/cpuinfo > cpu.txt
例2:將內核的版本信息追加到cpu.txt
[root@node-1 ~]# uname -r >> meminfo.txt
[root@node-1 ~]# cat meminfo.txt
total used free shared buff/cache available
Mem: 1.8G 85M 1.6G 9.4M 98M 1.6G
Swap: 2.0G 0B 2.0G
3.10.0-1062.12.1.el7.x86_64
例3:清空文件meminfo.txt內容
[root@node-1 ~]# > meminfo.txt
曾經遇到接手一位客戶的技術管理過的機器,這位技術神人走之前不光運行了history -c 還 > .bash_history
11.2.2 輸入重定向
輸入的內容方式不再從鍵盤上輸入了,舉三個有用的例子
例4:
[root@node-1 ~]# grep Mem meminfo.txt
Mem: 1.8G 85M 1.6G 9.4M
98M 1.6G
例5:往mysql指定數據庫中導入數據
[root@node-1 ~]#mysql -u root -p123456 hellodb < hellodb.sql
例6:以<<EOF開始,以EOF結尾的特殊符號之間是輸入內容 。
[root@node-1 ~]# [root@node-1 ~]# cat > aa.txt << EOF

123
321
456
654
EOF
[root@node-1 ~]# cat aa.txt
123
321
456
654
實際上成對的EOF可以用其他符號代替,但必須成對出現
11.2.3 錯誤重定向
作用:錯誤信息不再只顯示在顯示器上而是保存到特定文件中
操作符:
錯誤重定向:2>
標準輸入: 1<
標準輸出: 0>
例7:錯誤重定向的用法
[root@node-1 ~]# ls /etc/passwd 111 > error.txt
ls: cannot access 111: No such file or directory
只顯示在顯示器上
[root@node-1 ~]# cat error.txt
/etc/passwd
將錯誤重定向在指定的文件中
[root@node-1 ~]# ls /etc/passwd 111 2> error.txt
/etc/passwd
[root@node-1 ~]# cat error.txt
ls: cannot access 111: No such file or directory

11.2.4/dev/null與/dev/zero的作用
/dev/null:寫入此文件的內容會永久消失
/dev/zero:會提供無限的空字符,在擴展swap時可以用到
例8:
[root@node-1 ~]# crontab -l
/3 * /sbin/ntpdate -u times.aliyun.com &> /dev/null
[root@node-1 ~]# dd if=/dev/zero of=allswap bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 2.73801 s, 196 MB/s
[root@node-1 ~]# mkswap allswap && swapon -a
[root@node-1 ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 85M 1.1G 9.3M 624M 1.5G
Swap: 2.5G 0B 2.5G
11.2.5 管道 | 的使用
語法:command-a | command-b | command-c | ......
注意:
1、管道命令只處理前一個命令正確輸出,不處理錯誤輸出
2、管道右邊的命令,必須能夠接收標準輸入的數據流命令才行
3、管道符可以把兩條命令連起來,它可以鏈接多個命令使用
4、前一個命令的輸出是作爲後面命令的輸入來用的
例9:
[root@node-1 ~]# yum list |grep jdk
copy-jdk-configs.noarch 3.3-10.el7_5 base
java-1.6.0-openjdk.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base
java-1.6.0-openjdk-demo.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base
......
11.2.6 tee命令的用法
功能:讀取標準輸入的數據,並將其內容輸出成文件。
語法:tee [-a][文件...]
參數:
默認是覆蓋指定文件的內容
-a, --append 內容追加到給定的文件而非覆蓋
例10:
[root@node-1 ~]# df -hT | tee -a meminfo.txt
[root@node-1 ~]# cat meminfo.txt
total used free shared buff/cache available
Mem: 1.8G 85M 1.6G 9.4M 98M 1.6G
Swap: 2.0G 0B 2.0G
3.10.0-1062.12.1.el7.x86_64
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 899M 0 899M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.4M 901M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 18G 2.3G 16G 13% /
/dev/sda1 xfs 497M 141M 357M 29% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0

11.3 which-whereis-locate-grep-find查找命令
11.3.1 which-whereis-locate-grep find命令使用
查找文件一般有以下幾個命令:
which 查看可執行文件的位置(三星重要)
grep 過濾匹配或正則表達式;一個文件搜索工具(五星重要)
find 根據不同的條件查找相關文件(五星重要)
在實際工作中常用到which grep/egrep find
1)which 用法
which 命令:查找此命令在系統中的位置
[root@node-1 ~]# which ntpdate
/usr/sbin/ntpdate
2)grep查找使用
作用:過濾或使用正則表達式來搜索文本;把結果顯示出來
主要參數:
-v 取反
-i 忽略大小寫
^# 以#開頭
#$ 以#結尾
^$ 空行
-n 對過濾的內容加上行號
| 或者的意思
例11:
[root@node-1 ~]# ps -aux | grep sshd | grep -v grep
root 894 0.0 0.2 112920 4328 ? Ss 19:30 0:00 /usr/sbin/sshd -D
root 1009 0.0 0.3 157336 6004 ? Ss 19:35 0:00 sshd: root@pts/0
[root@node-1 ~]# grep nologin$ /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
.....
ntp:x:38:38::/etc/ntp:/sbin/nologin

[root@node-1 ~]#grep -v ^# /etc/ssh/sshd_config
這樣還會有空白行存在

[root@node-1 ~]#egrep -v "^#|^$" /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
......
Subsystem sftp /usr/libexec/openssh/sftp-server

[root@node-1 ~]#grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

3)find命令使用(必會,參數比較多)
格式:find pathname -options [-print]
命令字 路徑名稱 選項 輸出
參數:
pathname:所查找的目錄路徑,不輸入代表當前目錄例如用 .. 來表示上層目錄,用 / 來表示根目錄。可以是絕對路徑也可以是相對路徑
find命令選項:
-name  按照文件名查找文件--“名字”
-perm  按照文件權限來查找文件。666 777 等
-user  按照文件屬主來查找文件--“用戶名”
-group  按照文件所屬的組來查找文件--“組名稱”
-mtime -n / +n  按照文件的更改時間來查找文件,

  • n 表示文件更改時間距現在n天以內
  • n 表示文件更改時間距現在n天以前
    -type  查找某一類型的文件
    b - 塊設備文件
    d - 目錄
    c - 字符設備文件
    p - 管道文件
    l- 符號鏈接文件
    f - 普通文件
    -size n 查找符合指定的文件大小的文件;+n表示大於此數值,-n表示大於此數值;後面可以帶單位:+20K
    -exec 對匹配的文件執行該參數所給出的其他linux命令, 相應命令的形式爲' 命令 {} \;,注意{ }和 \;之間的空格,{}代表查到的內容
    -a and 與運算;條件同時成立纔能有進一步操作
    -o or 或運算;條件成立其中一個就可以有進一步操作
    ! not 非運算;條件不成立纔能有進一步操作
    例12:
    [root@node-1 ~]#find /etc -name *.conf
    /etc/resolv.conf
    /etc/pki/ca-trust/ca-legacy.conf
    /etc/yum/pluginconf.d/fastestmirror.conf
    ......
    [root@node-1 ~]#find / -user wangtao -exec cp -a {} /root/findresults/ \;
    #參數: -a #複製時,保留原來文件的所有屬性
    [root@node-1 ~]#last -f /var/log/wtmp | awk '{print $3}' | sort | uniq -c
    3 192.168.101.116
    1 192.168.101.18
    6 192.168.26.1
    21 boot
    12 Sat
    2 Thu
    1 Tue
    作用:查詢曾經登錄過此機器的IP及次數
    11.4 命令判斷
    11.4.1 用到的三個特殊符號: ; && ||
    前面已經講過此三個符號的用法,在此說明一下
    ; 命令按從左到右的順序執行,不考慮失敗與否
    && 前一個命令執行成功纔會執行後一個命令
    最常用的是源碼安裝軟件的時候:make && make install
    || 前一個命令執行失敗纔會執行後一個命令

【這幾天作爲黨員參加了社區安全防疫工作中了,更新確實有些慢,實在對不住】

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