主頁 >  其他 > 運維面試題(每日一題)

運維面試題(每日一題)

2020-09-15 18:08:17 其他

每日一題

  • 第一周
    • 1、添加路由
    • 2、如何防止Linux命令列或腳本里MySQL登錄密碼泄露?
    • 3、將前端運行的服務或腳本,如何可以放置到后端進行執行
    • 4、linux網路配置中如何給一塊網卡添加多個IP地址
    • 5、查找占用記憶體的前3名行程
    • 6、如何將本地80埠的請求轉發到8080埠,當前主機IP為192.168.133.126
    • 7、簡述DNS進行域名決議的程序?
  • 第二周
    • 1、行程與執行緒
    • 2、將一個文本的奇數行和偶數行合并
    • 3、游標
    • 4、累計相加
    • 5、軟硬鏈接
    • 6、陣列統計
    • 7、Linux啟動流程
  • 第三周
    • 1、創建一個dir_xyz目錄,讓該組成員都能在該目錄下創建或訪問檔案,但是除了檔案創建者之外的其他人不能洗掉檔案,你會怎么做?
    • 2、cut命令
    • 3、多種查看eth0地址資訊
    • 4、統計linux系統的history歷史記錄,得出前10最喜歡的
    • 5、Linux中查看系統已經登錄用戶的命令
    • 6、查找出/tmp目錄下面修改時間是7天以前,大小在50k到2M之間,并以.log結尾的檔案
    • 7、查找出/tmp目錄下面修改時間是7天以前,大小在50k到2M之間,并以.log結尾的檔案,把這些檔案復制到/data目錄中
  • 第四周
    • 1、登錄環境故障-bash-4.1的原因及解決辦法
    • 2、如何洗掉多個檔案中包含的空格或其他特殊字符,怎么做
    • 3、CPU使用率超過80%或硬碟超過85%郵件報警
    • 4、監控學校的網路出口正常性,需要寫一個腳本,作業系統每30秒鐘訪問百度首頁,如果能夠正常打開則記錄正常日志,如果出現例外則發郵件報警,
    • 5、如何快速洗掉Linux中海量小檔案
    • 6、如何統計腳本執行的時間?
    • 7、通過訪問日志access.log統計的IP和每個地址訪問的次數
  • 第五周
    • 1、如何正確清理MySQL binlog
    • 2、開機自啟
    • 3、使用檔案的訪問控制串列功能來授權root用戶有x權限
    • 4、把test.txt檔案里面所有字母都轉換成大寫
    • 5、設定一條Iptables規則,允許192.168.10.0段訪問873埠
    • 6、vim命令粘貼帶#號或注釋資訊格式會出現混亂情況,有什么方法進行解決?
    • 7、使用find命令的時候 |xargs(管道xargs)與-exec有什么區別?
  • 第六周
    • 1、變數a='a/b/c'如何截取得到c
    • 2、一個100M的磁盤磁區,寫入0.5K的檔案,或寫入1M的檔案,分別可以寫多少個?為什么?
    • 3、請描述下面列出的 http 狀態碼的含義
    • 4、Linux root 密碼忘了,如何找回來?
    • 5、怎么才能在輸入IP后找到/etc/hosts里對應的唯一的hostname?
    • 6、使用命令調換 /etc/passwd 檔案里所有的第一列和最后一列位置
    • 7、統計/var/log/下所有檔案個數
  • 第七周
    • 1、題目:批量添加20個用戶,用戶名為user1~20,密碼為5個隨機字符(要求不能使用shell回圈陳述句)
    • 2、如何過濾出已知當前目錄下home中的所有一級目錄(提示:不包含home目錄下面目錄的子目錄及隱藏目錄,即只能是一級目錄)?
    • 3、只能保留最近 7 天的訪問日志
    • 4、列印行號及內容
    • 5、系統運行級別
    • 6、如何優化Linux系統
    • 7、解壓壓縮
  • 第八周
    • 1、過濾字串 I am kolor, myqq is 3302 ,過濾出kolor和3302
    • 2、查看/etc/services 檔案內容有多少行?
    • 3、過濾出/etc/services 檔案包含 3306 或 1521 兩資料庫埠的行的內容,
    • 4、描述 linux 系統從開機到登陸界面的啟動程序
    • 5、如何取得/kolor 檔案的權限對應的數字內容,如-rw-r–r– 為 644, 要求使用命令取得644 這樣的數字,
    • 6、顯示指定行內容
    • 7、查找當前目錄下所有檔案,并把檔案中的 www.baidu.com 字串替換成 www.abc.cc
  • 第九周
    • 1、sudo su 和 su
    • 2、如何把檔案中的空行過濾掉
    • 3、查看命令路徑
    • 4、查看哪些用戶在線的linux命令
    • 5、關機重啟注銷
    • 6、分時日月周crontab
    • 7、下列路徑的內容
  • 第十周
    • 1、如何查看用戶的 uid 及屬于的組資訊,
    • 2、添加一個用戶kolor,并指定屬于 sa 組,要求組 ID 為 801, uid 為 808,并且不建立家目錄及禁止其登陸,
    • 3、mysql主從原理?主從不同步怎么辦?主從慢,差的多咋辦?
    • 4、mount永久掛載
    • 5、列印一個目錄下所有包含字串A的行
    • 6、iptables
    • ★7、頁面無法訪問排查思路
  • 第十一周
    • 2.取出/tmp目錄下面的10個檔案的第一行
    • 3.通過Iptables來限定apache每秒鐘連接數為1,峰值為3
    • 4.假設Apache 產生的日志檔案名為access_log,在apache 正在運行時,執行命令mv access_log access_log.bak,執行完后,請問新的apache 的日志會列印到哪里,為什么?
    • 5.實作172.16.1.0/24段所有主機通過124.32.54.26外網IP共享上網
  • 第十二周
    • 1.優化shell腳本
    • 2.如何讓linux也像windows那樣有一個回收站,避免資料的誤洗掉,進而恢復誤刪資料?
    • 3.基礎娛樂命令:像幻燈片一樣播放每個字符
    • 4.批量重命名,檔案批量重命名為 00.jpg …..10.jpg
    • 5./etc/profile /etc/bashrc .bashrc .bash_profile的區別
    • 6.如何修改主機名
  • 第十三周
    • 1.命令風暴:列印出001 002 003 這樣的格式的數字
    • 2.如何實作 Nginx 代理的節點訪問日志記錄客戶的 IP 而不是代理的 IP?
    • 3.?IDC 機房帶寬突然從平時 100M 增加到 400M,請你分析問題所在并解決
    • 4.發現檔案系統只讀了,是什么原因?如何解決?
    • 5.binlog是什么?記錄的什么?有幾種作業模式及企業應用場景
  • 第十四周
    • 1.兩個檔案,把第一個檔案中的第2、3行內容添加到第二個檔案的第3行后面
    • 2.腳本直接執行沒有問題,在定時任務中有問題,什么原因?
    • 3.nfs客戶端掛載資訊寫入/etc/fstab中,系統重啟,沒有自動掛載是什么原因?
    • 4.Nginx需要優化哪些內容?
    • 5.企業生產MySQL如何優化?
  • 第十五周
    • 2.對輸入的腳本檔案進行語法檢查;如果有錯誤,則提醒用戶鍵入Q或者q無視錯誤并退出,其它任何鍵可以通過vim打開這個指定的腳本;
    • 3.根據要求寫出itpables防火墻規則
    • 4.顯示出列印第二列為kolor行的第一列內內容
    • 5.權限拒絕 常見的permission denied 原因
  • 第十六周
    • 3.網路并發,并發與架構設計基礎知識
    • 4.虛擬機使用知識點: vmware centos7虛擬機克隆系統如何修改網卡設定?
    • 5.?shell知識點:shell腳本中字串截取
  • 第十七周
  • 第十八周
  • 第十九周

第一周

1、添加路由

在這里插入圖片描述
默認生產環境中,三臺服務器均可滿足訪問外網需求;但最終目標是完成服務器01與服務器03之間的不同網段間通訊,即服務器01的10.0.0.10主機IP地址可以正常訪問服務器03的10.0.1.10主機IP地址

vmnet8虛擬網配置項:

  • 選中【NAT模式與虛擬機共享主機的IP地址】
  • 選中【將主機虛擬配接器連接到此網路】
  • 子網IP【10.0.0.0】;子網掩碼【255.255.255.0】

vmnet1虛擬網配置項:

  • 選中【僅主機模式在專用網路內連接虛擬主機】
  • 選中【將主機虛擬配接器連接到此網路】
  • 子網IP【10.0.1.0】;子網掩碼【255.255.255.0】

在這里插入圖片描述

route -n  列印主機路由表條目資訊

服務器01上配置網路路由條目
route add -net 10.0.1.0 netmask 255.255.255.0 gw 10.0.0.11

服務器03上配置網路路由條目
route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.1.11

配置開啟主機路由轉發功能
服務器02主機在拓撲中負責進行路由轉發,需要開啟相應配置引數
# vim /etc/sysctl.conf
net.ipv4.ip_forward= 1
# sysctl -p

服務器主機02起到路由轉發功能,類似于路由器的角色,因此服務器上防火墻功能需要關閉,否則防火墻相應條目會阻止掉路由轉發流量

補充:
添加到某主機的路由
route add -host 10.0.1.10 gw 10.0.1.11
添加默認路由
route add default gw 10.0.0.11

添加永久路由
方法1:在/etc/rc.local里添加執行命令文本內容
route add -host 10.0.1.10 gw 10.0.1.11
該方法注意點:需要/etc/rc.local具有開機執行權限,該方法的缺陷是在/etc/init.d/network服務重啟后添加的路由會消失

方法2:增加檔案,并寫入如下需要添加的路由資訊:vim /etc/sysconfig/static-routes

any net 220.181.9.0/24 gw 192.168.72.2
any host 220.181.9.2 gw 192.168.72.2

該方法的原理為:/etc/init.d/network在啟動時,會呼叫執行/etc/sysconfig/static-routes檔案內容
此方法的優點是:即使/etc/init.d/network服務重啟,路由表資訊也不會丟失,

2、如何防止Linux命令列或腳本里MySQL登錄密碼泄露?

①可以通過如下環境變數強制Linux不記錄敏感歷史命令
在命令列執行HISTCONTROL=ignorespace后,再輸入帶密碼的命令的前面加一個空格登錄,登錄命令不會被記錄到歷史記錄里,

[root@kolor ~]# HISTCONTROL=ignorespace 
表示忽略以空白字符開頭的命令,
這里是臨時生效,要想永久生效,請放入/etc/bashrc,
[root@kolor ~]#  mysql -uroot -p'123'

②操作完敏感的命令后可以及時洗掉命令列記錄
執行“history -d 歷史命令序號” 清除指定歷史記錄命令
[root@kolor~]# history -d 252

執行“history -c”清除所有所有記錄
[root@kolor~]# history -c

③給帶密碼的啟動腳本以及備份腳本等加700權限,用戶和組改為root,

④把密碼寫入my.cnf組態檔并加700權限,用戶和組改為mysql,

<==組態檔開頭添加如下三行,無需重啟系統,
[client]    #<==客戶端模塊標簽,
user=root      #<==用戶引數及密碼,
password=123   #<==密碼引數及密碼,

[root@kolor ~]# mysql
#<==此時登錄資料庫就不用輸入密碼了,

3、將前端運行的服務或腳本,如何可以放置到后端進行執行

方法一:可以利用screen命令進行后臺運行(yum -y install screen)
在命令列執行screen 回車,進入一個隨機的screen后臺,可以輸入命令,然后按ctrl +a+d保存退出即可,這時程式已經在后臺運行,
screen ls可以查看當前運行screen后臺串列,執行screen r 加PID可以進入相應的后臺,再次退出還需要按ctrl+a+d
如何想要洗掉screen,需要執行kill -9 3215(screen ls查看到的腳本后臺行程號),然后執行screen -wipe 即可洗掉,

