完成基礎知識後,多搜索網絡綜合文檔,整理爲我所用html
/sed /模式空間 /awk seq split Network iptables selinux watch crontab eval expr FTP SSH /LVM /Heartbeat /Keepalived /linux服務器優化 /負載均衡 /經常使用腳本、命令
以指定增量打印數字序列。linux
基本用法shell
seq [選項]... 尾數 seq [選項]... 首數 尾數 seq [選項]... 首數 增量 尾數
選項:安全
-f, --format=格式 使用printf 樣式的浮點格式 -s, --separator=字符串 使用指定字符串分隔數字(默認使用:\n) -w, --equal-width 在列前添加0 使得寬度相同
例:bash
seq --format=%1.f 1000000 1000001
服務器
顯示
1000000
1000001網絡
對比,不使用--format的狀況,默認使用%g顯示負載均衡
[plain] $ seq 1000000 1000001
顯示
1e+06
1e+06ssh
seq -w -s ' ' 0 10
優化
顯示
00 01 02 03 04 05 06 07 08 09 10
注:-s用於改變字數間的分隔符,-w用以保證等寬顯示。
切割文件
split [--help][--version][-<行數>][-b <字節>][-C <字節>][-l <行數>][要切割的文件][輸出文件名]
參數:
-<行數>或-l<行數> 指定每多少行就要切成一個小文件。
-b <字節> 指定每多少字就要切成一個小文件。支持單位:m,k
-C <字節> 與-b參數相似,但切割時儘可能維持每行的完整性。
--help 顯示幫助。
--version 顯示版本信息。
[輸出文件名] 設置切割後文件的前置文件名,split會自動在前置文件名後再加上編號。
說明:
split可將文件切成較小的文件,預設每1000行會切成一個小文件。
使用例子:
split -b 100m 1111.log (按照字節分隔) split -l 1000000 1111.log(按照行數分隔)
eval cmd
eval對cmd兩遍掃描,如第一遍掃描後,cmdLine是普通命令,則執行;如cmdLine含變量間接引用,則保證間接引用語義。
舉例以下:
set 11 22 33 44
如要輸出最近一參數,即44,使用:
echo $4
但如咱們不知道幾個參數,要輸出最後一個,使用$#來輸出最後一個參數:
echo "\$$#"
結果$4,
非44。
使用eval:
eval echo "\$$#"
結果爲44
求表達式變量的值,通常用於整數值,也可用於字符串。
字串長度
# expr length "this is a test" 14
數字求商數
# expr 14 % 9 5
從位置處抓取字串
# expr substr "this is a test" 3 5 is is
數字串only the first character
# expr index "testforthegame" e 2
字串真實重現
# expr quote thisisatestformela thisisatestformela
查看SELinux狀態:
一、sestatus -v #若是SELinux status參數爲enabled即爲開啓狀態 二、getenforce ##也能夠用這個命令檢查
關閉SELinux:
一、臨時關閉(不用重啓機器): setenforce 0 ##設置SELinux 成爲permissive模式 ##setenforce 1 設置SELinux 成爲enforcing模式 二、修改配置文件須要重啓機器: 修改/etc/selinux/config,將SELINUX=enforcing改成SELINUX=disabled 重啓
watch[參數][命令]
將命令的輸出結果輸出到標準輸出設備,多用於週期性執行命令/定時執行命令
-n或--interval 缺省每2秒運行一下程序,可用-n或-interval來指定間隔的時間 -d或--differences 高亮顯示變化的區域 -d=cumulative 把變更過的地方(無論最近的那次有沒有變更)都高亮顯示出來 -t 或-no-title 會關閉watch命令在頂部的時間間隔,命令,當前時間的輸出 -h, --help 查看幫助文檔
實例1:每隔一秒高亮顯示網絡連接數的變化狀況
watch -n 1 -d netstat -ant 其它操做: 切換終端: Ctrl+x 退出watch:Ctrl+g
實例2:每隔一秒高亮顯示http連接數的變化狀況
watch -n 1 -d 'pstree|grep http' 每隔一秒高亮顯示http連接數的變化狀況。 後面接的命令若帶有管道符,須要加''將命令區域歸整。
實例3:實時查看模擬攻擊客戶機創建起來的鏈接數
watch 'netstat -an | grep:21 | \ grep<模擬攻擊客戶機的IP>| wc -l'
實例4:監測當前目錄中 scf' 的文件的變化
watch -d 'ls -l|grep scf'
實例5:10秒一次輸出系統的平均負載
watch -n 10 'cat /proc/loadavg'
crontab [-u username] [-l|-e|-r]
選項:
-u :只有 root 才能進行這個任務,亦即幫其餘使用者建立/移除 crontab 工做排程; -e :編輯 crontab 的工做內容 -l :查閱 crontab 的工做內容 -r :移除全部的 crontab 的工做內容,若僅要移除一項,請用 -e 去編輯
crontab -e命令編輯/var/spool/cron對應用戶cron文件,也可修改/etc/crontab文件。
Minute Hour Day Month Week command 分鐘 小時 天 月 星期 命令 0-59 0-23 1-31 1-12 0-6 command
Minute 每一個小時的第幾分鐘執行該任務 Hour 天天的第幾個小時執行該任務 Day 每個月的第幾天執行該任務 Month 每一年的第幾個月執行該任務 DayOfWeek 每週的第幾天執行該任務,0表示週日 Command 指定要執行的程序 、腳本或命令
Command必須,其它可選。不指定字段,用*填補。
*表明取值範圍內的數字, /表明」每」, -表明從某個數字到某個數字, ,分開幾個離散的數字
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
前四行配置 cron 任務運行環境變量:
SHELL--指定shell 環境(默認bash shell) PATH --執行命令的程序路徑 MAILTO--cron任務的輸出郵件給變量定義的用戶名,空串(MAILTO="")不寄; HOME --執行命令或腳本的主目錄
若cron 任務須要根據調度來執行,而不是每小時、每日、每週、或每個月地執行,它可被添加到/etc/cron.d目錄。
該目錄中的全部文件使用和 /etc/crontab 中同樣的語法。
編輯完cron設置,在/var/spool/cron生成一與用戶同名文件,不可直接編輯,只可用crontab -e 編輯。
cron啓動後每一分鐘讀該文件,檢查是否要執行裏面的命令。
5 * * * * ls 指定每小時的第5分鐘執行一次ls命令 30 5 * * * ls 指定天天的 5:30 執行ls命令 30 7 8 * * ls 指定每個月8號的7:30分執行ls命令 30 5 8 6 * ls 指定每一年的6月8日5:30執行ls命令 30 6 * * 0 ls 指定每星期日6:30執行ls命令 [注:0表示星期天,1表示星期1,以此類推,也能夠用英文來表示,sun表示星期天,mon表示星期一等。] 30 3 10,20 * * ls 每個月10號及20號的3:30執行ls命令[注:「,」用來鏈接多個不連續的時段] 25 8-11 * * * ls 天天8-11點的第25分鐘執行ls命令[注:「-」用來鏈接連續的時段] */15 * * * * ls 每15分鐘執行一次ls命令 [即每一個小時的第0 15 30 45 60分鐘執行ls命令 ] 30 6 */10 * * ls 每月中,每隔10天6:30執行一次ls命令[即每個月一、十一、2一、31日是的6:30執行一次ls命令 ]
天天7:50以root 身份執行/etc/cron.daily目錄中的全部可執行文件
50 7 * * * root run-parts /etc/cron.daily [ 注:run-parts參數表示,執行後面目錄中的全部可執行文件
第十、20、30分鐘輸出到/tmp/cron1.txt:
10,20,30 * * * * echo "第十、20、30分鐘輸出一次" >> /tmp/cron1.txt
以用戶lzw.me的身份每兩小時就運行某個程序:
0 */2 * * * lzw.me /usr/bin/somecommand >> /dev/null 2>&1
A、cron配置文件路徑 #vi /etc/crontab B、重啓cron的方法 #/etc/rc.d/init.d/crond restart Usage: /etc/rc.d/init.d/crond {start|stop|status|reload|restart|condrestart} C、將腳本改爲可執行 chmod +x filename
SSH爲Secure Shell的縮寫,爲建立在應用層和傳輸層基礎上的安全協議。
基本功能:
ssh name@remoteserver 或 ssh remoteserver -l name
說明:server表明遠程主機,name爲登陸遠程主機用戶名。
ssh name@remoteserver -p 2222 或 ssh remoteserver -l name –p 2222
說明:
p 參數指定端口號
一般在路由裏作端口映射時,咱們不會把22端口直接映射出去,而是轉換成其餘端口號,這時就須要使用-p 端口號命令格式。
ssh -t remoteserver1 ssh remoteserver2
說明:
當remoteserver2沒法直達,可以使用-t參數,而後由remoteserver1跳轉到remoteserver2。
ssh -l name remoteserver ‘command’
說明:
鏈接到遠程主機,並執行遠程主機的command命令。
例如:查看遠程主機的內存使用狀況。
默認SSH監聽端口22,攻擊者使用端口掃描軟件就能夠看到主機是否運行有SSH服務.
將SSH端口修改成大於1024的端口是一個明智的選擇.
因大多數端口掃描軟件(包括nmap)默認狀況都不掃描高位端口。打開/etc/ssh/sshd_config文件並查找下面這樣的行:
Port 22
去掉該行前面的# 號,而後修改端口號並從新啓動SSH服務:
$ /etc/init.d/ssh restart
兩個SSH協議版本,僅使用SSH協議版本2會更安全,SSH協議版本1有安全問題,包括中間人攻擊(man-in-the-middle)和注入(insertion)攻擊。
編輯/etc/ssh/sshd_config文件並查找下面這樣的行:
# Protocol 2,1
修改成:
Protocol 2
一般狀況下,不採用直接用root用戶登陸到遠程主機,因爲root用戶擁有超級權限,這樣會帶來安全隱患,因此,通常咱們用普通用戶登陸,當須要管理遠程主機時,再切換到root用戶下。
打開/etc/ssh/sshd_config文件並查找下面這樣的行:
#PermitRootLogin yes
將#號去掉,而後將yes修改爲no,重啓ssh服務,這樣就能夠禁止root用戶登陸。
首先編輯一個文件,如bannertest.txt,文件內容自行定義。而後打開/etc/ssh/sshd_config文件並查找下面這樣的行:
#Banner /some/path
將#號去掉,而後將bannertest.txt文件的全路徑替換/some/path,而後保存,重啓ssh服務。當客戶端登陸時,就會看到bannertest.txt文件中的提示信息。
在兩臺服務器之間傳送文件。傳輸過程當中仍使用ssh加密。
將遠程主機的/tmp/test 文件複製到本地的/bak文件夾下
scp -p root@192.168.1.120:/tmp/test /bak
將本地/bak/1234 文件複製到遠程主機的/tmp路徑下
scp -p /bak/1234 root@192.168.1.120:/tmp
ftp [hostname| ip-address]
a)在Linux命令行下輸入:
ftp 192.168.1.1b)服務器詢問你用戶名和密碼,分別輸入用戶名和相應密碼,待認證經過便可。
get和mget。
將文件從遠端主機中傳送至本地主機中:
get [remote-file] [local-file]
如要獲取遠程服務器上/usr/your/1.htm,則
ftp> get /usr/your/1.htm 1.htm (回車)
遠端主機接收一批文件至本地主機:
mget [remote-files]
如要獲取服務器上/usr/your/下的全部文件,則
ftp> cd /usr/your/ ftp> mget *.* (回車)
此時每下載一個文件,都會有提示。若是要除掉提示,則在mget . 命令前先執行:prompt off
注意:文件都下載到了linux主機的當前目錄下。好比,在 /usr/my下運行的ftp命令,則文件都下載到了/usr/my下。
將本地一個文件傳送至遠端主機中
put local-file [remote-file]
如要把本地的1.htm傳送到遠端主機/usr/your,並更名爲2.htm
ftp> put 1.htm /usr/your/2.htm (回車)
將本地主機中一批文件傳送至遠端主機。
mput local-files
如要把本地當前目錄下全部html文件上傳到服務器/usr/your/ 下
ftp> cd /usr/your (回車) ftp> mput *.htm (回車)
注意:上傳文件都來自於主機的當前目錄下。好比,在 /usr/my下運行的ftp命令,則只有在/usr/my下的文件linux纔會上傳到服務器/usr/your 下。
bye:中斷與服務器的鏈接。
ftp> bye (回車)
sed之因此能以行爲單位的編輯或修改,緣由在於它使用了兩個空間:
活動的「模式空間(pattern space)」 起輔助做用的「暫存緩衝區(holdingspace)