linuxshell總結(jié)歷程

1?shell 中的數(shù)組 可以是關(guān)聯(lián)數(shù)組,索引值不是數(shù)組 0 1 2 ?

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、成都做網(wǎng)站、和順網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、和順網(wǎng)絡(luò)營(yíng)銷、和順企業(yè)策劃、和順品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供和順建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:bm7419.com

decalre -A ? f_value ? ? ? # 申明數(shù)組 ?可以省略?

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

echo ${f_value[apple]} ?# 去數(shù)組值?

例如:?

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

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

echo ${f_fruit[apple]}?

echo ${f_fruit[orange]}?

echo ${!f_fruit[*]}?

3??sh腳本調(diào)試 ???

全部調(diào)試 ?sh -x?

部分調(diào)試 ?只調(diào)試代碼中的類容?

set -x

代碼

set +x

例子:?

?#!/bin/bash?

#?

for i in {1..6}?

do?

? ? ???? set -x?

? ? ? ? echo $i?

? ? ? ? set +x?

done?

echo "script executed"?

??

注: set -x 在執(zhí)行時(shí)顯示參數(shù)和命令?

? ? set +x 禁止調(diào)試上?

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

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?

補(bǔ)充:?

-s 無(wú)回顯方式如密碼輸入?

-t ?超時(shí)設(shè)置?

5 運(yùn)行直到命令成功

repeat()?

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

執(zhí)行函數(shù) ?repeat wget -c http://download?

6 find 的基于depth 深度

find??-maxdepth 2?二級(jí) ??

-mindepth 最小的深度?

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

7??單向散列算法 md5sum

生成校驗(yàn)和

[??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?? 檢查校驗(yàn)和和文件校驗(yàn)和比較?

文件修改后的結(jié)果?

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

注:?

加密的其他算法:?

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 分隔文件?

以大小或者行數(shù)分隔 split

-b 以大小分隔 -b 10K ?以10K大小一個(gè)文件進(jìn)行分隔

-l 一行數(shù)切割

split -b 100K messages-20150212?

-a 指定【后綴】長(zhǎng)度 ?默認(rèn)為2 ??

-d 以數(shù)字作為分隔后的后綴?

默認(rèn)是字母為后綴?

前綴可以指定: 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表示使用數(shù)組作為后綴}??
-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?

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

9 利用并行進(jìn)程加速執(zhí)行腳本?

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

wait?${pidarray[@]} ??

# wait ?等待所有的完成?

1 放到后臺(tái)運(yùn)行?

2 wait 等待所有進(jìn)程【號(hào)】結(jié)束才結(jié)束腳本?

10??回環(huán)文件

dd?

mkfs.ext4?

mount -o loop?

/dev/loop*?

10 統(tǒng)計(jì)字符個(gè)數(shù)?

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

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

11 wget下載

wget URL??

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

-o ?下載的log?

-t 指定重試的次數(shù)?

-t 0 無(wú)線次數(shù)?

12 純文本形式dump?

lynx URL -dump > file.txt?

Lynx 是一個(gè)字符界面下的全功能的WWW瀏覽器,支持很多操作系統(tǒng)??

lynx??-source???http://pim.qq.com? ? ?dump下網(wǎng)頁(yè)的source 源文件?

12??sftp ?模擬ftp格式進(jìn)入 一個(gè)交互式命令

服務(wù)器不需要 ?打開(kāi)ftp服務(wù),只要?

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

13 lastb ?失敗登入獲取

14 watch 動(dòng)態(tài)觀察變化

wathc COMMAND?

默認(rèn)2秒?

-n SECOND 指定秒數(shù)?

-d ?顏色標(biāo)明變化的部分

15 fsck

fsck 會(huì)自動(dòng)檢測(cè)文件系統(tǒng)類型 調(diào)用fsck.type ,但是檢測(cè)之前最后做個(gè)模擬,?

fsck -N ?進(jìn)行模擬,看結(jié)果在真正執(zhí)行,比如fsck可能會(huì)將某些扇區(qū)標(biāo)為壞的扇區(qū),但我們卻希望從中恢復(fù)數(shù)據(jù)?

-A??

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

fsck檢測(cè)時(shí)一定不能在掛載狀態(tài)

16 shell結(jié)合MySQL操作的方式

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