方法二:可以利用nohup命令進行后臺運行:
即程式已經在后臺運行,可以在當前目錄查看tail -fn 10 nohup.out可以看到程式執行的相關資訊,如果需要結束就直接kill 行程就OK,
-f 持續讀取
-n<行數> 顯示檔案的尾部 n 行內容
nohup command &

方法三:ctrl +z 注意這是讓當前運行的腳本到后臺,然后"暫停".運行,

  • 通過jobs管理后臺程式
  • 讓暫停的程式繼續在后臺運行,使用bg命令(background).
  • 讓后臺程式恢復前臺運行,使用fg命令,

4、linux網路配置中如何給一塊網卡添加多個IP地址

子網卡(別名)
①手工配置別名的VIP的方法

ifconfig eth0:1 10.0.0.100 netmask 255.255.255.224 up
route add -host 10.0.0.100 dev eth0        
###---增加一條主機路由,可選配置

②手工查看 ifconfig
③手工洗掉別名VIP的方法

ifconfig eth0:1 10.0.0.100 netmask 255.255.255.224 down
ifconfig eth0:1 down

④別名IP永久生效的方法
寫入到網卡組態檔可讓別名IP永久生效,名字可以為ifcfg-eth0:x,x為0-255的任意數字,IP等內容格式和ifcfg-eth0一致

vim /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
IPADDR=10.0.0.100

?輔助IP
IP alias 是由 ifconfig 程式來創建和維護的,而 secondary IP address 則是由 ip 程式來創建和維護的,ip addr add 創建的 secondary IP address 不能在 ifconfig -a 中看到,反過來,ifconfig 創建的 ethX:Y 卻能在 ip addr show 中看到

①手工配置別名的VIP的方法

ip addr add 10.0.0.100/24 dev eth0
ip addr add 10.0.0.101/24 broadcast 10.0.0.255 dev eth0
ip addr add 10.0.0.101/24 broadcast 10.0.0.255 dev eth0 label eth0:0

②手工查看VIP別名的方法
ip addr
③手工洗掉別名VIP的方法

ip addr del 10.0.0.100/24 dev eth0
ip addr del 10.0.0.101/24 broadcast 10.0.0.255 dev eth0

5、查找占用記憶體的前3名行程

方法一:top 按記憶體列排序,x高亮,z加顏色,使用>可以移動到以記憶體排序
在這里插入圖片描述
方法二:ps -aux | sort -k4nr | head -3

6、如何將本地80埠的請求轉發到8080埠,當前主機IP為192.168.133.126

iptables -t nat -A PREROUTING -d 192.168.133.126 -p tcp --dport 80 -j DNAT --to-des 192.168.133.126:8080

7、簡述DNS進行域名決議的程序?

用戶要訪問www.baidu.com,會先找本機的host檔案,再找本地設定的DNS服務器,如果也沒有的話,就去網路中找根服務器,根服務器反饋結果,說只能提供一級域名服務器.cn,就去找一級域名服務器,一級域名服務器說只能提供二級域名服務器.com.cn,就去找二級域名服務器,二級域服務器只能提供三級域名服務器.baidu.com.cn,就去找三級域名服務器,三級域名服務器正好有這個網站www.baidu.com,然后發給請求的服務器,保存一份之后,再發給客戶端

第二周

1、行程與執行緒

①行程是資源分配的最小單位,執行緒是CPU調度的最小單位
②行程有自己的獨立地址空間,每啟動一個行程,系統就會為它分配地址空間,建立資料表來維護代碼段、堆疊段和資料段,這種操作非常昂貴,
執行緒是共享行程中的資料的,使用相同的地址空間,因此CPU切換一個執行緒的花費遠比行程要小很多,同時創建一個執行緒的開銷也比行程要小很多,
③多行程程式更健壯,多執行緒程式只要有一個執行緒死掉,整個行程也死掉了,而一個行程死掉并不會對另一個行程造成影響,因為行程有自己獨立的地址空間

行程

  • 優點:多行程可以同時利用多個CPU,能夠同時進行多個操作,
  • 缺點:耗費資源(創建一個行程重新開辟記憶體空間),行程不是越多越好

執行緒:

  • 優點:共享記憶體,尤其是進行IO操作(網路、磁盤)的時候(IO操作較少用CPU),可以用多執行緒執行并發操作,
  • 缺點:搶占資源

IO密集型(不用CPU):多執行緒
計算密集型(用CPU):多行程

2、將一個文本的奇數行和偶數行合并

1、sed 'N;s#\n# #g' test.txt
N表示讀取下一行,給sed處理,也就是sed同時處理2行,

2、xargs -d "\n" -n2 < test.txt
xargs默認使用的是空格為分隔符,通過-d指定新的分隔符,這里修改為\n回車換行 為分隔符,
-n2表示以回車為換行符后,我要每行顯示兩列,也就是兩行,

3、awk判斷
awk 'NR%2==1{line=$0;next}{print line,$0}' test.txt
當前行是奇數行時執行line=$0,將整行賦值給line,next跳過其余的命令

4、awk判斷奇偶行并顯示
awk '{if(NR%2==0) print $0;else printf $0 " "}' test.txt

3、游標

游標移動
ctrl + a 切換到命令列開始
ctrl + e 切換到命令列末尾

剪切粘貼
ctrl + u 清除(剪切)游標之前的內容
ctrl + k 清除(剪切)游標之后的內容
ctrl + y 粘貼
esc + f 把游標移動到單詞的結尾
esc + f 把游標移動到單詞的開頭
ctrl + b 游標向左移動一個符號的位置
ctrl + f 游標向右移動一個符號的位置

4、累計相加

假如現在有個文本,格式如下:
a  1
b  3
c  2
d  7
b  5
a  3 
g  2
f  6
d  9
即左邊是隨機字母,右邊是亂數字,要求寫個腳本使其輸出格式為:
a  4
b  8
c  2
d  16
f  6
g  2
awk '{h[$1]=h[$1]+$2} END {for(pol in h) print pol,h[pol]}' array_add.txt

這里只有兩列,第一列是字母,第二列是數字是我們要相加的東西,
這里我們選擇第一列作為房間號碼即元素名稱,

END關鍵字,會在讀完資料后執行
BEGIN關鍵字,需要在處理資料前運行腳本,比如為報告創建開頭部分

RS,輸入檔案的行分隔符,預設是換行符
FS,輸入檔案的列分隔符,預設是連續的空格和Tab
NF,當前行所擁有的列數
NR,表示awk開始執行程式后讀取的資料行數
FNR,awk當前讀取的記錄數,其變數值小于等于NR(比如當讀取第二個檔案時,FNR是從0開始重新計數,而NR不會),
NR==FNR:用于在讀取兩個或兩個以上的檔案時,判斷是不是在讀取第一個檔案,

awk處理多個檔案的基本語法是:
awk -F分隔符 ‘BEGIN { 初始化 } { 回圈執行部分 } END { 結束處理 }’ file_list1 file_list2

5、軟硬鏈接

  • 不能對目錄創建硬鏈接,但可以創建軟鏈接,對目錄的軟鏈接會經常被用到
  • 軟鏈接可以跨檔案系統,硬鏈接不可以跨檔案系統,
  • 洗掉軟和硬鏈接檔案,對源檔案及軟和硬鏈接檔案無任何影響;
  • 洗掉鏈接檔案的源檔案,對硬鏈接檔案無影響,會導致其軟鏈接失效(紅底白字閃爍狀);
  • 同時洗掉源檔案及其硬鏈接檔案,整個檔案才會被"真正"的洗掉,

在linux系統中,鏈接分兩種 :一種是硬鏈接(Hard Link),另一種被稱為符號鏈接或軟鏈接(Symbolic Link),
默認不帶引數情況下,ln命令創建的是硬鏈接,

  • 硬鏈接檔案與源檔案的inode節點號相同,而軟鏈接檔案的inode節點號與源檔案不同,
  • ln命令不能對目錄創建硬鏈接,但可以創建軟鏈接,對目錄的軟鏈接會經常被用到,
  • 洗掉軟鏈接檔案,對源檔案及硬鏈接檔案無任何影響;
  • 洗掉檔案的硬鏈接檔案,對源檔案及軟鏈接檔案無任何影響;
  • 洗掉鏈接檔案的原檔案,對硬鏈接檔案無影響,會導致其軟鏈接失效(紅底白字閃爍狀);
  • 同時洗掉原檔案及其硬鏈接檔案,整個檔案才會被真正的洗掉,
  • 很多硬體設備中的快照功能,使用的就類似硬鏈接的原理,
  • 軟連接可以跨檔案系統,硬鏈接不可以跨檔案系統,

6、陣列統計

處理以下檔案內容,將域名取出并根據域名進行計數排序處理:
http://www.etiantian.org/index.html
http://www.etiantian.org/1.html
http://post.etiantian.org/index.html
http://mp3.etiantian.org/index.html
http://www.etiantian.org/3.html
http://post.etiantian.org/2.html

要求結果:
mp3.etiantian.org 1
post.etiantian.org 2
www.etiantian.org 3
思路:
1.以斜線為菜刀取出第二列(域名)
2.創建一個陣列,把第二列(域名)作為陣列的下標,通過類似于i++的形式進行計算數量
3.統計后把結果輸出

awk -F "/+" '{hotel[$2]++}END{for(pol in hotel) print pol,hotel[pol]}' url.txt|sort -rnk2

7、Linux啟動流程

1、主機加電自檢,加載BIOS硬體資訊
2、讀取MBR的引導檔案(GRUB、LILO)
3、引導Linux內核
4、運行第一個行程init(行程號永遠為1),
5、進入相應的運行級別
6、運行終端,輸入用戶名和密碼

第三周

1、創建一個dir_xyz目錄,讓該組成員都能在該目錄下創建或訪問檔案,但是除了檔案創建者之外的其他人不能洗掉檔案,你會怎么做?

#mkdir dir_xyz
#chmod g+wx dir_xyz
#chmod +t dir_xyz
最后一行命令——權限位最后的 ‘+t’ 是粘滯位,它用來替換x,表明在這個目錄中,檔案只能被它們的擁有者、目錄的擁有者或者是超級用戶root洗掉,

2、cut命令

cut命令主要是接受三個定位方法:
第一,位元組(bytes),用選項-b
第二,字符(characters),用選項-c
第三,域(fields),用選項-f

①截取test.txt的前10列 cut -c 1-10 test.txt
②截取該檔案中的第二,第五和第七列 cut -d: -f 2,5,7 /etc/passwd
③截取前三個位元組
[root@aliyun ~]# date
Sun Sep 13 04:50:10 CST 2020
[root@aliyun ~]# date | cut -b 1-3
Sun

3、多種查看eth0地址資訊

sed:	ifconfig eth0 | sed -n '2p' | sed 's#^.*inet ##g' | sed 's#n.*$##g'
grep + awk:	ifconfig eth0 | grep inet | awk '{print $2}'
sed + awk:	ifconfig eth0 | sed -n '2p' | awk '{print $2}'

4、統計linux系統的history歷史記錄,得出前10最喜歡的

history | awk '{h[$2]++} END {for(key in h) print key,h[key]}' | sort -rnk2 | head

優雅的顯示可以加上 column -t
history | awk '{h[$2]++} END {for(key in h) print key,h[key]}' | sort -rnk2 | head | column -t

簡單處理法:history | awk ‘{print $2}’ | sort |uniq -c | sort -nr | head

5、Linux中查看系統已經登錄用戶的命令

①w,顯示誰遠程登錄了系統并且在干什么
②who,顯示誰遠程登錄了
③last,顯示最近遠程登錄的用戶,也可以查看已經登錄的用戶

6、查找出/tmp目錄下面修改時間是7天以前,大小在50k到2M之間,并以.log結尾的檔案

find /tmp/ -type f -mtime +7 -size +50k -a -size -2M  -regex '.*\.log$'

+50k 表示大于50k的檔案
-2M  表示小于2M的檔案

7、查找出/tmp目錄下面修改時間是7天以前,大小在50k到2M之間,并以.log結尾的檔案,把這些檔案復制到/data目錄中

