中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux shell 總結歷程

發布時間:2020-06-07 02:43:40 來源:網絡 閱讀:786 作者:cuizhiliang 欄目:系統運維

1?shell 中的數組 可以是關聯數組,索引值不是數組 0 1 2 ?

decalre -A ? f_value ? ? ? # 申明數組 ?可以省略?

f_value=([apple]='100doll' [orange]='150 doll') ? 定義數組?

echo ${f_value[apple]} ?# 去數組值?

例如:?

declare -A f_fruit ? ?# 一定要申明,不同于索引為 0 1 2 的可以不需要申明 ? # declare -a ?A ?這是定義 普通的數組

f_fruit=([apple]='100RMB' [orange]='50RMB')?

echo ${f_fruit[apple]}?

echo ${f_fruit[orange]}?

echo ${!f_fruit[*]}?


3??sh腳本調試 ???

全部調試 ?sh -x?

部分調試 ?只調試代碼中的類容?

set -x

代碼

set +x

例子:?

?#!/bin/bash?

#?

for i in {1..6}?

do?

? ? ???? set -x?

? ? ? ? echo $i?

? ? ? ? set +x?

done?

echo "script executed"?

??

注: set -x 在執行時顯示參數和命令?

? ? set +x 禁止調試上?

4?讀取read ,??不用enter 回車表示確定用特定的字符表示結束

read -d ":"?

例如;?

read -p "Please enter you name:"??-d ":"??NAME?

例如;?

read -p "Input you Name: " Name?

read -d ":" -p "Input you User: " User?

echo?

read -t 5 -s -p "Input you Password: " Password?

補充:?

-s 無回顯方式如密碼輸入?

-t ?超時設置?

5 運行直到命令成功

repeat()?

? { while true ?: ; do??$@?&& return; sleep 30;done }?

執行函數 ?repeat wget -c http://download?

6 find 的基于depth 深度

find??-maxdepth 2?二級 ??

-mindepth 最小的深度?

find /data/zhiliang.cui/scripts/ -mindepth 10 -name "*.sh" ?-print??

7??單向散列算法 md5sum

生成校驗和

[??root@cui1?data]#?md5sum?/data/zhiliang.cui/scripts/sh/1.sh?/data/zhiliang.cui/scripts/sh/for.sh???
24edee6130b1e1c6e57708592f6d6fa9??/data/zhiliang.cui/scripts/sh/1.sh??
81eef2d13e3dfeabfe53e6a3ddf43156??/data/zhiliang.cui/scripts/sh/for.sh?

> 定向到文件 file_sum.md5 ??

-c?? 檢查校驗和和文件校驗和比較?

文件修改后的結果?

?--status ?不輸出任何東西,一般用于執行返回碼的作用?

注:?

加密的其他算法:?

base64?

[??root@cui1?data]#?cat?file_sum.md5???
24edee6130b1e1c6e57708592f6d6fa9??/data/zhiliang.cui/scripts/sh/1.sh??
81eef2d13e3dfeabfe53e6a3ddf43156??/data/zhiliang.cui/scripts/sh/for.sh??
[??root@cui1?data]#???base64?file_sum.md5???
MjRlZGVlNjEzMGIxZTFjNmU1NzcwODU5MmY2ZDZmYTkgIC9kYXRhL3poaWxpYW5nLmN1aS9zY3Jp??
cHRzL3NoLzEuc2gKODFlZWYyZDEzZTNkZmVhYmZlNTNlNmEzZGRmNDMxNTYgIC9kYXRhL3poaWxp??
YW5nLmN1aS9zY3JpcHRzL3NoL2Zvci5zaAo=??
[??root@cui1?data]#?base64?file_sum.md5?>?base64??
[??root@cui1?data]#???base64?-d?base64 ? #解密??
24edee6130b1e1c6e57708592f6d6fa9??/data/zhiliang.cui/scripts/sh/1.sh??
81eef2d13e3dfeabfe53e6a3ddf43156??/data/zhiliang.cui/scripts/sh/for.sh?

gpg 加密?

gpg -c file 以交互式方式加密

解密??

gpg -d 以交互式方式解密

加salt的加密方法:??

openssl -1 -salt SALT_STRING PASSWORD

8 分隔文件?

以大小或者行數分隔 split

-b 以大小分隔 -b 10K ?以10K大小一個文件進行分隔

-l 一行數切割

split -b 100K messages-20150212?

-a 指定【后綴】長度 ?默認為2 ??

-d 以數字作為分隔后的后綴?

默認是字母為后綴?

前綴可以指定: split [OPTION] [INPUT [PREFIX]]?

例如:

[??root@cui1?test]#?split?-b?100K?-d?-a?4?messages-20150212?message??
[??root@cui1?test]#?ll??
總用量?760??
-rw-r--r--?1?root?root?102400?3月???3?00:21???message??0000 ? {message 為指定的前綴 ? 0000表示使用數組作為后綴}??
-rw-r--r--?1?root?root?102400?3月???3?00:21?message0001??
-rw-r--r--?1?root?root?102400?3月???3?00:21?message0002??
-rw-r--r--?1?root?root??78495?3月???3?00:21?message0003??
-rwxr-xr-x?1?root?root?385695?3月???3?00:21?messages-20150212?