create table students(?

id int,?

name varchar(100),?

mark int?

);?

EOF

17 ping ?-c 個(gè)數(shù)?

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

18 打印出文件中從第二行開(kāi)始的文件?

?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 ?可以以大小進(jìn)行排序,從大到小?

常用ls -lhS

ls -lhSr

ls -t 已修改的時(shí)間進(jìn)行排序?

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

ls -ltr

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

20 gzip?

用法?

gzip file?

默認(rèn) ?源文件被刪除 生成 ?file.gz?

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

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

gzip -c file > file.gz?

聯(lián)想:?

cat file1 file2 file3 | gzip > file.gz?

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

gunzip = gzip -d?

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

掛載磁盤,用于修復(fù)作用?

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

21 找出當(dāng)前你在哪個(gè)shell中?

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

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

找出子shell的層級(jí)或臨時(shí)shell的嵌套層級(jí),每個(gè)bash實(shí)例啟動(dòng)后,變量??$SHLVL?的值都會(huì)加一?

如?

echo “$SHLVL”

結(jié)果為1

輸入 screen?

echo “$SHLVL”

結(jié)果為2

輸入 bash

echo “$SHLVL”

結(jié)果為3

22??lsof +D /usr/local/ 同上,但是會(huì)搜索目錄下的目錄,時(shí)間較長(zhǎng)?

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

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

23 eval?

一 e v a l命令將會(huì)首先掃描命令行進(jìn)行所有的置換,然后再執(zhí)行該命令。該命令適用于那些一次掃描無(wú)法實(shí)現(xiàn)其功能的變量。該命令對(duì)變量進(jìn)行兩次掃描。這些需要進(jìn)行兩次掃描的變量有時(shí)被稱為復(fù)雜變量。不過(guò)這些變量本身并不復(fù)雜。

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

eval命令:將參數(shù)組合為一個(gè)新的命令,然后交給Shell執(zhí)行

eval可以讀取一連串的參數(shù),并依參數(shù)本身的內(nèi)容來(lái)執(zhí)行命令。常用來(lái)處理Shell腳本中的變量,參數(shù)不限數(shù)目,參數(shù)用分號(hào)“;”隔開(kāi),如果命令后面不帶參數(shù)或者參數(shù)為空,命令將返回0值。

Usage: eval [arg ...]

arg交給eval進(jìn)行組合的參數(shù)

例:

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

#!/bin/bash

#定義變量

command="ls -l /home"

eval $command ??#訪問(wèn)變量前面加一個(gè)$符號(hào)。

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

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

總計(jì) 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 刪除本路徑下 除某個(gè)文件外的所有

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

25 cp(scp) 中的重要選項(xiàng)

-p ?preserver ?保留文件的原有權(quán)限和時(shí)間戳

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

-a ?等于-p -r -d

注: ?scp -r d1 d2 的結(jié)果是 ?d2/d1

