做pc端網(wǎng)站要成本么廣告推廣軟件
管道與重定向
一、重定向
將原輸出結(jié)果存儲(chǔ)到其他位置的過程
標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)正確輸出、標(biāo)準(zhǔn)錯(cuò)誤輸出
?
進(jìn)程在運(yùn)行的過程中根據(jù)需要會(huì)打開多個(gè)文件,每打開一個(gè)文件會(huì)有一個(gè)數(shù)字標(biāo)識(shí)。這個(gè)標(biāo)識(shí)叫文件描述符。 進(jìn)程使用文件描述符來管理打開的文件(FD----file descriptors). 文件描述符:每打開一個(gè)程序都會(huì)有文件描述
0,標(biāo)準(zhǔn)輸入(鍵盤)
1,標(biāo)準(zhǔn)輸出(默認(rèn))
2,標(biāo)準(zhǔn)錯(cuò)誤
3+,進(jìn)程在執(zhí)行過程中打開的其他文件 ?
&:表示正確錯(cuò)誤混合輸出
二、輸出重定向 (覆蓋,追加)
> ? ----覆蓋:直接把內(nèi)容生成到指定文件,會(huì)覆蓋源文件中的內(nèi)容。 >> ?----追加:尾部追加,不會(huì)覆蓋掉文件中原有的內(nèi)容,相當(dāng)于append 正確輸出: 1> 1>> 等價(jià)于 > >> 錯(cuò)誤輸出: 2> 2>>
2.1. 案例1:輸出重定向(覆蓋)
[root@linux-server ~]# date 1> date.txt #正確輸出--覆蓋 # 注意:如果 > 前面什么都不加默認(rèn)為1,標(biāo)準(zhǔn)正確輸出。
2.2.案例2:輸出重定向(追加)
[root@linux-server ~]# date >> date.txt #正確輸出--追加
2.3. 案例3:錯(cuò)誤輸出重定向
[root@linux-server ~]# ls /home/ /aaaaaaaaa >list.txt
ls: cannot access /aaaaaaaaa: No such file or directory
[root@linux-server ~]# ls /home/ /aaaaaaaaa >list.txt 2>error.txt #重定向到不同的位置
[root@linux-server ~]# cat error.txt
ls: cannot access /aaaaaaaaa: No such file or directory
2.4.正確和錯(cuò)誤都輸入到相同位置
[root@linux-server ~]# ls /home/ /aaaaaaaaa &>list.txt #混合輸出到相同文件
2.5.重定向到空設(shè)備/dev/null
[root@linux-server ~]# ls /home/ /aaaaaaaaa >list.txt 2>/dev/null #空設(shè)備,將錯(cuò)誤的輸出丟掉 [root@linux-server ~]# ls /home/ /aaaaaaaaa &>/dev/null #空設(shè)備,將正確與錯(cuò)誤的輸出丟掉
echo 會(huì)將輸入的內(nèi)容送往標(biāo)準(zhǔn)輸出(打印) echo 內(nèi)容 >> 文件名或腳本 (使用重定向的方式創(chuàng)建文件或腳本)
2.6.腳本中使用重定向
實(shí)戰(zhàn)一(沒有使用重定向)
[root@linux-server ~]# vim ping1.sh #!/bin/bash ping -c1 10.18.40.100 if [ $? -eq 0 ];then ? ? # $?判斷上一條命令的執(zhí)行返回值,0為真,非0為執(zhí)行失敗echo "10.18.40.100 is up." elseecho "10.18.40.100 is down!" fi [root@linux-server ~]# chmod +x ping1.sh [root@linux-server ~]# ./ping1.sh #執(zhí)行文件(執(zhí)行腳本) PING 10.18.40.100 (10.18.40.100) 56(84) bytes of data. ? --- 10.18.40.100 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms ? 10.18.40.100 is down!
實(shí)戰(zhàn)二(使用重定向)
[root@linux-server ~]# vim ping1.sh #!/bin/bash ping -c1 10.18.40.100 &>/dev/null if [ $? -eq 0 ];thenecho "10.18.40.100 is up." >>up.txt elseecho "10.18.40.100 is down!" fi [root@linux-server ~]# ./ping1.sh
實(shí)戰(zhàn)三
[root@linux-server ~]# vim ping.sh #!/bin/bash ip=10.31.160 for i in {10..20} ? #變量i取值 do ping -c1 $ip$i &> /dev/null if [ $? -ne 0];then ? ? ? # -ne不等于echo "network is not ok"; elseecho "$ip.$i" >> /mnt/up.txt fi dine [root@linux-server ~]# bash ping.sh [root@linux-server ~]# cat /mnt/up.txt
三、輸入重定向 <
標(biāo)準(zhǔn)輸入: < ? 等價(jià) 0<
通過輸入重定向創(chuàng)建文件
(cat > file <<EOF )是用來創(chuàng)建文件或者在腳本中使用,并向文件中輸入信息輸入的任何東西會(huì)被寫入文件中,EOF命令結(jié)束。
?語法:cat > filename <<EOF ?#可以寫到腳本或者文件里面 EOF:開始和結(jié)束的標(biāo)記。命令不是固定的,可以是任意字符,但結(jié)尾字符必須與開始字符一致,成對使用; 結(jié)尾字符必須頂格寫。如果不是在腳本中,可以用Ctrl-D輸出EOF的標(biāo)識(shí); 在腳本輸入多行文本內(nèi)容時(shí),<<-EOF可以去除結(jié)尾分界符EOF所在行開頭部分的制表符,忽略所有的前導(dǎo)制表符(tab)字符。
實(shí)戰(zhàn)案例一:
[root@linux-server ~]# cat >file4 <<EOF > 111 > 222 > 333 > 444 > EOF [root@linux-server ~]# cat file4 111 222 333 444
實(shí)戰(zhàn)案例二
利用重定向建立多行的文件 腳本創(chuàng)建多行文件
[root@linux-server ~]# vim create_file.sh #!/bin/bash cat >file200.txt <<EOF 111 222 333 yyy ccc EOF [root@linux-server ~]# chmod +x create_file.sh [root@linux-server ~]# ./create_file.sh [root@linux-server ~]# cat file200.txt 111 222 333 yyy ccc
四、管道 |
進(jìn)程間通信的一種方式
用法:command1 | command2 |command3 |...
實(shí)戰(zhàn)案例一
[root@linux-server ~]# rpm -qa | grep 'httpd'#查詢所有安裝的軟件包,過濾包含httpd包 httpd-tools-2.4.6-90.el7.centos.x86_64 httpd-2.4.6-90.el7.centos.x86_64 ? [root@linux-server ~]# ps aux | grep 'sshd'
實(shí)戰(zhàn)案例二
將/etc/passwd中的用戶按UID大小排序
[root@linux-server ~]# sort -t":" -k3 -n /etc/passwd #以: 分隔,將第三列按字?jǐn)?shù)升序 [root@linux-server ~]# sort -t":" -k3 -n /etc/passwd -r #以: 分隔,將第三列按字?jǐn)?shù)降序 [root@linux-server ~]# sort -t":" -k3 -n /etc/passwd |head #以: 分隔,將第三列按字?jǐn)?shù)升序看前十行 [root@linux-server ~]# sort -t":" -k3 -n /etc/passwd |tail #以: 分隔,將第三列按字?jǐn)?shù)升序看后十行 參數(shù)詳解: sort 排序,默認(rèn)升序 -t 指定分隔符 -k 指定列 -n 按數(shù)值 -r 降序 uniq -c 去重 head 默認(rèn)輸出前十行 tail 默認(rèn)輸出后十行
實(shí)戰(zhàn)案例三
[root@linux-server ~]# netstat -lntp | awk 'NR==3 {print $4}' | awk -F':' '{print $2}'# awk截取 NR指定截取的行 print打印 $指定截取的列, -F指定截取的分隔符 22
五、參數(shù)傳遞:xargs
對:ls cp rm 管道不能執(zhí)行。所以通過xargs。
語法:
cat a.txt | xargs ?-i cp {} /目錄 ?{}:前面?zhèn)鬟^來的內(nèi)容-i :為了讓大括號(hào)生效目錄 ?-r解釋:前面?zhèn)鬟^來的東西交給大括號(hào){}cat file.txt |xargs ls -l ? ? ? ? ?前面是目錄或者目錄的路徑。 ?ls - l 后面可以不加大括號(hào),直接執(zhí)行。
實(shí)戰(zhàn)案例一
[root@linux-server ~]# touch /home/file{1..5} [root@linux-server ~]# vim files.txt /home/file1 /home/file2 /home/file3 /home/file4 /home/file5 [root@linux-server ~]# cat files.txt |ls -l #不加xargs傳參,看輸出結(jié)果 [root@linux-server ~]# cat files.txt |rm -rvf #不加xargs傳參,看輸出結(jié)果[root@linux-server ~]# cat files.txt |xargs ls -l -rw-r--rwx. 1 root root 12 Nov ?7 21:57 /home/file1 -rw-r--r--. 1 root root ?0 Nov ?7 21:57 /home/file2 -rw-r--r--. 1 root root ?0 Nov ?7 21:57 /home/file3 -rw-r--r--. 1 root root ?0 Nov ?7 21:57 /home/file4 -rw-r--r--. 1 root root ?0 Nov ?7 21:57 /home/file5[root@linux-server ~]# cat files.txt | xargs rm -rvf removed ‘/home/file1’ removed ‘/home/file2’ removed ‘/home/file3’ removed ‘/home/file4’ removed ‘/home/file5’
實(shí)戰(zhàn)案例二
[root@linux-server ~]# touch /home/file{1..5} [root@linux-server ~]# # cat files.txt | xargs -i cp -rvf {} /tmp/ ‘/home/file1’ -> ‘/tmp/file1’ ‘/home/file2’ -> ‘/tmp/file2’ ‘/home/file3’ -> ‘/tmp/file3’ ‘/home/file4’ -> ‘/tmp/file4’ ‘/home/file5’ -> ‘/tmp/file5’
常用小命令
du:查看文件大小
wc:(word count)計(jì)算文件的行數(shù)、字?jǐn)?shù)和字節(jié)數(shù)
[root@linux-server ~]# du -h /etc/ ? #查看目錄及目錄中的文件大小 [root@linux-server ~]# du -sh /etc/ #查看目錄的總大小 [root@linux-server ~]# ls /etc/ | wc -l #查看目錄中有多少個(gè)文件(一級(jí)目錄下的) [root@linux-server ~]# ls -R /etc/ | wc -l #-R遞歸目錄,可查看目錄下的所有文件
作業(yè)
1.cat /2.txt 將它的結(jié)果混合輸出到/opt/file.txt cat /2.txt &> /opt/file.txt 2.怎么判斷一個(gè)賬戶是否存在?? id user_name 3.將22覆蓋到a.txt文件中 echo 22 > a.txt 4.>與>>區(qū)別是什么 >(1)直接把內(nèi)容生成到指定文件,會(huì)覆蓋源文件中的內(nèi)容(2)直接生成一個(gè)空白文件,相當(dāng)于touch命令 >>尾部追加,不會(huì)覆蓋掉文件中原有的內(nèi)容 5.將cat /home/b.txt中將正確的輸出重定向到a.txt中將錯(cuò)誤的輸出重定向到c.txt cat /home/b.txt >a.txt 2>c.tst 6.請將vsftpd的進(jìn)程殺掉,他的IPD為11223? ? ?kill -9 11223 7.請描述一下kill與pkill的區(qū)別 kill 指定pid進(jìn)程號(hào) pkill 指定進(jìn)程名,可以刪除某個(gè)終端,或者某個(gè)用戶的進(jìn)程 8.請描述一下什么是nice值 進(jìn)程優(yōu)先級(jí),范圍是-20到+19,nice值越大意味著更低的優(yōu)先級(jí),低nice值會(huì)獲得更多的處理器時(shí)間。 nice值并不是優(yōu)先級(jí),但會(huì)影響優(yōu)先級(jí):PRI = PRI(old) + nice(PRI就是優(yōu)先級(jí)值,越小越先被調(diào)度) 9.如何刪除當(dāng)前目錄下以.log結(jié)尾的文件? ? rm -rf ./*.log 10.打印當(dāng)前工作目錄的Linux命令是? ? ? ? pwd 11.如何查看在后臺(tái)運(yùn)行的程序? ? ? ? ? ? jobs 12.如何將后臺(tái)運(yùn)行的程序調(diào)出之前臺(tái)運(yùn)行? ? fg 工作號(hào) 13.2>與&>是什么意思? 標(biāo)準(zhǔn)錯(cuò)誤的內(nèi)容輸出覆蓋到指定文件 正確和錯(cuò)誤混合輸出到指定文件 14.請用輸入重定向?qū)?23456寫入a.txt文件中。 echo 123456 > a.txt 15.動(dòng)態(tài)查看進(jìn)程的命令你知道哪幾個(gè)?top,htop,uptime
擴(kuò)展--閱讀
什么是CC攻擊?
攻擊者借助代理服務(wù)器生成指向受害主機(jī)的合法請求,實(shí)現(xiàn)DDOS和偽裝就叫:CC(ChallengeCollapsar)。 CC主要是用來攻擊頁面的。大家都有這樣的經(jīng)歷,就是在訪問論壇時(shí),如果這個(gè)論壇比較大,訪問的人比較多,打開頁面的速度會(huì)比較慢, 訪問的人越多,論壇的頁面越多,數(shù)據(jù)庫壓力就越大,被訪問的頻率也越高,占用的系統(tǒng)資源也就相當(dāng)可觀。
如何防御CC攻擊
1.開啟防火墻,過濾掉訪問次數(shù)多的IP地址 2.拒絕代理服務(wù)器訪問你服務(wù)器 怎么拒絕代理服務(wù)器訪問呢? 代理服務(wù)器有固定的IP地址,將這些IP地址都加到防火墻下,全部drop掉
CC攻擊危害是什么?
大量的流量不斷沖擊你的服務(wù)器,會(huì)讓你的服務(wù)器負(fù)載及壓力越來越大,直到服務(wù)器崩潰宕機(jī)
6.什么是DOS攻擊
DoS是Denial of Service的簡稱,即拒絕服務(wù),造成DoS的攻擊行為被稱為DoS攻擊,其目的是使計(jì)算機(jī)或網(wǎng)絡(luò)無法提供正常的服務(wù)。最常見的DoS攻擊有計(jì)算機(jī)網(wǎng)絡(luò)帶寬攻擊和連通性攻擊。
云計(jì)算基礎(chǔ) 練習(xí)試題I
第一題:如何查看你的服務(wù)器IP地址?
ip a ifconfig
第二題:你所使用的linux是哪個(gè)版本?請描述一下你所知道的其他發(fā)行版?
Centos7 Debian, RHEL, Ubuntu, openSUSE
第三題:請簡述一下什么是絕對路徑什么是相對路徑?
絕對路徑以/開頭的路徑,相對路徑是從非/開始的路徑,從當(dāng)前目錄開始
第四題:請給jack用戶設(shè)置密碼,密碼為123456
useradd jack && passwd jack 123456
第五題:請創(chuàng)建用戶tom,登錄shell為/sbin/nologin,并指定uid為1200
useradd -u 1200 -s /sbin/nologin tom
第六題:請描述下面目錄的作用
/root:root用戶的家目錄 /home:普通用戶的家目錄 /usr/local:安裝軟件的目錄 /etc:存放配置文件 /bin:普通用戶使用的命令文件 /sbin:管理員使用的命令文件
第七題:如何查看系統(tǒng)中alice用戶是否存在?
id alice
第八題:在權(quán)限設(shè)置中請說明下面內(nèi)容
r是什么? 對應(yīng)數(shù)字是幾?讀取 ?4 w是什么? 對應(yīng)數(shù)字是幾?寫入 ?2 x是什么? 對應(yīng)數(shù)字是幾?執(zhí)行 ?1
第九題:請回答下面的問題
root:x:0:0:root:/root:/bin/bash 分隔符是什么?冒號(hào) 第一列是什么?用戶 第二列是什么?密碼 第四列是什么?gid 第六列是什么?家目錄 第七列是什么?登錄的shell
第十題: 請簡述vim編輯器中的如下命令
i ----- 光標(biāo)所在處進(jìn)入編輯模式 o ----- 在光標(biāo)下一行進(jìn)入編輯模式 yy -----復(fù)制光標(biāo)所在行 dd -----刪除光標(biāo)所在行 u -----撤銷 G ------到頁尾 shift+v -----進(jìn)入可視行模式 x ------刪除光標(biāo)處的字符 gg ------到頁首 r ------修改光標(biāo)所在字符 p ------在光標(biāo)下一行粘貼
第十一題:請簡述一下rwx對文件和對目錄的影響和對應(yīng)的命令
對文件: r: 讀--cat、less w: 寫--vi、vim x: 執(zhí)行--bash ./file_name ?
對目錄: r: 讀--ls w: 寫--touch、mv、rm ? x: 執(zhí)行--cd ?
第十二題:創(chuàng)建用戶jack和it組,并將jack添加到it組里面,同時(shí)it組對文件a.txt有讀寫權(quán)限
groupadd it useradd jack -G it chmod g+w a.txt chown .it a.txt
第十三題:如何查看/opt/目錄下面的所有文件包括隱藏文件
ls -a /opt
第十四題:請將/opt/test/目錄以及目錄中的所有文件設(shè)置為讀和執(zhí)行權(quán)限
chomd -r g=rx o=rx /opt/test/
第十五題:請簡述一下在公司里面為什么不能使用root用戶
?root用戶為管理員用戶,權(quán)限太高,使用root用戶容易造成誤操作,帶來安全隱患,因此使用普通用戶