find /tmp/ -type f -mtime +7 -size +50k -a -size -2M -name "*.log" | xargs -i cp {} /data
find /tmp/ -type f -mtime +7 -size +50k -a -size -2M -name "*.log" -exec cp {} /tmp \;
cp $(find /tmp/ -type f -mtime +7 -size +50k -a -size -2M -name "*.log") /data

第四周

1、登錄環境故障-bash-4.1的原因及解決辦法

-bash-4.1$
這種一般是因為用戶洗掉檔案的時候,把當前用戶的家目錄的一些隱藏檔案洗掉所導致的,導致.bashrc .bash_profile沒了,與用戶有關的環境變數也沒了,

解決辦法:把用戶老家root的模板/etc/skel下面的.bash_profile和.bashrc復制到出問題的用戶

-bash-4.1$whoami
kolor
-bash-4.1$cp /etc/skel/.bash* ~
重新登錄測驗
-bash-4.1$logout
su - kolor

2、如何洗掉多個檔案中包含的空格或其他特殊字符,怎么做

find /tmp/ -type f -name "*.log" -print0 | xargs -0 ls -l

find命令的引數 -print0(注意這是數字0),表示find在找到檔案后在檔案的結尾加上一個標記,不用默認的空格分隔檔案,
加上引數后,find命令找到的每個檔案會在檔案結尾加上一個標記(空符號)

正巧了,xargs 也有個引數專門識別這個空標記,-0(數字0),xargs加上–null(等同于-0)引數就可處理空字符

3、CPU使用率超過80%或硬碟超過85%郵件報警

%Cpu(s): 0.0 us, 1.6 sy, 0.0 ni, 98.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
98.4是未使用的CPU,剩余的都是使用的,

獲取使用率 # top -n1 | tail -n +3 | head -1 | awk -F ‘[, ]+’ ‘{print 100-$11}’
top -n1 | tail -n +3 | head -1
tail -n +3選出從第3行開始的所有行
head -1輸出篩選出的內容的第1行,

硬碟:df -h | awk -F ‘[ %]+’ ‘//$/{print $5}’
完整腳本:

#!/bin/bash
cpuUsed=`top -n1 | tail -n +3 | head -1 | awk -F '[, ]+' '{print 100-$11}'`
diskUsed=`df -h | awk -F '[ %]+' '/\/$/{print $5}'`
logFile=/tmp/check.log

function Sendmail(){
    mail -s "監控報警" 330289344@qq.com < $logFile
}

function check(){
    if [ `echo "$cpuUsed>80"|bc` -eq 1 -o $diskUsed -ge 85 ];then
        echo "`date +%F`  CPU使用率:${cpuUsed}%,磁盤使用率:$(diskUsed)%" >> $logFile
        Sendmail
    fi
}

function main(){
    check
}
main

加入定時任務,每5分鐘執行一次
crontab -e 
/5 * * * * check.sh

4、監控學校的網路出口正常性,需要寫一個腳本,作業系統每30秒鐘訪問百度首頁,如果能夠正常打開則記錄正常日志,如果出現例外則發郵件報警,

#! /bin/bash
Web="www.baidu.com"
A="Web is Good!"
while true
do
    state=`curl -I -s $Web | head -1 | cut -d " " -f2`
    if [[ $state -eq "200" ]]
    then
        echo "$A,the Web is $Web" >> /home/log/website-access.`date +%F`.log
    else
        echo "Web failed $Web" >> /home/log/website-error.`date +%F`.log
        echo "Web failed $Web `date +%F`" | mail -s "website-error `date +%F`" 330289344@qq.com
    fi
    sleep 30
done

5、如何快速洗掉Linux中海量小檔案

N個檔案,rm -rf * 會提示 -bash:/bin/rm:Argument list too long
解決辦法:
1)ls | xargs rm -f
2)find . -type f | xargs rm -f
3)rsync -av --delete /null /tmp/

6、如何統計腳本執行的時間?

[root@myblog ~]# cat 123.sh 
sleep 10
echo 123
[root@myblog ~]# time sh 123.sh
123
real    0m10.003s
user    0m0.002s
sys     0m0.001s

7、通過訪問日志access.log統計的IP和每個地址訪問的次數

awk '{s[$1]++} END {for (i in s) print s[i],i}' /var/log/httpd/access_log | sort -rn | head -5
awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -nr | head -5

第五周

binlog

1、如何正確清理MySQL binlog

1.手動洗掉

洗掉mysql-bin.000004之前的而沒有包含mysql-bin.000004
mysql> purge binarylogs to 'mysql-bin.000004';

按照時間,洗掉指定時間之前的
mysql> purge master logs before '2017-03-20 00:00:00';
清理所有bin-log
reset master

2.設定自動洗掉

set global expire_logs_days = 7;

2、開機自啟

①/etc/rc.local
②chkconfig -add httpd
chkconfig --list
chkconfig --level 35 mysqld on
網路檔案共享服務NFS,僅在3級別上開機自啟動
chkconfig --level 3 nfs on

3、使用檔案的訪問控制串列功能來授權root用戶有x權限

[root@koloredu bin]# setfacl -m u:root:rwx /bin/chmod
(這種方法用的是訪問控制串列的方法實作的使root用戶有x的權限)
[root@koloredu bin]# chmod +x /bin/chmod
(此時chmod就有了x的權限了)

setfacl命令可以用來細分linux下的檔案權限,
chmod命令可以把檔案權限分為u,g,o三個組,而setfacl可以對每一個檔案或目錄設定更精確的檔案權限,
換句話說,setfacl可以更精確的控制權限的分配,
比如:讓某一個用戶對某一個檔案具有某種權限,

4、把test.txt檔案里面所有字母都轉換成大寫

sed 's#[a-z]#\u&#g' test.txt
awk '{print toupper($0)}' test.txt 
(toupper是awk的內置函式,功能是將小寫字母轉換為大寫,對應的轉換成小寫的做法是把toupper函式替換成tolower函式)
tr 'a-z' 'A-Z ' < test.txt

5、設定一條Iptables規則,允許192.168.10.0段訪問873埠

iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 873 -j ACCEPT

6、vim命令粘貼帶#號或注釋資訊格式會出現混亂情況,有什么方法進行解決?

問題說明:每次復制代碼時,如果代碼里有 //或# 這樣的注釋就容易讓格式亂掉,顯示的內容不整齊,并不是所期望的顯示格式
原因分析:是由于vim編輯命令的自動縮進功能所影響,因此粘貼帶注釋的代碼時可以取消自動縮進

vim test.txt             #<--編輯一個檔案
:set paste                #<--在vim的命令列模式輸入,關閉vim縮進功能
:set nopaste               #<--開啟vim縮進功能

比較方便的方法就是修改用戶家目錄下的 .vimrc組態檔:
set pastetoggle=<F9>
以后在插入模式下,只要按F9鍵就可以快速切換自動縮進模式了

說起縮進,/etc/vimrc
用vim打開vimrc檔案并增加下面兩行代碼
set tabstop=4

7、使用find命令的時候 |xargs(管道xargs)與-exec有什么區別?

find /kolor -type f |xargs  find命令找到的檔案一次性都給 |xargs 處理
find /kolor -type f -exec   find命令找到一個檔案 就傳遞給 -exec 處理一次

find /kolor -type f |xargs tar zcf /tmp/kolor-xargs.tar.gz
相當于
tar zcf /tmp/kolor-xargs.tar.gz /kolor/stu02.txt

find /kolor -type f -exec tar zcf /tmp/kolor-exec.tar.gz {} \;
相當于
tar zcf /tmp/kolor-exec.tar.gz /kolor/stu02.txt
tar zcf /tmp/kolor-exec.tar.gz /kolor/stu10.txt

第六周

1、變數a='a/b/c’如何截取得到c

[root@shell ~]# a='a/b/c'

方法1-cut
[root@shell ~]# echo $a | cut -c5c

方法2-tr替換
[root@shell ~]# echo $a | tr "a/b/" "    "   <==四個空格c

方法3-tr+tail方法
[root@shell ~]# echo $a | tr "/" "\n" | tail -1

方法4-tr洗掉
[root@shell ~]# echo $a | tr -d 'a/b/'

方法5-sed替換
[root@aliyun ~]# echo $a | sed 's#a/b/##'

方法6-echo
[root@aliyun ~]# echo ${a##*/}
##*/ 表示 洗掉最后一個/ 及其左邊字串

2、一個100M的磁盤磁區,寫入0.5K的檔案,或寫入1M的檔案,分別可以寫多少個?為什么?

參考答案:
1、默認磁區常規情況下,對大檔案來講inode是足夠的,而block數量消耗的會更快,block為4K的情況下,1M的檔案不會有浪費磁盤的情況,所以檔案數量大概為100/1=100個,
2、對于小檔案0.1K,inode會消耗的更快,默認磁區block的數量大于inode數量的,每個小檔案都會占用一個inode和一個block,inode會先消耗完,檔案總量是inode的數量,

a、上面的考試題考察的是檔案系統inode和block知識,
b、inode是存放檔案屬性資訊的(也包含指向檔案物體的指標),默認大小為128byte(c58),256byte(c64)
c、block是存放檔案實際內容的,默認大小1K(boot)或4K(非系統磁區默認給4K),一般企業多用4K的block,
d、一個檔案至少要占用一個inode及一個block,
e、默認較大磁區常規企業真實場景情況下,inode數量是足夠的,而block數量消耗會更快,

3、請描述下面列出的 http 狀態碼的含義

200 服務器成功回傳網頁
301 永久跳轉,請求的網頁已永久跳轉到新位置,
403 禁止訪問,服務器拒絕請求
404 服務器找不到請求的頁面
500 內部服務器錯誤
502 錯誤網關,一般是網關服務器請求后端服務時,后端服務不可用或者沒有完成回應網關服務器,
503 服務當前不可用,可能因為服務器超載或停機維護導致, 或者是代理服務器后面沒有可以提供服務的節點
504 網關超時,一般是服務器過載導致沒有在指定時間內回傳資料給代理服務器

4、Linux root 密碼忘了,如何找回來?

①開機時手要快按任意鍵
②grub選單,按e鍵
③選擇第二項,按e鍵
④在rhgb quiet最后加"空格",然后鍵入"1"或"s"或"S"或"single"都可以,按回車鍵回傳上一層
⑤按b鍵啟動系統,進入到單用戶模式
⑥passwd 修改root密碼

5、怎么才能在輸入IP后找到/etc/hosts里對應的唯一的hostname?

192.168.1.11 baidu.com

# cat awkhost1.sh   
awk 'BEGIN {a="'$1'"} {if($1==a) print $2; }' /etc/hosts
# sh awkhost1.sh 192.168.1.21

# cat awkhost2.sh   
awk '{if($1=="'$1'") print $2}' /etc/hosts

# cat awkhost9.sh   
awk  '$1 == "'$1'" {print $2}' /etc/hosts

————————————————————————————————
[root@old_boy scripts]# cat judgehost.sh    
#!/bin/bash   
echo "please input ip address:" 
read ip  
[ -n "`grep "$ip " /etc/hosts`" ] && \  #注意前面的過濾條件結尾帶有空格,   
echo "The hostname is: `grep "$ip " /etc/hosts |awk '{print $2}'`" || \  
echo "The ip is invalid"


[root@adminset ~]# touch /tmp/luoahong.txt
[root@adminset ~]# [ -f /tmp/luoahong.txt ] && echo 1 ||echo 0
1
-n 判斷變數的值,是否為空 
- 變數的值,為空,回傳1,為false
- 變數的值,非空,回傳0,為true

兩個變數判斷是否相等
if [ "$var1" = "$var2" ]; then

[ STRING1 == STRING2 ] 如果兩個字串相同則回傳為真

1)這是一個grep過濾加條件判斷的實作語法:
2)條件判斷語法為[ -n "ddd" ] && echo 1 || echo 0
3)[ -n "`grep "$ip " /etc/hosts`" ] && \#注意前面的過濾條件結尾帶有空格,這里啊,是為了排除下面的重復情況
—————————————————————————————————