注: 擴展 ?csplit 是split變體工具,支持 以指定文件字符作為切割符?

9 利用并行進程加速執行腳本?

^C[??root@cui1?test]#?vim?sleep???
#!/bin/sh??
#??
pidarray=()??
for((i=1;i<=5;i++))??
do??
????sleep?10?&??
??????pidarray+=("$!")??
done??

wait?${pidarray[@]} ??

# wait ?等待所有的完成?

1 放到后臺運行?

2 wait 等待所有進程【號】結束才結束腳本?

10??回環文件

dd?

mkfs.ext4?

mount -o loop?

/dev/loop*?

10 統計字符個數?

[??root@cui1?sh]#?echo?123?|?wc?-c??
4??
[??root@cui1?sh]#?echo?-n?123?|?wc?-c??
3?

其實-n 只是表示避免添加??額外的換行符

11 wget下載

wget URL??

-O 指定下載保存的路徑/文件?

-o ?下載的log?

-t 指定重試的次數?

-t 0 無線次數?

12 純文本形式dump?

lynx URL -dump > file.txt?

Lynx 是一個字符界面下的全功能的WWW瀏覽器,支持很多操作系統??

lynx??-source???http://pim.qq.com? ? ?dump下網頁的source 源文件?

12??sftp ?模擬ftp格式進入 一個交互式命令

服務器不需要 ?打開ftp服務,只要?

sftp?-oPort=22???root@192.168.7.235

13 lastb ?失敗登入獲取

14 watch 動態觀察變化

wathc COMMAND?

默認2秒?

-n SECOND 指定秒數?

-d ?顏色標明變化的部分

15 fsck

fsck 會自動檢測文件系統類型 調用fsck.type ,但是檢測之前最后做個模擬,?

fsck -N ?進行模擬,看結果在真正執行,比如fsck可能會將某些扇區標為壞的扇區,但我們卻希望從中恢復數據?

-A??

? ? ? ?-A ? ? Walk ?through ?the /etc/fstab file?

fsck檢測時一定不能在掛載狀態

16 shell結合mysql操作的方式

mysql -u $USER -p$PASS??<< EOF?2> /dev/null?

create table students(?

id int,?

name varchar(100),?

mark int?

);?

EOF

17 ping ?-c 個數?

注: 只要其中有一個值能夠ping通,其ech $? 返回值就是 ?0,如果所有都ping不通 則返回值為1 (不成功)

18 打印出文件中從第二行開始的文件?

?tail -n +2

? ? ? -n, --lines=K?

? ? ? ? ? ? ? output the last K lines, instead of the last 10; or use -n +K to output lines starting with the Kth

sed?-n?'2,$p'

同義詞:?

? ? head -n -Kth?

? ???

19 ls 命令

ls -S ?可以以大小進行排序,從大到小?

常用ls -lhS

ls -lhSr

ls -t 已修改的時間進行排序?

常用ls -lt (從最新的文件到最舊的)

ls -ltr

ls -n 顯示uid 和 gid 而不是用戶名和用戶組

20 gzip?

用法?

gzip file?

默認 ?源文件被刪除 生成 ?file.gz?

如何 ?保存源文件且輸出壓縮文件呢 ?可以使用-c 選項original

-c ?Write output on standard output; keep original files unchanged.?

gzip -c file > file.gz?

聯想:?

cat file1 file2 file3 | gzip > file.gz?

gzip -l ?file.gz ?檢查文件的壓縮比?

gunzip = gzip -d?

gunzip -c file.gz ? 能夠保留原始文件

掛載磁盤,用于修復作用?

guestmount -a vm112x113.img -m /dev/sda2 ?/mnt ??

21 找出當前你在哪個shell中?

echo “$0” ?或者 ps -p $$ ?或者 ps $$

如何找出子的shell 在第幾層 ?可不可以退出 ctrl + D?

找出子shell的層級或臨時shell的嵌套層級,每個bash實例啟動后,變量??$SHLVL?的值都會加一?

如?

echo “$SHLVL”

結果為1

輸入 screen?

echo “$SHLVL”

結果為2

輸入 bash

echo “$SHLVL”

結果為3

22??lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長?

23?find /data/ -name "*sum*" -type d

find /data -name “keyword” -type f 查找路徑下關鍵字為keyword的文件

23 eval?

一 e v a l命令將會首先掃描命令行進行所有的置換,然后再執行該命令。該命令適用于那些一次掃描無法實現其功能的變量。該命令對變量進行兩次掃描。這些需要進行兩次掃描的變量有時被稱為復雜變量。不過這些變量本身并不復雜。

