Linux知識補充點

完成基礎(chǔ)知識后,多搜索網(wǎng)絡(luò)綜合文檔,整理為我所用

/sed
/模式空間
/awk
seq
split

Network
iptables
selinux

watch
crontab
eval
expr

FTP
SSH


/LVM
/Heartbeat
/Keepalived


/linux服務(wù)器優(yōu)化
/負載均衡

/常用腳本、命令

seq

以指定增量打印數(shù)字序列。

基本用法

seq [選項]... 尾數(shù)
seq [選項]... 首數(shù) 尾數(shù)
seq [選項]... 首數(shù) 增量 尾數(shù)

選項:

-f, --format=格式 使用printf 樣式的浮點格式
-s, --separator=字符串 使用指定字符串分隔數(shù)字(默認使用:\n)
-w, --equal-width 在列前添加0 使得寬度相同

例:

  • 盡可能顯示大整數(shù)

seq --format=%1.f 1000000 1000001

顯示
1000000
1000001

對比,不使用--format的情況,默認使用%g顯示

[plain]
$ seq 1000000 1000001  

顯示
1e+06
1e+06

  • 顯示等寬數(shù)字,位數(shù)不足用前導0補齊

seq -w -s ' ' 0 10

顯示
00 01 02 03 04 05 06 07 08 09 10

注:-s用于改變字數(shù)間的分隔符,-w用以保證等寬顯示。

split

切割文件

split [--help][--version][-<行數(shù)>][-b <字節(jié)>][-C <字節(jié)>][-l <行數(shù)>][要切割的文件][輸出文件名]

參數(shù):

-<行數(shù)>或-l<行數(shù)>  指定每多少行就要切成一個小文件。

-b<字節(jié)>  指定每多少字就要切成一個小文件。支持單位:m,k

-C<字節(jié)>  與-b參數(shù)類似,但切割時盡量維持每行的完整性。

--help  顯示幫助。

--version  顯示版本信息。

[輸出文件名]  設(shè)置切割后文件的前置文件名,split會自動在前置文件名后再加上編號。

說明:
split可將文件切成較小的文件,預設(shè)每1000行會切成一個小文件。

使用例子:

split -b 100m 1111.log (按照字節(jié)分隔)
split -l 1000000 1111.log(按照行數(shù)分隔)

eval

eval cmd

eval對cmd兩遍掃描,如第一遍掃描后,cmdLine是普通命令,則執(zhí)行;如cmdLine含變量間接引用,則保證間接引用語義。

舉例如下:

set 11 22 33 44

如要輸出最近一參數(shù),即44,使用:

echo $4

但如我們不知道幾個參數(shù),要輸出最后一個,使用$#來輸出最后一個參數(shù):

echo "\$$#"

結(jié)果$4,
非44。

使用eval:

eval echo "\$$#"

結(jié)果為44

expr

求表達式變量的值,一般用于整數(shù)值,也可用于字符串。

字串長度

# expr length "this is a test" 
14 

數(shù)字求商數(shù)

# expr 14 % 9 
5

從位置處抓取字串

# expr substr "this is a test" 3 5 
is is 

數(shù)字串only the first character

# expr index "testforthegame" e 
2 

字串真實重現(xiàn)

# expr quote thisisatestformela 
thisisatestformela

selinux

查看SELinux狀態(tài):

1、sestatus -v       #如果SELinux status參數(shù)為enabled即為開啟狀態(tài)

2、getenforce                 ##也可以用這個命令檢查

關(guān)閉SELinux:

1、臨時關(guān)閉(不用重啟機器):
setenforce 0                  ##設(shè)置SELinux 成為permissive模式
                              ##setenforce 1 設(shè)置SELinux 成為enforcing模式

2、修改配置文件需要重啟機器:
修改/etc/selinux/config,將SELINUX=enforcing改為SELINUX=disabled

重啟

watch

命令格式:

watch[參數(shù)][命令]

命令功能:

將命令的輸出結(jié)果輸出到標準輸出設(shè)備,多用于周期性執(zhí)行命令/定時執(zhí)行命令

命令參數(shù):

-n或--interval   缺省每2秒運行一下程序,可用-n或-interval來指定間隔的時間
-d或--differences    高亮顯示變化的區(qū)域 
-d=cumulative  把變動過的地方(不管最近的那次有沒有變動)都高亮顯示出來
-t 或-no-title  會關(guān)閉watch命令在頂部的時間間隔,命令,當前時間的輸出
-h, --help 查看幫助文檔

使用實例:

實例1:每隔一秒高亮顯示網(wǎng)絡(luò)鏈接數(shù)的變化情況

watch -n 1 -d netstat -ant

其它操作:
切換終端: Ctrl+x
退出watch:Ctrl+g