6、使用命令調換 /etc/passwd 檔案里所有的第一列和最后一列位置

例:默認:root:x:0:0:root:/root:/bin/bash
修改后:/bin/bash:x:0:0:root:/root:root
awk -F ":" '{a=$1;$1=$NF;$NF=a;print}' /etc/passwd | tr " " ":"
print默認是print $0tr 把分隔符替換成冒號

7、統計/var/log/下所有檔案個數

題目決議:
1、/var/log/下所有檔案包括當前目錄和子目錄以及子目錄的子目錄下面的檔案
2、linux下檔案有很多型別,包括 普通檔案、鏈接檔案、字符設備檔案、塊設備檔案、socket檔案等

find /var/log/ ! -type d | wc -l
74

tree /var/log/ | awk 'END{print $3}'
74

第七周

1、題目:批量添加20個用戶,用戶名為user1~20,密碼為5個隨機字符(要求不能使用shell回圈陳述句)

echo user{1..20}|xargs -n1|sed -r 's#(.*)#useradd \1 \&\& echo \1 >>/tmp/passwd.txt \&\& echo $RANDOM |md5sum |cut -c 1-5>>/tmp/passwd.txt \&\& echo `tail -1 /tmp/passwd.txt`|passwd --stdin \1#g'|bash

2、如何過濾出已知當前目錄下home中的所有一級目錄(提示:不包含home目錄下面目錄的子目錄及隱藏目錄,即只能是一級目錄)?

方法1:通過find直接查找指定型別的檔案
find ./home -type d -maxdepth 1

方法2:ls -l結果中以d開頭的就是目錄
ls -l ./home | grep "^d"

ls -S 以檔案的大小進行排序
ls -R 將目錄下所有的子目錄的檔案都列出來
ls -t 按時間進行檔案的排序,    最快速度查看到最近更新
ls -r 檔案名反向逆序,大到小,   直接 ls -l看的話是小到大 數字 A-Z

方法3:awk過濾以d開頭
ls -l ./home | awk '/^d'

3、只能保留最近 7 天的訪問日志

find /application/logs/ -type f -mtime +7 -name "*.log"|xargs rm –f  
##也可以使用-exec rm -f {} \;進行洗掉

4、列印行號及內容

cat -n nginx.conf
grep -n . 1.sh

5、系統運行級別

0 關機
1 單用戶
2 多用戶,沒有nfs支持
3 完全多用戶,
4 保留
5 X Windows
6 重啟

6、如何優化Linux系統

1、不用root,添加普通用戶,通過sudo授權管理
2、更改默認的遠程連接SSH服務埠及禁止root用戶遠程連接
3、定時自動更新服務器時間
4、配置國內yum源
5、關閉selinux及iptables(iptables作業場景如果有外網IP一定要打開,高并發除外)
6、調整檔案描述符的數量
7、精簡開機啟動服務(crond rsyslog network sshd) chkconfig --list
8、內核引數優化(/etc/sysctl.conf)
9、更改字符集,支持中文,但建議還是用英文字符集,防止亂碼 echo $LANG
10、鎖定關鍵系統檔案 chattr +i i表示不得任意更動檔案或目錄
11、清空/etc/issue,去除系統及內核版本登錄前的螢屏顯示

7、解壓壓縮

-P或–absolute-names 檔案名使用絕對名稱,不移除檔案名稱前的"/"號,
-c是打包,-x是解包
-z,-j是壓縮和解壓縮

a.請用 tar 打包/etc 整個目錄(打包及壓縮)
打包及壓縮:tar zcvf etc.tar /etc
b.請用 tar 打包/etc 整個目錄(打包及壓縮,但需要排除/etc/services 檔案)
打包及壓縮:tar zcvf etc.tar.gz /etc --exclude=/etc/services
c.請把 a 點命令的壓縮包,解壓到/tmp 指定目錄下
解壓:tar zxvf etc.tar.gz -C /opt/

第八周

1、過濾字串 I am kolor, myqq is 3302 ,過濾出kolor和3302

無逗號  I am kolor myqq is 3302
awk '{print $3" "$6}' 1.txt
cut -d" " -f3,6 1.txt
cut -c 6-11,20-  1.txt

有逗號  I am kolor, myqq is 3302
awk '{print $3" "$6}' 1.txt | sed s#,#""#

2、查看/etc/services 檔案內容有多少行?

wc -l /etc/services
cat -n /etc/services | tail -1 | awk ‘{print $1}’
awk ‘{print NR}’ /etc/services|tail -1
grep -n $ /etc/services|tail -1

3、過濾出/etc/services 檔案包含 3306 或 1521 兩資料庫埠的行的內容,

grep -E “3306|1521” /etc/services

4、描述 linux 系統從開機到登陸界面的啟動程序

開機自檢,MBR引導,加載grub選單,在grub選單里面加載kernel,啟動init行程,init是Linux系統啟動時第一個啟動的行程,init讀取inittab檔案,先執行/etc/rc.d/rc.sysinit初始化腳本(設定主機名,加載inittab,設定網卡和一些PCI設備),根據inittab設定的級別指向相對應的腳本,如果是3模式則指向/etc/rc3.d下面的腳本以及程式,執行rc.local,最后啟動mingetty行程,進入登陸界面,

5、如何取得/kolor 檔案的權限對應的數字內容,如-rw-r–r– 為 644, 要求使用命令取得644 這樣的數字,

stat kolor | sed -n ‘4p’ | awk ‘{print $2}’ | tr -cd “[0-9]”
stat kolor | awk -F “[(/]” ‘NR==4 {print $2}’
stat -c %a kolor 查看檔案屬性權限 -c 表示格式化

6、顯示指定行內容

第二行

sed -n '2p' file.test 
awk 'NR==2 {print $0}' file.test 

第三行至第五行內容

sed -n '3,5p' file.test 
awk '{if(NR>2&&NR<6) print $0}' file.test 

顯示奇數行與偶數行
sed

[root@test1 test]# sed -n '1~2p' file.test 
1
3
5
7
9
[root@test1 test]# sed -n '2~2p' file.test 
2
4
6
8
10
[root@test1 test]# sed -n 'p;n' file.test 
1
3
5
7
9
[root@test1 test]# sed -n 'n;p' file.test   
2
4
6
8
10

awk

[root@test1 test]# awk 'NR%2==1' file.test 
1
3
5
7
9
[root@test1 test]# awk 'NR%2==0' file.test   
2
4
6
8
10
[root@test1 test]# awk '{if(NR%2==1) print $0}' file.test  
1
3
5
7
[root@test1 test]# awk '{if(NR%2==0) print $0}' file.test 
2
4
6
8
10

顯示匹配到的行

[root@test1 test]# sed -n '/5/p' file.test 
5 line 5
[root@test1 test]# awk '/5/' file.test 
5 line 5
[root@test1 test]# grep 5 file.test 
5 line 5

7、查找當前目錄下所有檔案,并把檔案中的 www.baidu.com 字串替換成 www.abc.cc

find ./ -type f|xargs sed -i 's#www\.baidu\.com#www\.abc\.cc#g'

第九周

1、sudo su 和 su

sudo su - 該命令是通過sudo權限進行角色轉換(默認是切換到root),輸入的是指向命令當時賬號的密碼,而非root密碼, 當前用戶暫時申請root權限,sudo是用戶申請管理員權限執行一個操作,而此處的操作就是變成管理員,
su - 該命令是真正用戶切換命令(默認是切換到root),輸入的是root的密碼

2、如何把檔案中的空行過濾掉

方法一:簡單粗暴

grep -v "^$" test.txt
sed '/^$/d' test.txt 
awk /[^^$]/ test.txt
awk '!/^$/' test.txt

注:
^$表示空行,
Grep -v 表示排除,
Sed //d 表示洗掉
Awk !// 表示排除或取反,

方法2:考慮到可能有空格方法

grep -v "^[ ]*$" test.txt
sed  '/^[ ]*$/d' test.txt
awk '!/^[ ]*$/' test.txt
說明:
[ ]*表示連續出現0個或多個空格,表示0個的時候就相當于是^$即空行,

方法3:考慮到可能有空格或tab鍵

sed '/^[ \t]*$/d' kolor.txt
awk '!/^[ \t]*$/' kolor.txt
說明:
Grep命令默認不支持\t表示tab鍵,
這里面我們用sed和awk方法即可,

3、查看命令路徑

whereis -b ifconfig
whcih ifconfig

4、查看哪些用戶在線的linux命令

w
who

5、關機重啟注銷

關機

# shutdown -h now   --->立刻關機(生產常用)
# shutdown -h +1    --->1分鐘后關機
# init 0
# halt
# poweroff

重啟

# reboot 
# shutdown -r now
# shutdown -r +1

注銷

# logout

6、分時日月周crontab

每天晚上12點
0 0 * * *

每天的23點整
0 23 * * *

每隔兩小時 * */2 * * *

7、下列路徑的內容

/etc/sysctl.conf —–>內核調優的檔案
/etc/rc.local —–>開機自啟動命令的檔案
/etc/hosts —–>本機的域名決議檔案
/etc/fstab —–>開機設備自動掛載的檔案
/var/log/secure —–>系統登陸的安全日志

第十周

1、如何查看用戶的 uid 及屬于的組資訊,

[root@aliyun ~]# id kolor
uid=1010(kolor) gid=1010(kolor) groups=1010(kolor)

2、添加一個用戶kolor,并指定屬于 sa 組,要求組 ID 為 801, uid 為 808,并且不建立家目錄及禁止其登陸,

# groupadd sa -g 801
# useradd kolor -g sa -s /sbin/nologin -M
# id kolor
uid=1010(kolor) gid=1010(kolor) groups=1010(kolor)

3、mysql主從原理?主從不同步怎么辦?主從慢,差的多咋辦?

①mysql主從原理:
從庫生成兩個執行緒,一個I/O執行緒,一個SQL執行緒;
i/o執行緒去請求主庫 的binlog,并將得到的binlog日志寫到relay log(中繼日志) 檔案中;
主庫會生成一個 log dump 執行緒,用來給從庫 i/o執行緒傳binlog;
SQL 執行緒,會讀取relay log檔案中的日志,并決議成具體操作,來實作主從的操作一致,而最終資料一致;

②主從不同怎么辦
先上Master庫:
mysql>show processlist; 查看下行程是否Sleep太多,發現很正常,
show master status; 也正常,
mysql> show master status;
再到Slave上查看
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No

可見是Slave不同步
下面介紹兩種解決方法:
方法一:忽略錯誤后,繼續同步
該方法適用于主從庫資料相差不大,或者要求資料可以不完全統一的情況,資料要求不嚴格的情況
解決:
stop slave;
#表示跳過一步錯誤,后面的數字可變
set global sql_slave_skip_counter =1; ?

方式二:重新做主從,完全同步
1.先進入主庫,進行鎖表,防止資料寫入
使用命令:
mysql> flush tables with read lock; ?
注意:該處是鎖定為只讀狀態,陳述句不區分大小寫
2.進行資料備份
#把資料備份到mysql.bak.sql檔案
[root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql
這里注意一點:資料庫備份一定要定期進行,可以用shell腳本或者python腳本,都比較方便,確保資料萬無一失
4.把mysql備份檔案傳到從庫機器,進行資料恢復
#使用scp命令
[root@server01 mysql]# scp mysql.bak.sql root@192.168.128.101:/tmp/
5.停止從庫的狀態
mysql> stop slave;
6.然后到從庫執行mysql命令,匯入資料備份
mysql> source /tmp/mysql.bak.sql
7.設定從庫同步,注意該處的同步點,就是主庫show master status資訊里的| File| Position兩項
change master to master_host = ‘192.168.128.100’, master_user = ‘rsync’, master_port=3306, master_password=’’, master_log_file = ‘mysqld-bin.000001’, master_log_pos=3260;
8.重新開啟從同步
mysql> start slave;
9.查看同步狀態
mysql> show slave status\G 查看:

③主從慢,差的多咋辦
1.從庫硬體比主庫差,導致復制延遲
2.主從復制單執行緒,如果主庫寫并發太大,來不及傳送到從庫,就會導致延遲,更高版本的mysql可以支持多執行緒復制
3.慢SQL陳述句過多
4.網路延遲
5.master負載
主庫讀寫壓力大,導致復制延遲,架構的前端要加buffer及快取層
6.slave負載
一般的做法是,使用多臺slave來分攤讀請求,再從這些slave中取一臺專用的服務器,只作為備份用,不進行其他任何操作
另外,2個可以減少延遲的引數:
–slave-net-timeout=seconds 單位為秒,默認設定為 3600秒
#引數含義:當slave從主資料庫讀取log資料失敗后,等待多久重新建立連接并獲取資料
–master-connect-retry=seconds 單位為秒, 默認設定為 60秒
#引數含義:當重新建立主從連接時,如果連接建立失敗,間隔多久后重試,

4、mount永久掛載

vi /etc/fstab
UUID=904C23B64C23964E /media/aborn/data ntfs defaults 0 2
其中第一列為UUID, 第二列為掛載目錄(該目錄必須為空目錄,必須存在),第三列為檔案系統型別,第四列為引數,第五列0表示不備份,最后一列必須為2或0(除非引導磁區為1)

5、列印一個目錄下所有包含字串A的行

grep -rn "A" ./
-n 行號
-r 目錄遞回
或
find ./ -name "*.*" | xargs grep "A"

6、iptables

iptables有4表5鏈:
filter表——過濾資料包
Nat表——用于網路地址轉換(IP、埠)
Mangle表——修改資料包的服務型別、TTL、并且可以配置路由實作QOS
Raw表——決定資料包是否被狀態跟蹤機制處理

INPUT鏈——進來的資料包應用此規則鏈中的策略
OUTPUT鏈——外出的資料包應用此規則鏈中的策略
FORWARD鏈——轉發資料包時應用此規則鏈中的策略
PREROUTING鏈——對資料包作路由選擇前應用此鏈中的規則(所有的資料包進來的時侯都先由這個鏈處理)
POSTROUTING鏈——對資料包作路由選擇后應用此鏈中的規則(所有的資料包出來的時侯都先由這個鏈處理)

★7、頁面無法訪問排查思路

場景一:無錯誤狀態碼
若是云服務器可能存在賬號處于欠費狀態
WEB服務沒有啟動
埠沒有正常監聽
防火墻或者防火墻策略限制
排查思路說明:
·使用命令telnet IP Port 進行測驗

場景二:網站訪問例外代碼4XX,
排查思路:
通過查看其組態檔,并檢測其組態檔語法,發現語法正常;
通過命令列查看其web服務埠運行正常,沒有行程僵尸狀況;
具體讀組態檔,然后再查找客戶客戶組態檔所指定的具體目錄
·404報錯的具體原因是訪問的路徑url目錄在服務上沒有找到,如果直接使用ip或者域名訪問,那么實際訪問的頁面是站點根目錄下的默認檔案(組態檔中index后指定的檔案),如果服務器上站點根目錄上沒有這個檔案,則會出現404錯誤,

第十一周

1.sed用法+1

cat /tmp/passwd
koloredu.com
123456789
kolor
oldgirl

1)洗掉檔案每行的第二個字符
方法一:

[root@kolorEdu tmp]# sed 's#.##2' passwd
odboyedu.com
13456789
odboy
odgirl

方法二:

[root@kolorEdu tmp]# sed -r 's#(.).(.*)#\1\2#g' passwd
odboyedu.com
13456789
odboy
odgirl

2)把所有小寫字母用括號()括起來