echo "Last argument os "$(eval?echo \$$#)""

eval命令:將參數組合為一個新的命令,然后交給Shell執行

eval可以讀取一連串的參數,并依參數本身的內容來執行命令。常用來處理Shell腳本中的變量,參數不限數目,參數用分號“;”隔開,如果命令后面不帶參數或者參數為空,命令將返回0值。

Usage: eval [arg ...]

arg交給eval進行組合的參數

例:

1、編輯一個shell,先定義一個變量并賦值ls命令,之后把這個變量傳遞給eval

#!/bin/bash

#定義變量

command="ls -l /home"

eval $command ??#訪問變量前面加一個$符號。

2、把ls --color -l \作為參數傳遞給eval

linux@office:~$ eval 'ls --color -l \'

總計 72

-rwxrwxrwx ??1 linux linux ??106 2011-03-04 09:58 cmd

drwxr-xr-x ??2 linux linux 4096 2011-03-04 09:15 Desktop

drwxr-xr-x 14 linux linux 4096 2011-03-04 08:00 Documents

drwxr-xr-x ??4 linux linux 4096 2011-03-04 09:15 Downloads

-rw-r--r-- ??1 linux linux ??619 2011-03-04 09:42 echo


??

24 刪除本路徑下 除某個文件外的所有

rm -rf `ls | grep -v "tmux”`


25 cp(scp) 中的重要選項

-p ?preserver ?保留文件的原有權限和時間戳

-r/-R ?遞歸的拷貝目錄

-a ?等于-p -r -d

注: ?scp -r d1 d2 的結果是 ?d2/d1

scp -r d1/* d2 的結果 d2/*

26 kill 掉某個用戶, 強制這個用戶退出

1 w 查看哪些用戶登入

2 ps -ef | grep “pts/4”


3 kill 掉此用戶的sshd進程即可

kill -9 17306

27 passwd -S ?查看密碼的最新更改時間,如果密碼重來沒有更改過可以判斷此賬戶的創建時間了

[root@cui1 zhiliang]# passwd -S zhiliang

zhiliang PS 2015-08-02 0 99999 7 -1 (密碼已設置,使用 SHA512 加密。)

28 多行變一行,如果有需要可以將多行實現成為一行


如果將由必要實現 兩個參數到一行中, 可以試用xargs -n2

-n??Use at most?max-args?arguments per??command??line


注: 當然可以是用awk的多行處理技術實現(待研究)

29:awk -F ”正則表達式"

df -h | grep "/boot" | awk -F "[ ?\t%]+" '{print $5}’?

30?

head 和 tail 的高級用法:

head

? ? ? ?-n, --lines=[-]K

? ? ? ? ? ? ? print the first K lines instead of the first 10; with the leading ‘-’, print all but the last K

? ? ? ? ? ? ? lines of each file

如使用方法: head -n-2 ?(如果k前面有-號,表示打印所有的,除了最后的2行)

tail

-n, --lines=K output the last K lines, instead of the last 10; or use -n +K to output lines starting with the Kth

如使用方法: tail -n+2 ? 就是輸出從第二行開始的所有行


輸出從第二行開始,也就是過濾到了第一行


31 如何查看一個文件的完整access modify(文件內容被改變) change時間

ls -l filename 看到的只有月日 的modify時間

查看完整時間方法1 ?ls -l —full-time filename

stat filename

[root@cui1 zhiliang.cui]# ls -l --full-time trigge83_list

-rw-r--r-- 1 root root 232089 2015-08-09 06:21:40.388338770 -0400 trigge83_list

[root@cui1 zhiliang.cui]# stat trigge83_list?

? File: "trigge83_list"

? Size: 232089 ? ? ? ? ?Blocks: 456 ? ? ? ?IO Block: 4096 ? 普通文件

Device: fd00h/64768d ? ?Inode: 279504 ? ? ?Links: 1

Access: (0644/-rw-r--r--) ?Uid: ( ? ?0/ ? ?root) ? Gid: ( ? ?0/ ? ?root)

Access: 2015-08-09 06:20:26.695384447 -0400

Modify: 2015-08-09 06:21:40.388338770 -0400

Change: 2015-08-09 06:26:10.308193915 -0400

32 ftp客戶端的問題

有原始的ftp yum install ftp 和 window上的 等,還有lftp yum install -y lftp

不同的命令可能支持的性不一樣

比如: ftp 上傳的時候 ? put localfile remotefile ? ?(其中remotefile 不能省略也就是說只能重名名文件)

一般推薦使用lftp

用戶名:密碼@remotehost

lftp?ftp:?NGjZPR86KinJO69Vf@192.168.216.171

33 sh -c 的作用

-c string, shell方式 執行后面string中的一系列命令

?sh -c 'cd /data/zhiliang.cui; touch testfiel'

34 sudo 可以讓你切換身份來進行某項任務,而不僅僅sudo 默認到root用戶

sudo -u username 執行命令

su - username 執行命令

兩者的區別

前者是以某個用戶的身份去執行,而su - 是切換到這個用戶去執行命令,會先登入,在執行命令,在執行完成之后,會退出!


所以,要以某個身份去執行命令,還是推薦sudo -u username,因為su - 的這種方式不是都能達到目的的

如:sshd 這個用戶沒有登入權限為nologin的 就不能用su - 來完成了

如:


注: 默認root 是可以不用密碼,切換到任何用戶的

且看:

[root@mail ~]# cat /etc/sudoers | grep root

## the root user, without needing the root password.

## Allow root to run any commands anywhere?

root ? ?ALL=(ALL) ? ALL

## cdrom as root

經典用法:

sudo -u zhiliang sh -c 'cd /home/zhiliang; touch 1'?

35 source filename.sh ?和 ./filename.sh ?和 sh filename.sh /root/filename.sh 的各種區別

./filename.sh ?和 /root/filename.sh ?相似必須要有執行權限和 首行

#/bin/bash 定義解釋程序

不能filename.sh 的原因是shell終端會將它視為命令,而/root/filename.sh 是”/“開頭的,shell就知道是一個文件,不是個命令

sh filename.sh 的是將這個sh腳本文件作為sh的參數執行

source filename.sh 的之前的執行方式的區別本質是,沒有開始子shell,是在本shell的環境中執行!

[root@master ~]# cat test.sh?

#!/bin/bash

a=1

source test.sh

和 sh test.sh?

區別

是 source 執行的的時候 echo $a是有的,sh執行的是沒有a這變量的

還有一個不常見的是exec ?可以研究下

exec 3<text.txt

cat <&3

36 nc 命令

nc包

nc-1.84-22.el6.x86_64?

-l 監聽

-w 設置空閑超時,自動斷開 ,默認不超時

-u UDP

用途:

1 傳送文件

監聽方 ?: nc -l 1234 > receive.txt

傳送方: nc 192.168.7.235 1234 < send.txt

注: 傳送方將,將一個文本文件,通過連接socket 傳送個socket,監聽方(接收方)將接收到的文件,輸入到receive.txt 文件

2 傳送目錄

監聽方 ?: nc -l 1234 | ?tar xzvf -

傳送方: ?tar czvf - dir | nc 192.168.7.235 1234

3 掃描端口

nc -v -w 10 192.168.7.234 80

或一些列端口

nc -v -w 10 192.168.7.234 -z 80-100?

37 find 按返回查找一個模糊文件

find /data/path/… -name 1*.py

38 /dev/shm ? linux內存設備目錄入口


echo “abc-test” > /dev/shm/abc.txt

cat /dev/shm/abc.txt

作用: 需要快速提取的文件,可以這以寫入這個目錄下,一直在內存中的運行

注: 1 重啟丟失 2 默認是內存的一半大小 3 文件系統是tmpfs 4 區別swap這個虛擬內存

39 screen?

screen -S name ?創建一個這樣的窗口 虛擬終端

screen -ls

screen -r name/id ?恢復窗口

ctrl +a +d 退出但不關閉窗口

ctrl +a ?+k 殺掉當前會話窗口

ctrl +a +z 將這個會話掛起回到 SHLVL=1 的狀態(fg 1 恢復)

screen -d pid/name 將這個窗口置為離線

echo $SHLVL 可以檢查是不是在窗口中還是在正常的shell終端中

screen -x 多個人同時可以看處于Attached的窗口動態(適合遠程多個人需要看屏

幕)?

注: screen 中會話的三種狀態

1 Attached ?處于運行當中的,如果你要 screen -x name/pid 可以看?

2 Detached 處于離線的 screen -r name/pid 可以恢復到那個窗口

3 Dead 處于被kill -9 pid 殺死的,如果需要移除 screen -wipe pid/name


40 uname -i = arch 獲取 ?hardware platform

41 shell 自定義函數庫和引入函數庫

shell函數互相調用的

?# Source function library.

. ./

一般自己寫的函數推薦和函數庫放在同一級目錄下! 方便移動

42: 測試速度 ssh的吞吐量

yum install pv

yes | pv | ssh 192.168.7.235 "cat > /dev/null”


43?

客戶端連接數據

mysql -h292.168.7.235 ?-uroot -p

基本數據庫語法:

grant all on *.* to 'cui'@'192.168.7.235' identified by '12qwaszx';

?select user,password,host from mysql.user;

44 ssh使用自動化的選項

ssh $ip -o UserKnownHostsFile=/dev/null -o ConnectTimeout=3 ?-o BatchMode=yes -o StrictHostKeyChecking=no?

45 shell命令組合

為了在當前shell中執行一組命令

()運算符:

? ? ( 命令;命令;命令… )

用處一般是,

ls b.txt || ( echo "one" && echo "two” )’?

ls b.txt || ( echo "one" ; echo "two” )?

46 mkpasswd 創建隨機密碼(可指定長度和復雜度)

常用于和 ?echo “password” | passwd —stdin ? root ? 連用

mkpasswd -l 8 -s 2??

-l 密碼長度

-s 特殊字符的個數

如結果:?s|7dF5_V

echo “s|7dF5_V” ? | passwd —stdin root

47 iptables和tcpdump經常不記得命令

tcpdump -nn port 53

iptables -A INPUT ?-s 10.1.110.30 -p udp —dport 53

iptables -D ?INPUT ?number

-vv

-e ?可顯示mac地址

-nn 不反解

src 關鍵字 源ip地址

dst 目標地址

dst port 22 目標端口

srt port 22 源端口

or 或者

and 且

?tcpdump -vv dst port 22

tcpdump 'port 80 and (host 192.168.1.10 or host 192.168.1.11)

48 如何查看一個應用處于堵塞狀態 如 DNS堵塞了

netstat -tulnp | grep 53

查看


查看第一個數字的大小,如果有堵塞就不為0

意義:

Recv-Q: 多少個bytes沒有被傳入到 socket當中?

Send-Q: 多少bytes沒有被遠端接收識別?

49 [ -s file ] ?如果文件存在且有內容(文件中有內容)則為真

#!/bin/bash

if [!-s"b"]

then

? ??echo"空文件或者文件不存在"

else

? ??echo"文件中存在內容"

fi

~? ?

50?linux文件刪除的原理

51 awk的多分割符

echo "-----1:-----2:"? | awk -F "[-:]+" '{print $2}'

52 三劍客取行

ifconfig eth0 | grep "inet addr" | awk -F "[ :\t]+" '{print $4}'

ifconfig eth0 | sed -n '2p' | awk -F "[ :\t]+" '{print $4}'

ifconfig eth0 |? awk -F "[ :\t]+" 'NR ==2 {print $4}'

注: NR: 當前處理的行號

52 linux中的正則 BRE(十個)和 ERE

1). ? 任意一個字符,但不含(\n)

2)* ?匹配前面的0到無窮個重復次數

3) ?[0-9] ? 匹配0-9

4) \ ?轉義字符,將特殊字符還原本性

5) .* ? ?任意字符,匹配重復任意次數

6)^ ? 匹配行的的開頭

7)$ 結尾

8) ?\{n,m\} ?匹配前面的n到m次 ? 用egrep命令不需要轉義

\{n,\}

\{n\}

egrep? --color=auto "r{1,5}" /etc/passwd

grep -E --color=auto "r{1,5}" /etc/passwd

等于

grep --color=auto "r\{1,5\}" /etc/passwd

?[[:alnum:]]?means?[0-9A-Za-z],

[[:space:]] ?

ERE (egrep)

|

() ?組

+

egrep??--color=auto "^(root|sshd):" /etc/passwd?

? ? ??A regular expression may be followed by one of several repetition operators:

?? ? ???? ? ? The preceding item is optional and matched at most once.

?? ? ??*? ? ? The preceding item will be matched zero or more times.

?? ? ??+? ? ? The preceding item will be matched one or more times.

?? ? ??{n}? ? The preceding item is matched exactly?n?times.

?? ? ??{n,}?? The preceding item is matched?n?or more times.

?? ? ??{,m}?? The preceding item is matched at most?m?times.

?? ? ??{n,m}? The preceding item is matched at least?n?times, but not more than?m?times.

在man grep ?過濾??REGULAR ?進行查找

53 正則結合sed做替換

sed ’s#正則#不可用正則表達式#g’ ?作用替換為空

結合se的小括號分組的功能

ifconfig eth0 | sed -n 's#^.*inet addr:\(.*\)? Bcast.*$#\1#gp'


[root@master ~]# ifconfig eth0 | sed -n 's#^.*inet addr:\(.*\)? Bcast:\(.*\) M.*$#\1 \2#gp'

192.168.7.235 192.168.7.255

取數字權限


?stat file1 | sed -n 's#^.*s: (\([0-9]*\).*$#\1#gp'

等于

stat -c %a file1

54 tree的選項

tree -dL 2

-d 只打印目錄

-L ?打印的層級 -L 1只打印一級

-i 不縮進

-f 打印全路徑

tree -idL 1 |egrep -v "^$|direct|\." | xargs du? -sh


55 運維最小化原則

1 系統最小化

2 服務啟動最小化

3 操作最小化 ?rm -f file.txt (不用rm -rf file.txt)

4 登入最小化不用root

5 權限最小化

6 配置參數最小化

56 文件修改前進行備份

cp file file.ori

修改后對比

vimdiff file file.ori

57?

更改sshd_config


如何切換到root(有root權限)的方式:


注: 不能sudo 使用的命令

1 內置命令如 type

2 path中不能找到的命令

58 加大文件描述符

[root@shop-web01 ~]# ulimit -n

65536

默認是1024

/etc/security/limits.conf?

可直接執行

echo “* ? ? - ?nofile ? 65535” >> /etc/security/limits.conf

59 簡單加密shell文件

方法一: gzexe

(加密同事壓縮)

會把原來沒有加密的文件備份為 file.sh~ ,同時 file.sh 即被變成加密文件

還原:

gzexe -d file.sh

60 防***

隱藏版本信息

> /etc/issue

61 鎖定系統重要文件

上鎖

chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow

解鎖

chattr -i

A file with the ‘i’ attribute cannot be modified

62 默認的國外rpm源更改為國內源

http://mirrors.163.com/.help/centos.html

63 windows中文件的類型是通過擴展名(.txt)來區分的

file.txt

file是文件名 .txt是擴展名

linux的擴展名和文件類型沒關系,只是沿用windows的習慣進行易于用戶識別

64 linux中- 的文件為普通文件,按照文件內容又大致可分為三種

1 ASCII 純文本文件

2 二級制文件,一般是可執行的命令 ?cat ls cd

3 data文件 數據格式文件,[root@www py]# file /var/log/wtmp

/var/log/wtmp: dat


通過file命令去判斷普通文件的類型

65 過濾本路徑下的目錄

ls -l | grep “^d”

或者 tree -diL1 ?| grep “[a-Z]”


66 inode存儲的信息,唯獨不包含文件名

67 ssh工具

windows客戶端和linux服務器之間傳送工具

1?rz?sz

2?winscp?基於ssh?sftp

3?SFX(xshell)

4?sftp?基於SSH?加密傳輸

5?samba?http?ftp?nfs

注意: sftp 連接方式:

?sftp?-o?Port=22??root@192.168.100.13

68?

. /etc/init.d/functions

專業腳本

#!/bin/bash

.?/etc/init.d/functions

action??"scp?ile?to??remotedir?is?ok"?/bin/true

69 :

25 Apr 15:30:17 ntpdate[11520]:?no server suitable for synchronization found

其實,這不是一個錯誤。而是由于每次重啟?NTP?服務器之后大約要?3?-?5?分鐘客戶端才能與?server?建立正常的通訊連接。當此時用客戶端連接服務端就會報這樣的信息。一般等待幾分鐘就可以了。


70 ssh 執行sudo命令

ssh?執行sudo命令

[?root@master?~]#?tail?-1?/etc/sudoers

oldbody?????????ALL=(ALL)???NOPASSWD:?/bin/cp

[?oldboy@master?~]$?scp?hosts??oldboy@192.168.100.13:~

hosts????????????????????????????????????????????????????????????????????????100%??184?????0.2KB/s???00:00????

[?oldboy@master?~]$?ssh??oldboy@192.168.100.13?sudo?cp?~/hosts?/etc/

sudo:?sorry,?you?must?have?a?tty?to?run?sudo

解決方式: 2種

1 -t 選項

[?oldboy@master?~]$?ssh?-t??oldboy@192.168.100.13?sudo?cp?~/hosts?/etc/?????

Connection?to?192.168.100.13?closed.

原理來源:?查看sudoers文件:

#?Disable?"ssh?hostname?sudo?<cmd>",?because?it?will?show?the?password?in?clear.

#?????????You?have?to?run?"ssh?-t?hostname?sudo?<cmd>".

#

Defaults????requiretty

71 sort的深入

-r?

-n

-k

-t

對這個arp文件以ip地址的大小排序 (第三列排完排第四列)

cat.arp

192.168.0.1???00:0c:29:65:14:0f????????????????????????

192.168.1.10???00:0c:29:65:14:0f????????????????????????

192.168.20.9???00:0c:29:65:14:0f????????????????????????

192.168.0.10???00:0c:29:65:14:0f????????????????????????

192.168.1.11???00:0c:29:65:14:0f????????????????????????

192.168.10.10???00:0c:29:65:14:0f????????????????????????

192.168.200.8???00:0c:29:65:14:0f????????????????????????

192.168.19.2????00:50:56:f9:96:ad

結果:

[?oldboy@slave?~]$?cat?arp.txt?|?sort?-n?-t"."??-k3,3?-k4.1,4.3

192.168.0.1???00:0c:29:65:14:0f????????????????????????

192.168.0.10???00:0c:29:65:14:0f????????????????????????

192.168.1.10???00:0c:29:65:14:0f????????????????????????

192.168.1.11???00:0c:29:65:14:0f????????????????????????

192.168.10.10???00:0c:29:65:14:0f????????????????????????

192.168.19.2????00:50:56:f9:96:ad????????????????????????

192.168.20.9???00:0c:29:65:14:0f????????????????????????

192.168.200.8???00:0c:29:65:14:0f?

命令解釋:

?sort?-n?-t"."??-k3,3?-k4.1,4.3

以-n 數字排序,以-t"." 分列,以-k第三列的(第一個字符開始)到第三列的(最后字符)結束

在-k 第四列的第一個字符開始到第四列的三個字符排序為k結束

==???sort?-n?-t"."??-k3,3?-k4 ?雖然結果一樣但后排序的時間要長(因為-k4 是一默認第一個字符到第四列結束 這樣就會包括mac地址參與了排序)

72 awk的庖丁解牛

[?oldboy@slave?~]$?cat?access.log?

http://www.baidu.com/index.html

http://www.12306.cn/jsp.php

http://www.sina.com.cn/index.html

http://www.12306.cn/jsp.php

http://www.sina.com.cn/index.html

http://www.12306.cn/jsp.php

http://www.taobao.com/

http://www.baidu.com/index.html

[?oldboy@slave?~]$?cat?access.log??|?awk?-F?'/'?'{print?$3}'?|?sort?-rn?|?uniq?-c

??????1??www.taobao.com

??????2??www.sina.com.cn

??????2??www.baidu.com

??????3??www.12306.cn

等于使用awk的數組方式進行排序統計

[?oldboy@slave?~]$?cat?access.log??|?awk?-F?'/'?'{print?$3}'?|??awk?'{++S[$NF]?}?END?{?for(k?in?S)?print?S[k],k?}'?|?sort?-n?

1??www.taobao.com

2??www.baidu.com

2??www.sina.com.cn

3??www.12306.cn

awk?的統計數組

awk?'{++S[$NF]?}?END?{?for(k?in?S)?print?S[k],k?}'

庖丁解牛:

S[]????????定義一個名爲S的數組,在awk中,數組下飈通常是從1開始,而不是0

NF????????當前記錄里域個數,默認以空格分隔,如上所示的記錄,NF域個數等於1

$NF????????表示一行的最後一個域的值,$NF?等於$1在上述中

S[$NF]??表示數組元素的值,如上述表示網站爲key的值

++S[$NF]???表示把某個數加一,如上訴的記錄是把站點名加一

END?????????awk行處理完執行的語句塊

for?(key?in?S?)?遍歷

print?S[k],k??打印值

awk?的統計數組

awk?'{++S[$NF]?}?END?{?for(k?in?S)?print?S[k],k?}'

庖丁解牛:

S[]????????定義一個名爲S的數組,在awk中,數組下飈通常是從1開始,而不是0

NF????????當前記錄里域個數,默認以空格分隔,如上所示的記錄,NF域個數等於1

$NF????????表示一行的最後一個域的值,$NF?等於$1在上述中

S[$NF]??表示數組元素的值,如上述表示網站爲key的值

++S[$NF]???表示把某個數加一,如上訴的記錄是把站點名加一

END?????????awk行處理完執行的語句塊

for?(key?in?S?)?遍歷

print?S[k],k??打印值

注意: awk可以直接處理文本,可以單獨awk文本不需要cat下文本先,提高性能.

2統計netstat的tcp 連接狀況的統計值

[?oldboy@slave?~]$?netstat?-an?|awk?'?/^tcp/?{?++S[$6]?}?END?{for?(k?in?S?)?print?S[k]"\t"k}'?

2???????ESTABLISHED

10??????LISTEN

3 統計外網的IP地址不論什么狀態

[?oldboy@slave?~]$?netstat?-an?|awk?-F?"[?:]+"?'/^tcp/?{?++S[$6]?}?END?{for?(k?in?S)?print?k,S[k]}'??|?grep?"^[0-9]"?|?sort?-n

0.0.0.0?5

192.168.100.10?1

192.168.100.1?1

73 文件如果有執行權限是可以tab不全出來的(目錄是可以不全的,因為有執行權限)

如 /etc/init.d/rsyslog 是可以補全

而 /var/log/mes ?是沒法不全的

74 bash管道進行執行

?cat?a.log?|?bash

75 過濾文件行中后面的幾個字段

[?root@log_server?zhiliang.cui]#?cat?column.log?

1?ls?/etc/init.d/

2?cd?/root/

33?bash?x.sh?1?2

45?echo?"abc"?

46?echo?$?

[?root@log_server?zhiliang.cui]#?grep?-o?"[a-Z].*"?column.log?

ls?/etc/init.d/

cd?/root/

bash?x.sh?1?2

echo?"abc"?

echo?$?

注意: 如果第一列中有字母grep就不出了

去除文件中除第一列之外的所有列?

[?root@log_server?zhiliang.cui]#?cat?column2.log?

1a?ls?/etc/init.d/

2b?cd?/root/

33?bash?x.sh?1?2

45?echo?"abc"?

46?echo?$?

[?root@log_server?zhiliang.cui]#??awk?'{for(i=2;i<=NF;++i)?printf?$i?"?";printf?"\n"}'?column2.log?

ls?/etc/init.d/?

cd?/root/?

bash?x.sh?1?2?

echo?"abc"?

echo?$??

或者:

awk?'{for(i=2;i<=NF;++i)?printf?$i?"?"}?{printf?"\n"}'?column2.log

注釋:使用printf而不是用print的原因是print默認輸出換行符,而printf默認不輸出

76 ssh 拷貝id_rsa.pub 指定特殊端口

ssh-copy-id? "-p 58422 ldap-test03.beta"?

77.sort 的面試題

1 2 3 三個文件,只用到sort uniq -d uniq -u?

得出

X=1交集2交集3 ? ?cat 1.txt 2.txt 3.txt | sort | uniq -d

Y=1-2-3 取差集 ? cat 1.txt 2.txt 3.txt | sort | uniq -u

Z=1并集2并集3 ? ?cat 1.txt 2.txt 3.txt | sort | uniq?

sort 默認從下到大排序行

解釋:

-d 顯示有重復的行

-u 顯示文件中不重復的行

78 面試題:

打印1到20之間的奇數

python方法:

In [7]:?for i in range(1,20):

?? ...:?? ? if i%2 == 1:

?? ...:?? ? ? ? print i

shell 方法:

for((i=1;i<20;i++))

do

? ??if [$(($i%2))-eq1];then

? ? ? ??echo$i

? ??fi

done

或者

for?i?in`seq?120`

do

? ??if [$(($i%2))-eq1];then

? ? ? ??echo$i

? ??fi

done

79 面試題:

apache 的兩種工作模式

prefork

worker

80 面試題:

http的請求和響應信息

請求:

HTTP請求的格式如下所示:

<request-line>
<headers>
<blank line>
[<request-body>]

如:

GET / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

Referer:

響應:

如下所示,HTTP響應的格式與請求的格式十分類似:

<status-line>
<headers>
<blank line>
[<response-body>]

正如你所見,在響應中唯一真正的區別在于第一行中用狀態信息代替了請求信息。狀態行(status line)通過提供一個狀態碼來說明所請求的資源情況。以下就是一個HTTP響應的例子:
HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122

81 cookie 和session的區別

82 面試題:

假設Apache產生的日志文件名為access_log,在apache正在運行時,執行命令mv ?access_log access_log.bak,執行完后,請問新的apache的日志會打印到哪里,請選擇下列描述正確的是

解釋:雖然此時文件被改名,但是由于服務正在運行,因為它的inode節點的位置沒有變,程序打開的fd仍然會指向原來那個inode,不會因為文件名的改變而改變。apache會繼續向已改名的文件中追加日志。

83 tcpdump 抓包 源地址 源端口

-vv

-e ?可顯示mac地址

src 關鍵字 源ip地址

dst 目標地址

dst port 22 目標端口

srt port 22 源端口

or 或者

and 且

?tcpdump -vv dst port 22

tcpdump 'port 80 and (host 192.168.1.10 or host 192.168.1.11)'

84 tcp的三次握手和4次斷開

在TCP/IP協議中,TCP協議提供可靠的連接服務,采用三次握手建立一個連接,如圖1所示。?
(1)第一次握手:建立連接時,客戶端A發送SYN包(SYN=j)到服務器B,并進入SYN_SEND狀態,等待服務器B確認。?
(2)第二次握手:服務器B收到SYN包,必須確認客戶A的SYN(ACK=j+1),同時自己也發送一個SYN包(SYN=k),即SYN+ACK包,此時服務器B進入SYN_RECV狀態。?
(3)第三次握手:客戶端A收到服務器B的SYN+ACK包,向服務器B發送確認包ACK(ACK=k+1),此包發送完畢,客戶端A和服務器B進入ESTABLISHED狀態,完成三次握手。?
完成三次握手,客戶端與服務器開始傳送數據。

由于TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的數據發送任務后就能發送一個FIN來終止這個方向的連接。收到一個 FIN只意味著這一方向上沒有數據流動,一個TCP連接在收到一個FIN后仍能發送數據。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。?
(1)客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送(報文段4)。?
(2)服務器B收到這個FIN,它發回一個ACK,確認序號為收到的序號加1(報文段5)。和SYN一樣,一個FIN將占用一個序號。?
(3)服務器B關閉與客戶端A的連接,發送一個FIN給客戶端A(報文段6)。?
(4)客戶端A發回ACK報文確認,并將確認序號設置為收到序號加1(報文段7)。?
TCP采用四次揮手關閉連接如圖2所示。

85 mysql忘記密碼的快速處理方法:

killall mysqld

mysqld_safe --skip-grant-tables &

mysql -uroot?

update mysql.user set password=PASSWORD('12qwaszx') where User='root'

flush privileges;

quit

killall mysqld

/etc/init.d/mysqld start

ps -ef | grep mysql

86 清空zabbix的history表的數據

truncate?table?history;

歷史數據保留14天

趨勢數據保留3年

歷史數據和趨勢數據的區別

http://doc.okbase.net/doclist/archive/57552.html

注:

--?清空全部數據,不寫日志,不可恢復,速度極快

truncate??table??表名;

?

--?清空全部數據,寫日志,數據可恢復,速度慢

delete??from??表名

但是

mysql mysql 1635778560 2月? 19 21:02 history.ibd

文件卻沒有被減小或者清空

item 的這個地方可以優化


通過?housekeeper 進程執行

如果完全情況history,一天的數據會沒有,但是趨勢數還是有的,趨勢數據好幾天的也會沒有

實驗得到的

87: 詳細說明vim 寫文件都磁盤的過程 面試題(越詳細越好)

88

wget -q -P directory file

-P: 下載的目錄前綴,默認是本目錄

89 獲取序列的方法:---自行體會

[andy@master?~]$?seq?-s?"?"?1?100

1?2?3?4?5?6?7?8?9?10?11?12?13?14?15?16?17?18?19?20?21?22?23?24?25?26?27?28?29?30?31?32?33?34?35?36?37?38?39?40?41?42?43?44?45?46?47?48?49?50?51?52?53?54?55?56?57?58?59?60?61?62?63?64?65?66?67?68?69?70?71?72?73?74?75?76?77?78?79?80?81?82?83?84?85?86?87?88?89?90?91?92?93?94?95?96?97?98?99?100

[andy@master?~]$?

[andy@master?~]$?

[andy@master?~]$?echo?{1..100}?|?tr?"?"?"+"

1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴中市| 高碑店市| 报价| 大姚县| 交口县| 大田县| 永安市| 正镶白旗| 拜泉县| 行唐县| 兴城市| 桑日县| 麻阳| 莱芜市| 从江县| 大关县| 湘潭县| 永吉县| 吉木萨尔县| 兴海县| 吉安县| 富源县| 本溪| 辽宁省| 宝清县| 天门市| 方城县| 衡南县| 民权县| 建瓯市| 通许县| 慈溪市| 定西市| 德化县| 上高县| 浮山县| 安仁县| 大同县| 邛崃市| 太原市| 无锡市|