實例2:每隔一秒高亮顯示http鏈接數(shù)的變化情況

watch -n 1 -d 'pstree|grep http'

每隔一秒高亮顯示http鏈接數(shù)的變化情況。 后面接的命令若帶有管道符,需要加''將命令區(qū)域歸整。

實例3:實時查看模擬攻擊客戶機建立起來的連接數(shù)

watch 'netstat -an | grep:21 | \ grep<模擬攻擊客戶機的IP>| wc -l' 

實例4:監(jiān)測當前目錄中 scf' 的文件的變化

watch -d 'ls -l|grep scf' 

實例5:10秒一次輸出系統(tǒng)的平均負載

watch -n 10 'cat /proc/loadavg'

crontab

crontab [-u username] [-l|-e|-r]

選項:

-u  :只有 root 才能進行這個任務(wù),亦即幫其他使用者創(chuàng)建/移除 crontab 工作排程;
-e  :編輯 crontab 的工作內(nèi)容
-l  :查閱 crontab 的工作內(nèi)容
-r  :移除所有的 crontab 的工作內(nèi)容,若僅要移除一項,請用 -e 去編輯

cron文件語法

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 每個小時的第幾分鐘執(zhí)行該任務(wù) 
Hour 每天的第幾個小時執(zhí)行該任務(wù) 
Day 每月的第幾天執(zhí)行該任務(wù) 
Month 每年的第幾個月執(zhí)行該任務(wù) 
DayOfWeek 每周的第幾天執(zhí)行該任務(wù),0表示周日
Command 指定要執(zhí)行的程序 、腳本或命令

Command必須,其它可選。不指定字段,用*填補。

幾個特殊符號的含義

*代表取值范圍內(nèi)的數(shù)字, 
/代表”每”, 
-代表從某個數(shù)字到某個數(shù)字, 
,分開幾個離散的數(shù)字

關(guān)于cron配置文件/etc/crontab

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 任務(wù)運行環(huán)境變量:

SHELL--指定shell 環(huán)境(默認bash shell)
PATH --執(zhí)行命令的程序路徑
MAILTO--cron任務(wù)的輸出郵件給變量定義的用戶名,空串(MAILTO="")不寄;
HOME --執(zhí)行命令或腳本的主目錄

若cron 任務(wù)需要根據(jù)調(diào)度來執(zhí)行,而不是每小時、每日、每周、或每月地執(zhí)行,它可被添加到/etc/cron.d目錄。
該目錄中的所有文件使用和 /etc/crontab 中一樣的語法。

編輯完cron設(shè)置,在/var/spool/cron生成一與用戶同名文件,不可直接編輯,只可用crontab -e 編輯。

cron啟動后每一分鐘讀該文件,檢查是否要執(zhí)行里面的命令。

常見cron示例參考

5  * * * * ls 指定每小時的第5分鐘執(zhí)行一次ls命令

30 5 * * * ls 指定每天的 5:30 執(zhí)行l(wèi)s命令 

30 7 8 * * ls 指定每月8號的7:30分執(zhí)行l(wèi)s命令

30 5 8 6 * ls 指定每年的6月8日5:30執(zhí)行l(wèi)s命令 

30 6 * * 0 ls 指定每星期日6:30執(zhí)行l(wèi)s命令
[注:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。] 

30 3 10,20 * * ls 每月10號及20號的3:30執(zhí)行l(wèi)s命令[注:“,”用來連接多個不連續(xù)的時段] 

25 8-11 * * * ls 每天8-11點的第25分鐘執(zhí)行l(wèi)s命令[注:“-”用來連接連續(xù)的時段] 

*/15 * * * * ls 每15分鐘執(zhí)行一次ls命令 [即每個小時的第0 15 30 45 60分鐘執(zhí)行l(wèi)s命令 ] 

30 6 */10 * * ls 每個月中,每隔10天6:30執(zhí)行一次ls命令[即每月1、11、21、31日是的6:30執(zhí)行一次ls命令 ]

每天7:50以root 身份執(zhí)行/etc/cron.daily目錄中的所有可執(zhí)行文件