[root@kolorEdu tmp]# sed 's#[a-z1-9]#(&)#g' passwd
(o)(l)(d)(b)(o)(y)(e)(d)(u).(c)(o)(m)
(1)(2)(3)(4)(5)(6)(7)(8)(9)
(o)(l)(d)(b)(o)(y)
(o)(l)(d)(g)(i)(r)(l)

字符(&)的用法

"s/^AA.*/&XX" : 把所有以AA開頭的行,在行尾假設XX,其中的字符(&)表示所有以AA開頭的字串,

滿足匹配的字串文本內容
$ echo "AABB" | sed "s/AA/AAXX/g" 
AAXXBB
$ echo "AABB" | sed "s/AA/&XX/g"
AAXXBB

例子3. 給所有的連續字符A加后綴XX
這個怎么寫呢,如果不用字符(&)好像不方便,因為不確定有多少個A字符,
$ echo "AAABB" | sed "s/A\+/XX/g"
XXBB  這樣是不正確的

使用字符(&)
$ echo "AAABB" | sed "s/A\+/&XX/g"  
AAAXXBB

2.取出/tmp目錄下面的10個檔案的第一行

在目錄/tmp下找到10個以abc開頭的檔案,然后把這些檔案的第一行內容保存到檔案new中

cat /server/scripts/find.sh
#!/bin/sh
for filename in `find /tmp -type f -name "abc*"|head -n 10`
do
sed -n '1p' $filename>>new
done

3.通過Iptables來限定apache每秒鐘連接數為1,峰值為3

iptables -A INPUT -d 172.16.100.1 -p tcp --dport -m limit --limit 1/second --limit-burst 3 -j ACCEPT

4.假設Apache 產生的日志檔案名為access_log,在apache 正在運行時,執行命令mv access_log access_log.bak,執行完后,請問新的apache 的日志會列印到哪里,為什么?

新的日志會列印在access_log.bak 中,因為apache 啟動時會找access_log 檔案,隨時準備向檔案中加入日志資訊,雖然此時檔案被改名,但是由于服務正在運行,因為它的inode 節點的位置沒有變,程式打開的fd 仍然會指向原來那個inode,不會因為檔案名的改變而改變,apache 會繼續向已改名的檔案中追加日志,但是若重啟apache 服務,系統會檢查access_log檔案件是否存在,若不存在則創建,

5.實作172.16.1.0/24段所有主機通過124.32.54.26外網IP共享上網

方法一:echo 1 > /proc/sys/net/ipv4/ip_forward

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 124.32.54.26

方法二:在內核引數檔案/etc/sysctl.conf中增加如下內容net.ipv4.ip_forward = 1,然后執行:sysctl -p

如果不是固定的124.32.54.26怎么辦?

解答:我們都知道當我們使用聯通或者電信上網的時候,一般它都會在每次你開機的時候隨機生成一個外網的IP,意思就是外網地址是動態變換的,這時我們就要將外網地址換成
MASQUERADE(動態偽裝):它可以實作自動尋找到外網地址,而自動將其改為正確的外網地址,

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE

第十二周

1.優化shell腳本

#!/bin/bash
grep kolor /etc/passwd &>/dev/null
REVAL=$?
if [ $REVAL -eq 0 ]
then 
    echo "kolor user already exists"
else
    useradd kolor
fi

參考答案一:

#!/bin/bash
if grep -q kolor /etc/passwd
then 
    echo "kolor user already exists"
else
    useradd kolor
fi

加-q選項,執行結果是:如果找到了,會回傳0,否則,回傳1,

參考答案二:

[ `grep kolor /etc/passwd|wc -l` -eq 1 ]&& echo ok ||echo no

2.如何讓linux也像windows那樣有一個回收站,避免資料的誤洗掉,進而恢復誤刪資料?

-i:默認選項,當目標檔案存在時,提示是否覆寫
$@表示所有引數
$#表示所有引數的個數
把下面這些代碼放到一個tr.sh腳本,然后在 .bashrc下添加 source /root/tr.sh (每一次更改都要重新執行.bashrc)

直接 cat >> .bashrc <<EOF

#!/bin/bash
mkdir -p ~/.trash           #創建一個目錄作為回收站,這里使用的是用戶家目錄下的.trash目錄
cat >> .bashrc
alias rm=trash             #命令別名 rm改變為trash,通過將rm命令別名值trash來實作把rm改造成洗掉檔案至回收站
alias r=trash
alias rl='ls ~/.trash'   # rl命令顯示回收站中的檔案
alias ur=undelfile         # ur命令找回回收站中的檔案
alias cl=cleartrash		# cl命令清慷訓收站中的檔案
說明:這個函式的作用是找回回收站下的檔案
undelfile(){
    mv -i ~/.trash/\$@  ./
}