scp -r d1/* d2 的結(jié)果 d2/*

26 kill 掉某個(gè)用戶, 強(qiáng)制這個(gè)用戶退出

1 w 查看哪些用戶登入

2 ps -ef | grep “pts/4”

3 kill 掉此用戶的sshd進(jìn)程即可

kill -9 17306

27 passwd -S ?查看密碼的最新更改時(shí)間,如果密碼重來(lái)沒(méi)有更改過(guò)可以判斷此賬戶的創(chuàng)建時(shí)間了

[root@cui1 zhiliang]# passwd -S zhiliang

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

28 多行變一行,如果有需要可以將多行實(shí)現(xiàn)成為一行

如果將由必要實(shí)現(xiàn) 兩個(gè)參數(shù)到一行中, 可以試用xargs -n2

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

注: 當(dāng)然可以是用awk的多行處理技術(shù)實(shí)現(xiàn)(待研究)

29:awk -F ”正則表達(dá)式"

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

30?

head 和 tail 的高級(jí)用法:

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前面有-號(hào),表示打印所有的,除了最后的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 ? 就是輸出從第二行開(kāi)始的所有行

輸出從第二行開(kāi)始,也就是過(guò)濾到了第一行

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

ls -l filename 看到的只有月日 的modify時(shí)間

查看完整時(shí)間方法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客戶端的問(wèn)題

有原始的ftp yum install ftp 和 window上的 等,還有l(wèi)ftp yum install -y lftp

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

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

一般推薦使用lftp

用戶名:密碼@remotehost

lftp?ftp:?NGjZPR86KinJO69Vf@192.168.216.171

33 sh -c 的作用

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

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

34 sudo 可以讓你切換身份來(lái)進(jìn)行某項(xiàng)任務(wù),而不僅僅sudo 默認(rèn)到root用戶

sudo -u username 執(zhí)行命令

su - username 執(zhí)行命令

兩者的區(qū)別

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

所以,要以某個(gè)身份去執(zhí)行命令,還是推薦sudo -u username,因?yàn)閟u - 的這種方式不是都能達(dá)到目的的

如:sshd 這個(gè)用戶沒(méi)有登入權(quán)限為nologin的 就不能用su - 來(lái)完成了

如:

注: 默認(rèn)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

經(jīng)典用法:

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

35 source filename.sh ?和 ./filename.sh ?和 sh filename.sh /root/filename.sh 的各種區(qū)別

./filename.sh ?和 /root/filename.sh ?相似必須要有執(zhí)行權(quán)限和 首行

#/bin/bash 定義解釋程序

不能filename.sh 的原因是shell終端會(huì)將它視為命令,而/root/filename.sh 是”/“開(kāi)頭的,shell就知道是一個(gè)文件,不是個(gè)命令

sh filename.sh 的是將這個(gè)sh腳本文件作為sh的參數(shù)執(zhí)行

source filename.sh 的之前的執(zhí)行方式的區(qū)別本質(zhì)是,沒(méi)有開(kāi)始子shell,是在本shell的環(huán)境中執(zhí)行!

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

#!/bin/bash

a=1

source test.sh

和 sh test.sh?

區(qū)別

是 source 執(zhí)行的的時(shí)候 echo $a是有的,sh執(zhí)行的是沒(méi)有a這變量的

還有一個(gè)不常見(jiàn)的是exec ?可以研究下

exec 3<text.txt

cat <&3

36 nc 命令

nc包

nc-1.84-22.el6.x86_64?

-l 監(jiān)聽(tīng)

-w 設(shè)置空閑超時(shí),自動(dòng)斷開(kāi) ,默認(rèn)不超時(shí)

-u UDP

用途:

1 傳送文件

監(jiān)聽(tīng)方 ?: nc -l 1234 > receive.txt

傳送方: nc 192.168.7.235 1234 < send.txt

注: 傳送方將,將一個(gè)文本文件,通過(guò)連接socket 傳送個(gè)socket,監(jiān)聽(tīng)方(接收方)將接收到的文件,輸入到receive.txt 文件

2 傳送目錄

監(jiān)聽(tīng)方 ?: 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 按返回查找一個(gè)模糊文件

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

38 /dev/shm ? linux內(nèi)存設(shè)備目錄入口

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

cat /dev/shm/abc.txt

作用: 需要快速提取的文件,可以這以寫入這個(gè)目錄下,一直在內(nèi)存中的運(yùn)行

注: 1 重啟丟失 2 默認(rèn)是內(nèi)存的一半大小 3 文件系統(tǒng)是tmpfs 4 區(qū)別swap這個(gè)虛擬內(nèi)存

39 screen?

screen -S name ?創(chuàng)建一個(gè)這樣的窗口 虛擬終端

screen -ls

screen -r name/id ?恢復(fù)窗口

ctrl +a +d 退出但不關(guān)閉窗口

ctrl +a ?+k 殺掉當(dāng)前會(huì)話窗口

ctrl +a +z 將這個(gè)會(huì)話掛起回到 SHLVL=1 的狀態(tài)(fg 1 恢復(fù))

screen -d pid/name 將這個(gè)窗口置為離線

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

screen -x 多個(gè)人同時(shí)可以看處于Attached的窗口動(dòng)態(tài)(適合遠(yuǎn)程多個(gè)人需要看屏

幕)?

注: screen 中會(huì)話的三種狀態(tài)

1 Attached ?處于運(yùn)行當(dāng)中的,如果你要 screen -x name/pid 可以看?

2 Detached 處于離線的 screen -r name/pid 可以恢復(fù)到那個(gè)窗口

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

40 uname -i = arch 獲取 ?hardware platform

41 shell 自定義函數(shù)庫(kù)和引入函數(shù)庫(kù)

shell函數(shù)互相調(diào)用的

?# Source function library.

. ./

一般自己寫的函數(shù)推薦和函數(shù)庫(kù)放在同一級(jí)目錄下! 方便移動(dòng)

42: 測(cè)試速度 ssh的吞吐量

yum install pv

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

43?

客戶端連接數(shù)據(jù)

mysql -h292.168.7.235 ?-uroot -p

基本數(shù)據(jù)庫(kù)語(yǔ)法:

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

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

44 ssh使用自動(dòng)化的選項(xiàng)

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

45 shell命令組合

為了在當(dāng)前shell中執(zhí)行一組命令

()運(yùn)算符:

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

用處一般是,

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

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

46 mkpasswd 創(chuàng)建隨機(jī)密碼(可指定長(zhǎng)度和復(fù)雜度)

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

mkpasswd -l 8 -s 2??

-l 密碼長(zhǎng)度

-s 特殊字符的個(gè)數(shù)

如結(jié)果:?s|7dF5_V

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

47 iptables和tcpdump經(jīng)常不記得命令

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 關(guān)鍵字 源ip地址

dst 目標(biāo)地址

dst port 22 目標(biāo)端口

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 如何查看一個(gè)應(yīng)用處于堵塞狀態(tài) 如 DNS堵塞了

netstat -tulnp | grep 53

查看

查看第一個(gè)數(shù)字的大小,如果有堵塞就不為0

意義:

Recv-Q: 多少個(gè)bytes沒(méi)有被傳入到 socket當(dāng)中?

Send-Q: 多少bytes沒(méi)有被遠(yuǎn)端接收識(shí)別?

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

#!/bin/bash

if [!-s"b"]

then

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

else

? ??echo"文件中存在內(nèi)容"

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: 當(dāng)前處理的行號(hào)

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

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

2)* ?匹配前面的0到無(wú)窮個(gè)重復(fù)次數(shù)

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

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

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

6)^ ? 匹配行的的開(kāi)頭

7)$ 結(jié)尾

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

\{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 ?過(guò)濾??REGULAR ?進(jìn)行查找

53 正則結(jié)合sed做替換

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

結(jié)合se的小括號(hào)分組的功能

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

取數(shù)字權(quán)限

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

等于

stat -c %a file1

54 tree的選項(xiàng)

tree -dL 2

-d 只打印目錄

-L ?打印的層級(jí) -L 1只打印一級(jí)

-i 不縮進(jìn)

-f 打印全路徑

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

55 運(yùn)維最小化原則

1 系統(tǒng)最小化

2 服務(wù)啟動(dòng)最小化

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

4 登入最小化不用root

5 權(quán)限最小化

6 配置參數(shù)最小化

56 文件修改前進(jìn)行備份

cp file file.ori

修改后對(duì)比

vimdiff file file.ori

57?

更改sshd_config

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

注: 不能sudo 使用的命令

1 內(nèi)置命令如 type

2 path中不能找到的命令

58 加大文件描述符

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

65536

默認(rèn)是1024

/etc/security/limits.conf?

可直接執(zhí)行

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

59 簡(jiǎn)單加密shell文件

方法一: gzexe

(加密同事壓縮)

會(huì)把原來(lái)沒(méi)有加密的文件備份為 file.sh~ ,同時(shí) file.sh 即被變成加密文件

還原:

gzexe -d file.sh

60 防***

隱藏版本信息

> /etc/issue

61 鎖定系統(tǒng)重要文件

上鎖

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

解鎖

chattr -i

A file with the ‘i’ attribute cannot be modified

62 默認(rèn)的國(guó)外rpm源更改為國(guó)內(nèi)源

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

63 windows中文件的類型是通過(guò)擴(kuò)展名(.txt)來(lái)區(qū)分的

file.txt

file是文件名 .txt是擴(kuò)展名

linux的擴(kuò)展名和文件類型沒(méi)關(guān)系,只是沿用windows的習(xí)慣進(jìn)行易于用戶識(shí)別

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

1 ASCII 純文本文件

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

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

/var/log/wtmp: dat

通過(guò)file命令去判斷普通文件的類型

65 過(guò)濾本路徑下的目錄

ls -l | grep “^d”

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

66 inode存儲(chǔ)的信息,唯獨(dú)不包含文件名

67 ssh工具

windows客戶端和linux服務(wù)器之間傳送工具

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

專業(yè)腳本

#!/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

其實(shí),這不是一個(gè)錯(cuò)誤。而是由于每次重啟?NTP?服務(wù)器之后大約要?3?-?5?分鐘客戶端才能與?server?建立正常的通訊連接。當(dāng)此時(shí)用客戶端連接服務(wù)端就會(huì)報(bào)這樣的信息。一般等待幾分鐘就可以了。

70 ssh 執(zhí)行sudo命令

ssh?執(zhí)行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 選項(xiàng)

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

Connection?to?192.168.100.13?closed.

原理來(lái)源:?查看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

對(duì)這個(gè)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

結(jié)果:

[?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 數(shù)字排序,以-t"." 分列,以-k第三列的(第一個(gè)字符開(kāi)始)到第三列的(最后字符)結(jié)束

在-k 第四列的第一個(gè)字符開(kāi)始到第四列的三個(gè)字符排序?yàn)閗結(jié)束

==???sort?-n?-t"."??-k3,3?-k4 ?雖然結(jié)果一樣但后排序的時(shí)間要長(zhǎng)(因?yàn)?k4 是一默認(rèn)第一個(gè)字符到第四列結(jié)束 這樣就會(huì)包括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的數(shù)組方式進(jìn)行排序統(tǒng)計(jì)

[?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?的統(tǒng)計(jì)數(shù)組

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

庖丁解牛:

S[]????????定義一個(gè)名爲(wèi)S的數(shù)組,在awk中,數(shù)組下飈通常是從1開(kāi)始,而不是0

NF????????當(dāng)前記錄里域個(gè)數(shù),默認(rèn)以空格分隔,如上所示的記錄,NF域個(gè)數(shù)等於1

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

S[$NF]??表示數(shù)組元素的值,如上述表示網(wǎng)站爲(wèi)key的值

++S[$NF]???表示把某個(gè)數(shù)加一,如上訴的記錄是把站點(diǎn)名加一

END?????????awk行處理完執(zhí)行的語(yǔ)句塊

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

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

awk?的統(tǒng)計(jì)數(shù)組

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

庖丁解牛:

S[]????????定義一個(gè)名爲(wèi)S的數(shù)組,在awk中,數(shù)組下飈通常是從1開(kāi)始,而不是0

NF????????當(dāng)前記錄里域個(gè)數(shù),默認(rèn)以空格分隔,如上所示的記錄,NF域個(gè)數(shù)等於1

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

S[$NF]??表示數(shù)組元素的值,如上述表示網(wǎng)站爲(wèi)key的值

++S[$NF]???表示把某個(gè)數(shù)加一,如上訴的記錄是把站點(diǎn)名加一

END?????????awk行處理完執(zhí)行的語(yǔ)句塊

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

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

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

2統(tǒng)計(jì)netstat的tcp 連接狀況的統(tǒng)計(jì)值

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

2???????ESTABLISHED

10??????LISTEN

3 統(tǒng)計(jì)外網(wǎng)的IP地址不論什么狀態(tài)

[?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 文件如果有執(zhí)行權(quán)限是可以tab不全出來(lái)的(目錄是可以不全的,因?yàn)橛袌?zhí)行權(quán)限)

如 /etc/init.d/rsyslog 是可以補(bǔ)全

而 /var/log/mes ?是沒(méi)法不全的

74 bash管道進(jìn)行執(zhí)行

?cat?a.log?|?bash

75 過(guò)濾文件行中后面的幾個(gè)字段

[?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默認(rèn)輸出換行符,而printf默認(rèn)不輸出

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

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

77.sort 的面試題

1 2 3 三個(gè)文件,只用到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 默認(rèn)從下到大排序行

解釋:

-d 顯示有重復(fù)的行

-u 顯示文件中不重復(fù)的行

78 面試題:

打印1到20之間的奇數(shù)

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的請(qǐng)求和響應(yīng)信息

請(qǐng)求:

HTTP請(qǐng)求的格式如下所示:

<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:

響應(yīng):

如下所示,HTTP響應(yīng)的格式與請(qǐng)求的格式十分類似:

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

正如你所見(jiàn),在響應(yīng)中唯一真正的區(qū)別在于第一行中用狀態(tài)信息代替了請(qǐng)求信息。狀態(tài)行(status line)通過(guò)提供一個(gè)狀態(tài)碼來(lái)說(shuō)明所請(qǐng)求的資源情況。以下就是一個(gè)HTTP響應(yīng)的例子:
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的區(qū)別

82 面試題:

假設(shè)Apache產(chǎn)生的日志文件名為access_log,在apache正在運(yùn)行時(shí),執(zhí)行命令mv ?access_log access_log.bak,執(zhí)行完后,請(qǐng)問(wèn)新的apache的日志會(huì)打印到哪里,請(qǐng)選擇下列描述正確的是

解釋:雖然此時(shí)文件被改名,但是由于服務(wù)正在運(yùn)行,因?yàn)樗膇node節(jié)點(diǎn)的位置沒(méi)有變,程序打開(kāi)的fd仍然會(huì)指向原來(lái)那個(gè)inode,不會(huì)因?yàn)槲募母淖兌淖?。apache會(huì)繼續(xù)向已改名的文件中追加日志。

83 tcpdump 抓包 源地址 源端口

-vv

-e ?可顯示mac地址

src 關(guān)鍵字 源ip地址

dst 目標(biāo)地址

dst port 22 目標(biāo)端口

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次斷開(kāi)

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

由于TCP連接是全雙工的,因此每個(gè)方向都必須單獨(dú)進(jìn)行關(guān)閉。這個(gè)原則是當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個(gè)FIN來(lái)終止這個(gè)方向的連接。收到一個(gè) FIN只意味著這一方向上沒(méi)有數(shù)據(jù)流動(dòng),一個(gè)TCP連接在收到一個(gè)FIN后仍能發(fā)送數(shù)據(jù)。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉,而另一方執(zhí)行被動(dòng)關(guān)閉。?
(1)客戶端A發(fā)送一個(gè)FIN,用來(lái)關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送(報(bào)文段4)。?
(2)服務(wù)器B收到這個(gè)FIN,它發(fā)回一個(gè)ACK,確認(rèn)序號(hào)為收到的序號(hào)加1(報(bào)文段5)。和SYN一樣,一個(gè)FIN將占用一個(gè)序號(hào)。?
(3)服務(wù)器B關(guān)閉與客戶端A的連接,發(fā)送一個(gè)FIN給客戶端A(報(bào)文段6)。?
(4)客戶端A發(fā)回ACK報(bào)文確認(rèn),并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1(報(bào)文段7)。?
TCP采用四次揮手關(guān)閉連接如圖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表的數(shù)據(jù)

truncate?table?history;

歷史數(shù)據(jù)保留14天

趨勢(shì)數(shù)據(jù)保留3年

歷史數(shù)據(jù)和趨勢(shì)數(shù)據(jù)的區(qū)別

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

注:

--?清空全部數(shù)據(jù),不寫日志,不可恢復(fù),速度極快

truncate??table??表名;

?

--?清空全部數(shù)據(jù),寫日志,數(shù)據(jù)可恢復(fù),速度慢

delete??from??表名

但是

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

文件卻沒(méi)有被減小或者清空

item 的這個(gè)地方可以優(yōu)化


通過(guò)?housekeeper 進(jìn)程執(zhí)行

如果完全情況history,一天的數(shù)據(jù)會(huì)沒(méi)有,但是趨勢(shì)數(shù)還是有的,趨勢(shì)數(shù)據(jù)好幾天的也會(huì)沒(méi)有

實(shí)驗(yàn)得到的

87: 詳細(xì)說(shuō)明vim 寫文件都磁盤的過(guò)程 面試題(越詳細(xì)越好)

88

wget -q -P directory file

-P: 下載的目錄前綴,默認(rèn)是本目錄

89 獲取序列的方法:---自行體會(huì)

[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

本文名稱:linuxshell總結(jié)歷程
網(wǎng)站鏈接:http://bm7419.com/article6/geipig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、響應(yīng)式網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、企業(yè)建站、服務(wù)器托管

廣告

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

商城網(wǎng)站建設(shè)