50 7 * *  * root run-parts  /etc/cron.daily [ 注:run-parts參數(shù)表示,執(zhí)行后面目錄中的所有可執(zhí)行文件

第10、20、30分鐘輸出到/tmp/cron1.txt:

10,20,30 * * * * echo "第10、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、將腳本改成可執(zhí)行
chmod +x filename

SSH

SSH為Secure Shell的縮寫,為創(chuàng)建在應用層和傳輸層基礎(chǔ)上的安全協(xié)議。

基本功能:

連接到遠程主機:

ssh name@remoteserver
或
ssh remoteserver -l name

說明:server代表遠程主機,name為登錄遠程主機用戶名。

連接到遠程主機指定的端口:

ssh name@remoteserver -p 2222
或
ssh remoteserver -l name –p 2222

說明:
p 參數(shù)指定端口號
通常在路由里做端口映射時,我們不會把22端口直接映射出去,而是轉(zhuǎn)換成其他端口號,這時就需要使用-p 端口號命令格式。

通過遠程主機1跳到遠程主機2:

ssh -t remoteserver1 ssh remoteserver2

說明:
當remoteserver2無法直達,可使用-t參數(shù),然后由remoteserver1跳轉(zhuǎn)到remoteserver2。

通過SSH運行遠程shell命令:

ssh -l name remoteserver ‘command’

說明:
連接到遠程主機,并執(zhí)行遠程主機的command命令。

例如:查看遠程主機的內(nèi)存使用情況。

修改SSH監(jiān)聽端口

默認SSH監(jiān)聽端口22,攻擊者使用端口掃描軟件就可以看到主機是否運行有SSH服務(wù).

將SSH端口修改為大于1024的端口是一個明智的選擇.

因大多數(shù)端口掃描軟件(包括nmap)默認情況都不掃描高位端口。打開/etc/ssh/sshd_config文件并查找下面這樣的行:

Port  22

去掉該行前面的# 號,然后修改端口號并重新啟動SSH服務(wù):

$ /etc/init.d/ssh restart

僅允許SSH協(xié)議版本2

兩個SSH協(xié)議版本,僅使用SSH協(xié)議版本2會更安全,SSH協(xié)議版本1有安全問題,包括中間人攻擊(man-in-the-middle)和注入(insertion)攻擊。

編輯/etc/ssh/sshd_config文件并查找下面這樣的行:

# Protocol 2,1

修改為:
Protocol 2

禁止root用戶登錄:

通常情況下,不采用直接用root用戶登錄到遠程主機,由于root用戶擁有超級權(quán)限,這樣會帶來安全隱患,所以,一般我們用普通用戶登錄,當需要管理遠程主機時,再切換到root用戶下。

打開/etc/ssh/sshd_config文件并查找下面這樣的行:

#PermitRootLogin yes

將#號去掉,然后將yes修改成no,重啟ssh服務(wù),這樣就可以禁止root用戶登錄。

設(shè)置登錄時提示信息

首先編輯一個文件,如bannertest.txt,文件內(nèi)容自行定義。然后打開/etc/ssh/sshd_config文件并查找下面這樣的行:

#Banner /some/path

將#號去掉,然后將bannertest.txt文件的全路徑替換/some/path,然后保存,重啟ssh服務(wù)。當客戶端登錄時,就會看到bannertest.txt文件中的提示信息。

scp命令

在兩臺服務(wù)器之間傳送文件。傳輸過程中仍使用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

1. 連接ftp服務(wù)器

ftp [hostname| ip-address]

a)在Linux命令行下輸入:
ftp 192.168.1.1

b)服務(wù)器詢問你用戶名和密碼,分別輸入用戶名和相應密碼,待認證通過即可。

2. 下載文件

get和mget。

get

將文件從遠端主機中傳送至本地主機中:

get [remote-file] [local-file]

如要獲取遠程服務(wù)器上/usr/your/1.htm,則

ftp> get /usr/your/1.htm 1.htm (回車)

mget

遠端主機接收一批文件至本地主機:

mget [remote-files]

如要獲取服務(wù)器上/usr/your/下的所有文件,則

ftp> cd /usr/your/
ftp> mget *.* (回車)

此時每下載一個文件,都會有提示。如果要除掉提示,則在mget . 命令前先執(zhí)行:prompt off

注意:文件都下載到了linux主機的當前目錄下。比如,在 /usr/my下運行的ftp命令,則文件都下載到了/usr/my下。

3.上傳文件

put

將本地一個文件傳送至遠端主機中

put local-file [remote-file]

如要把本地的1.htm傳送到遠端主機/usr/your,并改名為2.htm

ftp> put 1.htm /usr/your/2.htm (回車)

mput

將本地主機中一批文件傳送至遠端主機。

mput local-files

如要把本地當前目錄下所有html文件上傳到服務(wù)器/usr/your/ 下

ftp> cd /usr/your (回車)
ftp> mput *.htm?。ɑ剀嚕?

注意:上傳文件都來自于主機的當前目錄下。比如,在 /usr/my下運行的ftp命令,則只有在/usr/my下的文件linux才會上傳到服務(wù)器/usr/your 下。

4. 斷開連接

bye:中斷與服務(wù)器的連接。

ftp> bye (回車)

模式空間

sed之所以能以行為單位的編輯或修改,原因在于它使用了兩個空間:

活動的“模式空間(pattern space)”
起輔助作用的“暫存緩沖區(qū)(holdingspace)

Linux服務(wù)器優(yōu)化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容