-i:默認選項,當目標檔案存在時,提示是否覆寫
說明:這個函式是將指定的檔案移動到指定的目錄下,通過將rm命令別名值trash來實作把rm改造成洗掉檔案至回收站
trash(){
   mv $@   ~/.trash/
}
說明:這個函式的作用是清慷訓收站目錄下的所有檔案
cleartrash(){
   read -p "clear sure?[n]" confirm
   [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/*
}

這段代碼定義了三個函式trash、undelfile和cleartrash,
trash的作用是移動檔案到指定的回收站目錄;
undelfile的作用是找回回收站目錄中的指定檔案;
cleartrash的作用是清慷訓收站目錄,
經rm命令別名為trash來實作rm命令的改造!

trash目錄作為回收站,將其它代碼加入用戶家目錄下的.bashrc檔案下,這樣用戶每次登錄這段代碼就會自動生效!
登錄后在bash下執行一遍下面的命令就可以把rm命令改造成洗掉檔案到回收站了!

最終腳本,直接執行通過EOF就會寫到.bashrc,注意這種直接寫的話要$轉義,通過路徑呼叫腳本就不用

mkdir -p ~/.trash
cat >> .bashrc <<EOF
alias rm=trash
alias rl='ls ~/.trash'
alias ur=undelfile
alias cl=cleartrash

undelfile()
{
  mv -i ~/.trash/\$@  ./
}

trash()
{
  mv \$@  ~/.trash/
}

cleartrash(){
   read -p "clear sure?" confirm
   [ \$confirm == 'y' ] || [ \$confirm == 'Y' ] && /bin/rm -rf ~/.trash/*
}
EOF

在這里插入圖片描述

3.基礎娛樂命令:像幻燈片一樣播放每個字符

如何實作執行一個命令,讓文字字符,采用輸入回放的效果,逐一顯示在螢屏上

echo "Kolor,網工,運維" | pv -qL 20 
#沒有這個命令 yum 安裝即可 
yum install pv -y #需要使用epel源

4.批量重命名,檔案批量重命名為 00.jpg ……10.jpg

# touch {00..10}.html
# ls
00.html  01.html  02.html  03.html  04.html  05.html  06.html  07.html  08.html  09.html  10.html

方法一:rename命令

rename .html .jpg  *.html

方法二:shell

for name in `ls *.html`;do mv $name ${name%.html}.jpg;done
${file%.*}:    刪掉最后一個  .  及其右邊的字串

在這里插入圖片描述
方法三:shell

for n in {00..10};do mv $n.html $n.jpg ;done 

5./etc/profile /etc/bashrc .bashrc .bash_profile的區別

全域環境變數 ↓
/etc/profile 主要用是系統的環境變數,同時我們也放些別名
/etc/bashrc 主要用來存放系統的別名和自己定義的函式(都可以放到 /etc/profile中)

只針對當前登陸的用戶生效 ↓
.bashrc 是用戶自己定義的別名
.bash_profile 是用戶自己定義的環境變數

先讀取/etc/profile檔案,然后讀取用戶自己的.bash_profile然后讀取.bashrc的內容最后讀取/etc/bashrc這個檔案,
這是這幾個檔案在用戶登錄的時候的運行的順序,
/etc/profile ——》 .bash_profile ——》 .bashrc ——》 /etc/bashrc

6.如何修改主機名

臨時修改:hostname test
永久修改:
方法一:vim /etc/sysconfig/network

# Created by anaconda
NETWORKING=yes
HOSTNAME=test
GATEWAY=192.168.1.137

讓主機名能決議 (ping 主機名可以暢通)
ip地址 主機名 放入到/etc/hosts
10.0.0.200 test

方法二:還有一種存在vim /etc/hostname

test

第十三周

1.命令風暴:列印出001 002 003 這樣的格式的數字

方法1:{}生成序列

[root@shell ~]# echo 00{1..3}
001 
002 
003

方法2:seq法

[root@shell ~]# seq -w 100
001
002
003
004
005
006
007
…………
[root@shell ~]# seq -w 100 |sed -n '1,3p'
001
002
003
————
[root@shell ~]# seq -w 101 103|sed -e 's/^1/0/g'
001
002
003
[root@shell ~]# seq -f %03g 3
001
002
003

-f, --format=格式 使用printf 樣式的浮點格式 
%3g那么數字位數不足部分是空格,
"%03g" 數字位數不足部分是0,%前面制定字串,

-s, --separator=字串 使用指定字串分隔數字(默認使用:\n) 
[root@Gin scripts]# seq -s '=' 1 5
1=2=3=4=5

方法3:for回圈

[root@shell ~]# for ((i=1;i<=3;i=i+1));do echo 00$i;done
001
002
003
[root@shell ~]# for ((i=1;i<=3;i=i+1));do printf "%03d\n" $i;done
001
002
003

方法4:sed命令中&命令用法,增加或修改一個字串,

[root@shell ~]# seq 3|sed  's/^[0-9]/00&/g'
001
002
003

方法5:sed命令中()和\1的用法,

[root@shell ~]# seq 3|sed  's/\(^[0-9]\)/00\1/g'
001
002
003

2.如何實作 Nginx 代理的節點訪問日志記錄客戶的 IP 而不是代理的 IP?

使用proxy反向代理模塊中的proxy_set_header引數
proxy_set_header X-Forwarded-For $remote_addr;

3.?IDC 機房帶寬突然從平時 100M 增加到 400M,請你分析問題所在并解決

該故障的影響:直接導致數百臺服務器無法連接,該機房全部業務中斷,
首先會反射為DDOS問題,結果解決時間加長了,如果能提前做好預案,恢復速度可能就會好很多

分析問題
1)IDC帶寬被占滿的原因很多,常見的有:

a.真實遭受DDOS攻擊
b.內部服務器中毒,大量外發流量
c.網站元素(如圖片)被盜連,在門戶頁面被推廣導致大量流量產生
d.合作公司來抓資料,如:對合作單位提供了API資料介面
e.購買了CDN業務,CDN猛抓源站
f.其他原因

2)CDN帶寬例外,源站沒例外,
這類問題基本都是快取在CDN的資料被頻繁訪問引起的,

3) CDN帶寬例外,源站也例外,
可能原因如公司做推廣,大量資料訪問,熱點資料cache里不全,或CDN問題導致資料回源(有關CDN回源率問題及提升回源率經驗,以后再和大家分享),影響就是帶寬高,后端靜態服務器及圖片及存盤壓力大

解決問題
a.如何防止DDOS
①HTTP請求攔截

如果惡意請求有特征,對付起來很簡單:直接攔截它就行了,
HTTP 請求的特征一般有兩種:IP 地址和 User Agent 欄位,比如,惡意請求都是從某個 IP 段發出的,那么把這個 IP 段封掉就行了,或者,它們的 User Agent 欄位有特征(包含某個特定的詞語),那就把帶有這個詞語的請求攔截,

攔截可以在三個層次做,
(1)專用硬體
Web 服務器的前面可以架設硬體防火墻,專門過濾請求,這種效果最好,但是價格也最貴,
(2)本機防火墻
作業系統都帶有軟體防火墻,Linux 服務器一般使用 iptables,比如,攔截 IP 地址1.2.3.4的請求,可以執行下面的命令,

$ iptables -A INPUT -s 1.2.3.4 -j DROP

(3)Web 服務器

Web 服務器也可以過濾請求,攔截 IP 地址1.2.3.4,nginx 的寫法如下,

location / {
  deny 1.2.3.4;
}

Apache 的寫法是在.htaccess檔案里面,加上下面一段,

<RequireAll>
    Require all granted
    Require not ip 1.2.3.4
</RequireAll>

如果想要更精確的控制(比如自動識別并攔截那些頻繁請求的 IP 地址),就要用到 WAF,

②帶寬擴容
HTTP 攔截有一個前提,就是請求必須有特征,但是,真正的 DDOS 攻擊是沒有特征的,它的請求看上去跟正常請求一樣,而且來自不同的 IP 地址,所以沒法攔截,這就是為什么 DDOS 特別難防的原因,
帶寬擴容
CDN 指的是網站的靜態內容分發到多個服務器,用戶就近訪問,提高速度,因此,CDN 也是帶寬擴容的一種方法,可以用來防御 DDOS 攻擊,

網站內容存放在源服務器,CDN 上面是內容的快取,用戶只允許訪問 CDN,如果內容不在 CDN 上,CDN 再向源服務器發出請求,這樣的話,只要 CDN 夠大,就可以抵御很大的攻擊,不過,這種方法有一個前提,網站的大部分內容必須可以靜態快取,對于動態內容為主的網站(比如論壇),就要想別的辦法,盡量減少用戶對動態資料的請求, Coudflare 是一個免費 CDN 服務,并提供防火墻,

b.如何防止盜鏈
方法1:判斷參考地址(判斷瀏覽器請求時HTTP頭的Referer欄位的值)
當你的網站程式接收到下載 jacky.mp3 資源請求的時候,先判斷http的referer欄位的值,如果在對方域名上請求該資源則認為不合法,如果是從 自己的域名(uushare.com)過來的,則可以認為是合法的連接請求,否則就回傳一個錯誤的提示資訊,
配置apache服務器,用于圖片防盜鏈(使用url重寫)

1.#LoadModule rewrite_module modules/mod_rewrite.so				#去掉,重啟apache

2.在需要防盜的網站或者目錄下,寫 .htaccess 檔案(windows下不能直接創建,可以另存)
并指定防盜鏈規則,分析referer資訊,如果不是來自本站,則重寫

重寫規則 .htaccess 檔案
1.哪種情況重寫規則
是jpeg/gif/png圖片的時候
是referer頭與localhost不匹配的時候

2.如何重寫
統一 rewrite 到某個防盜鏈圖片上
RewriteEngine On
//只是在改頁面下生效
Rewrite Base /HTTPxieyi/day1
//會對以下格式的檔案進行重寫規則
RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|gif|png) [NC]
//如果不是來自localhost的用戶,會重寫
RewriteCond %{HTTP_REFERER} !localhost [NC]
//會重寫到blog網的logo上	
RewriteRule .* http://www.blog/picture/1.png

方法2:使用登錄驗證
這個方法常見于論壇、社區,當訪客請求網站上的一個資源時,先判斷此請求是否通過登錄驗證(在asp.net里常用session或form驗證來記錄登錄狀態),如果尚未登錄則回傳一個錯誤提示資訊,使用這個方法還可以進一步判斷登錄的用戶的權限是否足夠,以實作帶“權限”的下載,
這種方法的另外一個缺點是訪客無法匿名下載,所以這個方法一般只用于論壇和社區網站,

方法3:使用圖形驗證碼
使用這個方法可以保證每次下載都是“人”在你的網站上下載,而不是下載工具,

4.發現檔案系統只讀了,是什么原因?如何解決?

目前已知造成硬碟磁區只讀的可能原因有:
檔案系統錯誤
內核相關硬體驅動bug
磁盤壞道
HBA卡故障
RAID卡故障

解決方法:使用fsck命令檢查檔案系統錯誤
1.重啟系統后看看是否可以自動恢復
2.使用fdisk修復
檢查 msdos 檔案系統的 /dev/hda5 是否正常,如果有例外便自動修復 :
fsck -t msdos -a /dev/hda5
3.卸載只讀的磁區,然后重新mount掛載
mount -o remount,rw /

5.binlog是什么?記錄的什么?有幾種作業模式及企業應用場景

binlog:是用于記錄所有更新了資料的操作陳述句,陳述句以事件的形式保存,它描述資料的更改程序
作用:用于實時備份資料,資料庫的主從復制
log_bin 打開記錄binlog功能

binlog的查看

mysqlbinlog /home/mysql/binlog/binlog.000003

binlog的洗掉:可分為自動與手動洗掉
自動洗掉

能過binlog引數expire_logs_days來實作

show binary logs;
show variables like "expire_logs_days";
set gloable expire_logs_days=3;

手工洗掉

reset master 洗掉主的binlog
reset slave 洗掉從的中繼日志

三種模式:
Row level模式 :
日志會記錄每一行資料被修改的形式,然后在從端對相同的資料進行修改
優點:可以不記錄執行SQL陳述句背景關系相關的資訊,只記錄哪一條資料被修改,修改成什么樣了
缺點:所有執行的陳述句都當記錄到日志檔案中,而且都會以每行記錄的修改來記錄,會產生大量的日志內容

statement模式:
每一條修改資料的SQL都會記錄master的bin-log中,slave在復制的時候SQL行程會決議成和原來master端執行過的相同的SQL來執行
優點:解決了上row level模式的缺點,不需要記錄每一行資料的變化,減少日志量,可以得高性能
缺點:由于記錄的是執行陳述句,在此模式下會有主從無法復制的問題出現

mixed自動模式:
MYSQL會根據執行的每一條具體SQL陳述句來區分對待記錄的日志格式,

企業使用場景:
1)如果不會用到mysql特殊的功能,基本都是默認的模式statement模式
2)如果會到mysql的一些特殊功能,基本都是會使用row level模式

第十四周

1.兩個檔案,把第一個檔案中的第2、3行內容添加到第二個檔案的第3行后面

[root@kolor ~]# cat 1.txt 
111
222
333
[root@kolor ~]# cat 2.txt 
AAA
bbb
ccc
ddd

修改后
[root@kolor ~]# cat 2.txt 
AAA
bbb
ccc
222
333
ddd
[root@kolor ~]# sed -i "3a$(sed -n '2,3p' 1.txt |xargs |sed 's# #\\n#g')" 2.txt 
[root@kolor ~]# cat 2.txt 
AAA
bbb
ccc 
222
333
ddd

xargs 會把 換行的變成 222 333
3a加進去,默認是按\n分割. 所以要替換空格為\n

2.腳本直接執行沒有問題,在定時任務中有問題,什么原因?

就是沒有找到ifconfig,與PATH環境變數有關,PATH環境變數在/etc/profile檔案中設定,而定時任務卻是以nologin方式呼叫腳本,不會加載/etc/profile,所以導致此腳本在定時任務中執行失敗

方法1:在腳本中ifconfig 命令寫全路徑 /sbin/ifconfig
方法2:在腳本中加入 source /etc/profile

3.nfs客戶端掛載資訊寫入/etc/fstab中,系統重啟,沒有自動掛載是什么原因?

客戶端掛載:
mount -t nfs 10.0.0.101:/data /mnt
掛載資訊寫入 /etc/fstab 內容如下
10.0.0.101:/data /mnt nfs defaults 0 0

原因:分析一下linux啟動程序就知道了,系統啟動時,執行掛載操作的時候,網路服務還沒有啟動,而nfs掛 載需要網路服務
解決方法:
1、 系統啟動時,同時啟動netfs
chkconfig netfs on
2、 掛載命令寫入
/etc/rc.local

4.Nginx需要優化哪些內容?

1.gzip壓縮優化
2.expires快取優化
3.網路IO事件模型優化
4.隱藏軟體名稱和版本號
5.防盜鏈優化
6.禁止惡意域名決議
7.禁止通過IP地址訪問網站,
8.HTTP請求方法優化,
9.防DOS攻擊單IP并發連接的控制,與連接速率控制,
10.嚴格設定Web站點目錄的權限,
11.將Nginx行程以及站點運行于監牢模式(nginx服務降權啟動(不能使用80埠,使用其他埠,例如8080)、站點目錄設定普通用戶),
12.通過robot協議以及HTTP_USER_AGENT防爬蟲優化
13.配置錯誤頁面根據錯誤碼指定網頁反饋給用戶
14.Nginx日志相關優化
訪問日志切割輪詢、不記錄指定元素日志、最小化日志目錄權限,
15.限制上傳到資源目錄的程式被訪問,防止木馬入侵系統破壞檔案,
16.FastCGI引數buffer和cache以及超時等的優化,
17.php.ini和php-fpm.conf組態檔的優化,
18.有關Web服務的linux內核方面深度優化(網路連接、IO、記憶體等),
19.Nginx加密傳輸優化(SSL),
20.Web服務器磁盤掛載及網路檔案系統優化,
21.使用Nginx cache,
22.nginx WAF(nginx+lua) 安全,

5.企業生產MySQL如何優化?

a:硬體的優化:
1、采用64位cpu,cpu至少4顆,L2快取越大越好
2、記憶體要大,32-64G運行1-2個實體,96-128G運行3-4個實體
3、機械盤選用sas盤,轉速15000以上,用可能的話使用ssd
4、raid卡使用raid10
5、網卡多塊,千兆以上
6、資料庫不要使用虛擬化,slave硬體要好于master

b:作業系統優化
1、作業系統選擇x86_64位,盡量采用xfs檔案系統
2、優化磁盤存盤引數
3、優化內核引數
4、優化網路等

c:mysql構架優化
1、根據記憶體大小,配置服務器跑多實體
2、主從復制采用mixed模式,盡量不要跨機房同步,若要跨機房,盡量采用遠程寫,本地讀
3、定期檢查、修復主從復制的資料差異
4、業務拆分,搜索功能不使用MySQL資料庫執行;某些高并發,安全性一般的業務使用nosql,如:memcache、 redis等
5、資料庫前端加cache,如memcache,用于用戶登錄,商品查詢
6、動態資料靜態化,整個檔案靜態化,頁面片段靜態化
7、資料庫集群讀寫分離,一主多從,通過dbproxy進行集群讀寫分離
8、單表超過800萬,拆庫拆表,如人工將(登錄、商品、訂單)拆表拆庫
9、選擇從庫備份,并且對資料庫進行分表分庫備份

d:MySQL資料庫層面優化
1、優化my.cnf引數
2、優化庫表設計,包括字符集、字串長度、創建短索引、多用復合索引;
3、SQL陳述句優化,減少慢陳述句數量;

e:資料庫管理流程、制度優化
1、人的流程:開發—>核心運維/DBA
2、測驗流程:內網 IDC測驗線上執行
3、客戶端管理,PHPMYADMIN

f:MySQL資料庫安全優化
1、資料庫禁止設定外網
2、資料庫檔案權限優化;
3、授權用戶權限限制,盡量專庫專用戶
4、限制開發對生產庫的操作權限
5、防止SQL陳述句注入

第十五周

1.顯示/etc/inittab中以#開頭,且后面跟了一個或多個空白字符,而后又跟了任意非空白字符的行

正則運算式中 \s代表一個空白字符(可能是空格、制表符、其他空白)
-P 可以讓grep使用perl的正則運算式語法
方法一:grep/egrep

egrep "^#[[:blank:]]+[^[:blank:]]*" /etc/inittab  
grep -P "^#[ \t]+[^ \t]*" /etc/inittab  

grep -P "^#\s+\S+" /etc/inittab

方法二:sed

sed -n '/^#[[:blank:]]+[^[:blank:]]*/p' /etc/inittab
sed -n '/^#[ \t]+[^ \t]*/p' /etc/inittab  
sed -nr '/^#\s+\S+/p' /etc/inittab

方法三:awk

awk   '/^#[[:blank:]]+[^[:blank:]]*/' /etc/inittab
awk   '/^#[ \t]+[^ \t]*/' /etc/inittab  
awk   '/^#\s+\S+/' /etc/inittab

2.對輸入的腳本檔案進行語法檢查;如果有錯誤,則提醒用戶鍵入Q或者q無視錯誤并退出,其它任何鍵可以通過vim打開這個指定的腳本;

要求檔案名以傳參的方式進行傳入,從標準輸入中讀取,檔案名后綴是”.sh”

#!/bin/bash
#
read -p "Please input check script: " file
if [ -f $file ];then
    sh -x $file >/dev/null 2>&1
    if [ $? -ne 0 ];then
        read -p "You input script $file syntax error.[Type Q|q to exit or Type vim to edit]" answer
        case $answer in
        Q|q)
            exit 0
        ;;
        *)
            vim $file
        ;;
        esac
    fi
fi

3.根據要求寫出itpables防火墻規則

iptables支持time時間控制用戶行為,如有請寫出具體操作步驟,限制在每個星期一的0點0分0秒到23點59分59秒這個時間段內,所有icmp協議報文的應答都會拒絕,

iptables -A INPUT -p ICMP --icmp-type 8 -m time --timestart 00:00:00 --timestop 23:59:59 --weekdays Mon -j DROP

icmp 8 是請求
icmp 0 是應答

4.顯示出列印第二列為kolor行的第一列內內容

[root@kolorEdu kolor# cat ip.log
10.0.0.1 kolor
10.0.0.2 oldgirl
10.0.0.3 bingbing
10.0.0.4 tingting
10.0.0.4 kolor
列印第二列為kolor行的第一列內容

方法一:while回圈

while read line
do
    name=`echo $line|awk '{print $2}'`    
    if [ "$name" = "kolor" ];then        
    echo $line|awk '{print $1}'    
    fi
done </kolor/ip.log

方法二:grep
[root@show kolor]# grep -Po “\S+\s(?=kolor)” ip.txt
10.0.0.1
10.0.0.4
[root@show kolor]# grep -Po “[0-9. ]+(?=kolor)” ip.txt
10.0.0.1
10.0.0.4
-o:只顯示與正則運算式匹配的部分,
\s 表格,換行等空白區域
\S 非空白區域
() 將正則運算式的一部分括起來組成一個單元,可以對整個單元使用數量限定符
零寬斷言

  • 零寬度正預測先行斷言 (?=exp)匹配exp前面的位置
    例:\b\w+(?=ing\b),匹配以ing結尾的單詞的前面部分(除了ing以外的部分),如查找I’m singing while you’re dancing.時,它會匹配sing和danc,

方法三:sed
?

sed -nr '/kolor/ s#(^[^ ]+).*$#\1#gp' ip.sh

方法四:awk

awk '$2~/kolor/{print $1}' ip.sh
~是匹配的意思,找出包含kolor的
https://www.cnblogs.com/-beyond/p/9254007.html

5.權限拒絕 常見的permission denied 原因

  • 顯示目錄里面的內容 需要kolor用戶對這個目錄要有r和x的權限,
  • 洗掉一個檔案需要kolor用戶對這個檔案的上一級目錄 擁有w和x權限,
    因為檔案名實際存放在目錄的block中,所以kolor用戶要洗掉/etc/passwd 實際上是洗掉/etc/目錄block的資訊,
  • 對于修改檔案的內容,要看kolor用戶對這個檔案是否有r和w的權限,

第十六周

1.shell腳本知識點:不影響腳本運行的前提下,對腳本進行加密
方法一:shc
shc -r -f script-name 注意:要有-r選項, -f 后跟要加密的腳本名.
運行后會生成兩個檔案,script-name.x 和 script-name.x.c
script-name.x是加密后的可執行的二進制檔案.
./script-name 即可運行.
script-name.x.c是生成script-name.x的原檔案(c語言)

方法二:gzexe
2.shell腳本知識點:書寫腳本完成ftp上傳下載
FTP如果有些檔案需要每天定時進行上傳或下載,人為重復相同作業也是沒有意義的
因此如何撰寫自動下載或上傳FTP檔案腳本?

ftpput.sh 上傳檔案到ftp腳本

#!/bin/sh        
#FileName:ftpput.sh    
#Function:從本地客戶端向ftp服務器上傳一個檔案      
#Version:V0.1        
#Author:    
#Date:
# $#表示傳遞給此Shell腳本的引數個數  
# -ne表示不等于  
if [ $# -ne 2  ]  
then  
    echo "Usage $0  <local_dir/filename> <remote_dir>"  
    exit 1  
fi    
說明:如果傳遞的引數個數不等于2個,即提示傳參報錯資訊

# IP表示ftp的服務器ip地址  
IP=127.0.0.1    
#IP=192.168.6.1  
 
# FULLNAME獲取本地檔案全路徑名  
FULLNAME=$1  
 
# DESTDIR獲取需要上傳的ftp遠程目錄路徑  
DESTDIR=$2 

# basename回傳一個路徑中的檔案名部分  
# 如FULLNAME="/home/Sunrier/Proj/log/test.log";  
# 當local_filename=`basename $FULLNAME`  
# 最終local_filename="test.log"  
local_filename=`basename $FULLNAME`  
 
# DESTFILE表示ftp服務器的路徑,以及保存后的檔案名  
DESTFILE=$DESTDIR/$local_filename  

# 自動上傳檔案到ftp服務器,免互動方式
ftp -i -n <<FTPIT  
open $IP  
user Sunrier redhat  
bin  
passive  
cd /home/remote/log/ftpfile  
put $FULLNAME $DESTFILE  
quit  
FTPIT  
exit 0

ftpget.sh 下載檔案到ftp客戶端腳本

#FileName:ftpget.sh    
#Function:從ftp服務器上下載一個檔案到本地計算機上      
#Version:V0.1        
#Author:
#Date:
     
# $#表示傳遞給此Shell腳本的引數個數  
# -ne表示不等于  
if [ $# -ne 2  ]  
then  
    echo "Usage $0  <remote_dir/filename> <local_dir>"  
    exit 1  
fi 

# IP表示ftp的服務器ip地址  
IP=127.0.0.1    
#IP=192.168.6.1 

# FULLNAME獲取從ftp服務器上下載的檔案全路徑名  
FULLNAME=$1 

# DESTDIR獲取從ftp服務器上下載的檔案所存放的本地計算機的目錄路徑  
DESTDIR=$2  
 
# remote_filename獲取從ftp服務器上下載的檔案名  
remote_filename=`basename $FULLNAME`  
 
# DESTFILE表示下載檔案所存放的本地路徑,以及本地保存后的檔案名  
DESTFILE=$DESTDIR/$remote_filename

ftp -i -n <<FTPIT  
open $IP  
user Sunrier redhat  
bin  
cd /home/remote/log/ftpfile  
get $FULLNAME $DESTFILE  
quit  
FTPIT       
exit 0

3.網路并發,并發與架構設計基礎知識

想建設一個能承受500萬PV/每天的網站嗎? 500萬PV是什么概念?
服務器每秒要處理多少個請求才能應對?如何計算呢?
PV是什么:PV是page view的簡寫,PV是指頁面的訪問次數,每打開或重繪一次頁面,就算做一個pv,

日均IP/ PV 訪問量約為600 / 2400的意思是,今天訪問首頁次數為2400次,訪問IP為600個,也就是說這600個IP一共訪問首頁2400次,

計算模型: 
每臺服務器每秒處理請求的數量=((80%*總PV量)/(24小時*60*60*40%)) / 服務器數量 ,
其中關鍵的引數是80%、40%,表示一天中有80%的請求發生在一天的40%的時間內,24小時的40%是9.6小時,有80%的請求發生一天的9.6個小時當中(很適合互聯網的應用,白天請求多,晚上請求少), 

簡單計算的結果:
4000000/34560/1=115.7
((80%*500)/(24小時*60*60*40%))/1 = 115.7個請求/秒 
((80%*100)/(24小時*60*60*40%))/1 = 23.1個請求/秒 

初步結論:
現在我們在做壓力測驗時,就有了標準,如果你的服務器一秒能處理115.7個請求,就可以承受500萬PV/每天,
如果你的服務器一秒能處理23.1個請求,就可以承受100萬PV/每天,

留足余量:
以上請求數量是均勻的分布在白天的9.6個小時中,但實際情況并不會這么均勻的分布,會有高峰有低谷,為了應對高峰時段,應該留一些余地,最少也要x2倍,x3倍也不為過,
115.7個請求/秒 *2倍=231.4個請求/秒
115.7個請求/秒 *3倍=347.1個請求/秒
23.1個請求/秒 *2倍=46.2個請求/秒
23.1個請求/秒 *3倍=69.3個請求/秒

最終結論:
如果你的服務器一秒能處理231.4--347.1個請求/秒,就可以應對平均500萬PV/每天,
如果你的服務器一秒能處理46.2--69.3個請求,就可以應對平均100萬PV/每天,

說明:
這里說明每秒N個請求,就是QPS,因為我關心的是應用程式處理業務的能力,

帶寬、硬體

4.虛擬機使用知識點: vmware centos7虛擬機克隆系統如何修改網卡設定?

1、克隆虛擬機,克隆前需關閉虛擬機
2、克隆之后的網卡問題解決,其中需要修改HWADDR ? 和UUID
  /etc/sysconfig/network-scripts/ifcfg-ens32
  uuid獲取:用命令 nmcli con show 獲取
  mac地址獲取:從虛擬機的屬性里獲取

5.?shell知識點:shell腳本中字串截取

假設有變數
var=http://www.koloredu.com/123.htm.

1. # 號截取,洗掉左邊字符,保留右邊字符,
變數: var=http://www.koloredu.com/123.htm
echo ${var#*//}
其中 var 是變數名,# 號是運算子,*// 表示從左邊開始洗掉第一個 // 號及左邊的所有字符
即洗掉 http://
結果是 :www.koloredu.com/123.htm

2. ## 號截取,洗掉左邊字符,保留右邊字符,
變數: var=http://www.koloredu.com/123.htm
echo ${var##*/}
##*/ 表示從左邊開始洗掉最后(最右邊)一個 / 號及左邊的所有字符 
即洗掉 http://www.koloredu.com/
結果是 :123.htm

3. %號截取,洗掉右邊字符,保留左邊字符
變數: var=http://www.koloredu.com/123.htm
echo ${var%/*}
%/* 表示從右邊開始,洗掉第一個 / 號及右邊的字符
即洗掉 /123.htm
結果是:http://www.koloredu.com

4. %% 號截取,洗掉右邊字符,保留左邊字符
變數: var=http://www.koloredu.com/123.htm
echo ${var%%/*}
%%/* 表示從右邊開始,洗掉最后一個 / 號及右邊的字符 
即洗掉  //www.koloredu.com/123.htm.
結果是:http:

5. :x:y格式表示取字串資訊,從左邊第x+1個字符開始,及取出字符的y個數
變數: var=http://www.koloredu.com/123.htm
echo ${var:0:5} 
其中的 0 表示左邊第一個字符開始,5 表示字符的總個數,
即取值 從字串的0字符取值h,取5個字符,到字符:(冒號) 
結果是:http:

6. :y格式表示取字串資訊,從左邊第y+1個字符開始,一直到結束,
變數: var=http://www.koloredu.com/123.htm
echo ${var:7} 
其中的 7 表示左邊第8個字符開始,一直到結束, 
即取值 從字串的第7位/之后取值,知道字串結束
結果是 :www.koloredu.com/123.htm

7. :x-y:z格式表示取字串資訊,其中x-y表示字串的取值范圍,從右邊第x-y位個字符取值,及取字符的z個字符數
變數: var=http://www.koloredu.com/123.htm
echo ${var:0-7:3}
其中的 0-7 表示右邊算起第七個字符開始,3 表示字符的個數,
即取值 0-7從字串右邊取7位,然后再從左邊取前3位
PS:特殊說明
①當1-7時,表示0-7取7位,但從最左邊的取值中減去1位,即var=987654321   0-7=987654321  1-7=87654321  
②當7-7時,表示0-7取7位,但從最左邊的取值中減去7位,即var=987654321   0-7=987654321  7-7=987654321
③當取值的范圍小于輸出的字符數時,將全部輸出,即var=987654321    0-3=321   取4位時,顯示321
結果是:123

8. :x-y格式表示取字串資訊,其中x-y表示字串的取值范圍,從右邊第0個字符開始,一直到y位結束,
變數: var=http://www.koloredu.com/123.htm
echo ${var:0-7}
表示從右邊第七個字符開始,一直到結束,
即取值 0-7從字串右邊取7位 
結果是:123.htm
注:(左邊的第一個字符是用單個數字字符0表示,右邊的第一個字符用 0-1 表示).com/123.htm.

在這里插入圖片描述

第十七周

1.服務器上有哪些常用的作業系統,各有什么特點?
在這里插入圖片描述
2.常用的磁盤raid有哪些?描述下原理和區別?
在這里插入圖片描述
3.如何找出/usr/local 下面所有shell腳本檔案,并設定執行權限?
方法1.正常思路版本

find /usr/local/ -type f -name "*.sh" |xargs chmod +x
chmod +x ` find /usr/local/ -type f -name "*.sh"`
find /usr/local/ -type f -name "*.sh" -exec chmod +x {} \;
可是這個方法不嚴謹,因為有的腳本不是以.sh結尾的,

方法2.精確方法

通過file命令查看檔案型別,通過awk、sed、grep過濾出包含shell script的然后授予x權限,
find /usr/local/ -type f |xargs file |awk -F: '/shell.script/{print $1}'|xargs chmod +x 
chmod +x ` find /usr/local/ -type f |xargs file |awk -F: '/shell.script/{print $1}'`

在這里插入圖片描述

4.Mount掛載/data時出現mount: /data is busy 如何解決?
1.查看是否正在使用中
2.df -h查看下
3.有時候會存在 df -h不會顯示出來,可是實際還在掛載
4.這時候 grep “/data” /proc/mounts 來進行查看
5.然后卸載 umount /data
6.卸載失敗就強制卸載umount -lf /data
7.然后mount新的設備即可,

  • 先umount 再mount
  • 如果不行,使用 fuser -km /data

第十八周

1.如何查看linux系統時間?若當前系統時區不是中國,如何修改?
如果不是中國時區,修正方法:
CentOS6:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
CentOS7:
timedatectl set-timezone Asia/Shanghai

2.Linux如何設定每天凌晨三點重啟nginx服務

crontab -e
00 03 * * * /application/nginx/sbin/nginx -s reload &>/dev/nul

3.MySQL如何授權用戶admin:password遠程訪問權限
假定內網網段172.16.1.0,用戶admin,密碼password,資料庫kolor,

只創建用戶:
create user 'admin'@'172.16.1.%' identified by 'password';

創建用戶并授權資料庫權限,這種方式也是作業中最常用的:
grant all privileges on kolor.* to  'admin'@'172.16.1.%' identified by 'password';

4.php-fpm優化關閉危險引數

1、打開php的安全模式
 php的安全模式是個非常重要的php內嵌的安全機制,能夠控制一些php中的函式執行,比如system(),同時把被很多檔案操作的函式進行了權限控制,
默認關閉,338行
safe_mode = Off
改為
safe_mode = On

2、用戶組安全
; By default, Safe Mode does a UID compare check when
; opening files. If you want to relax this to a GID compare,
; then turn on safe_mode_gid.
; http://php.net/safe-mode-gid
safe_mode_gid = Off  # php5.3.27默認關閉

3、關閉危險函式
當打開安全模式,函式禁止可以不做,但為了雙重保隙訓是做,比如不執行system()能執行系統命令的函式,或能查看php資訊的phpinfo()等函式,方法如下
disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

4、關閉php版本號
php版本號會在http的head里顯示
expose_php = On
改為
expose_php = Off

5、關閉注冊全域變數
register_globals = Off  # 默認關閉,不要打開

6、打開magic_quotes_gpc防止SQL注入
magic_quotes_gpc = Off
改為
magic_quotes_gpc = On

7、錯誤資訊控制
 一般php在沒有連接到資料庫或者其他情況下會有錯誤提示,一般錯誤資訊中會包含php腳本當前的路徑資訊或者查詢的SQL陳述句等資訊,這類資訊在生產環境是不允許的,應禁止,想要錯誤資訊,應該匯入日志,
display_errors = Off (默認值,不是改為off)

顯示錯誤級別
error_reporting = E_WARNING & E_ERROR

8、錯誤日志
log_errors = On
log_errors_max_len = 1024   # Set maximum length of log_errors.
error_log = /app/logs/php_errors.log  # 注意寫權限

9、資源引數限制優化
# 設定每個腳本運行的最長時間,當無法上傳較大的檔案或者后臺備份資料經常超時,需調整下面引數,單位秒,
max_execution_time = 30
# 每個腳本使用的最大記憶體
memory_limit = 128M
# 每個腳本等待輸入資料最長時間
max_input_time = 60 
# 上傳檔案的最大許可
upload_max_filesize = 2M

10、安全引數優化
# 禁止打開遠程地址
allow_url_fopen = On
改為
allow_url_fopen = Off
# 防止Nginx檔案型別錯誤決議漏洞
cgi.fix_pathinfo=0

第十九周

1.find-size引數
①查找當前目錄下以log結尾的大于50k小于2M的普通檔案
②查找當前目錄下以log結尾的小于50k大于2M的普通檔案

[root@nfs01 tmp]# find -type f -name "*.log" -size -2M  -size +50k
./d.log
./b.log
問題1比較簡單,因為所有的查找條件都是與的邏輯

第二個不能直接-o,這樣找出來的是不完整的

[root@nfs01 tmp]# find -type f -name "*.log" -size +2M -o -size -50k
第二個不能直接-o,這樣找出來的是不完整的

[root@nfs01 tmp]# find -type f -name "*.log" -size +2M
./c.log
[root@nfs01 tmp]# find -type f -name "*.log" -size -50k
./a.log
分開兩條找,然后合并

[root@nfs01 tmp]# find -type f -name "*.log" \( -size +2M -o -size -50k \)
./c.log
./a.log

2.linux中一個檔案由哪幾部分組成?
Linux檔案系統(如ext2、ext3)中一個檔案由目錄項(檔案名)inode(元資料)資料組成,

目錄項: 檔案名
inode(元資料):又稱檔案索引節點,是檔案屬性的存放地和資料塊指標存放地,
所有與某個檔案相關聯的額外資訊都保存在一個叫做inode的結構中
inode包括 檔案型別、權限、硬鏈接數、所有者及所屬組、檔案大小、時間資訊
資料:檔案的具體內容存放地,

目錄項、inode、資料三者之間的關系:
一個檔案名只能與一個 inode關聯,一個inode可以關聯多個檔案名,inode與資料是一一對應的

Linux檔案系統(如ext2、3等)將硬碟磁區時會劃分出目錄塊、inode Table區塊和data block資料區域,一個檔案由一個目錄項、inode和資料區域塊組成,Inode包含檔案的屬性(如讀寫屬性、owner等,以及指向資料塊的指標),資料區域塊則是檔案內容,當查看某個檔案時,會先從inode table中查出檔案屬性及資料存放點,再從資料塊中讀取資料,

3.如何在命令列查詢,已安裝的php模塊
php -m

4.網站訪問高峰之后,如何回收已占用的swap磁區?
[root@kolor ~]# swapoff -a
[root@kolor ~]# swapon -a
[root@kolor ~]# free -m

5.yum安裝軟體的時候,記不全包名,如何查找到完整的包名?
方法一:yum search bash
方法二:yum list | grep ^bash

6.出現Swap file….already exists以下錯誤如何解決?
E325: ATTENTION
Found a swap file by the name ".a.sh.swp"Swap file “.a.sh.swp” already exists!
[O]pen Read-Only, (E)dit anyway, ?ecover, (D)elete it, (Q)uit, (A)bort:
解決方法
1.首先輸入R,恢復資料,
2.然后輸入D,洗掉臨時檔案
3.最后輸入:wq!保存檔案并退出,此時再次編輯檔案就一切正常了

7.提示 “Warning: /dev/root does not exist, could not boot” 解決辦法
tracut:/# lvm vgscan
tracut:/# lvm vgchange -ay
tracut:/# exit

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/49066.html

標籤:其他

上一篇:【云平臺分布式調度系統的演進】課程注冊騰訊云免費觀課

下一篇:大佬們,我的HADOOP一直報錯,我把除錯資訊發出來,求大佬們幫我看看我到底是哪里出問題了!!!跪謝

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more