linux必備技能

来源:http://www.cnblogs.com/wx90/archive/2017/09/12/7508478.html
-Advertisement-
Play Games

前言:轉載 陳浩一個從事安全運維向的前輩文章。寫的很好。人非常nice,遇到了問題,qq上很快就回覆了我。 大道三千 入門最難,凡事入了行,也就什麼都好說了,好的自然不斷努力奮鬥修行,不好的自然很快就被淘汰。恭謹勤勉,時不我待~ it自動化運維就是要很方便的運用各種工具進行管理維護,有效的實施伺服器 ...


前言:轉載 陳浩一個從事安全運維向的前輩文章。寫的很好。人非常nice,遇到了問題,qq上很快就回覆了我。

大道三千 入門最難,凡事入了行,也就什麼都好說了,好的自然不斷努力奮鬥修行,不好的自然很快就被淘汰。恭謹勤勉,時不我待~

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

it自動化運維就是要很方便的運用各種工具進行管理維護,有效的實施伺服器保護
linux運維人員常用工具介紹

rsync 強化技術(手動修改埠開啟防火牆的情況下)並且通過腳本只同步需要的伺服器

inotify+rsync+mutt+msmtp 實現linux文件或者目錄自動更新並且實現發郵件給管理員

Samba文件共用服務(共用腳本 讓你工作更輕鬆)

Linux web服務安裝apache 思路 (源碼編譯,自己定義服務)

FTP(持虛擬用戶,並且每個虛擬用戶可以具有獨立的屬性配置)

linux 下構建DHCP伺服器

 

防火牆(一)主機型防火牆

防火牆(二)SNAT和DNAT


mysql 主從同步,雙主同步,如果伺服器意外掛機,不同步怎麼辦

mysql 高性能壓力測試(總結了好久)

nginx 緩存配置及報錯解決

常見的MySQL命令大全


以上就是踏入linux運維工程師需要掌握的工具,其實還有很多工具要掌握的,但你在學習環境中是很難學到,最後我再提醒一下,這裡所指的工具相當於技能,而不是像windows或ubuntu那些圖形化工具,那些工具沒用的,還有,學linux就別裝圖形界面,這樣虛擬機就不用吃太多記憶體,而且絕對不建議在真機上裝linux,根本達不到學習效果。

 

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

詳解 Linux 運維工程師打怪升級篇

積累經驗篇
做運維也快4年多了,就像游戲打怪升級,升級後知識體系和運維體系也相對變化挺大,學習了很多新的知識點。

運維工程師 是從一個呆逼進化為苦逼再成長為牛逼的過程,前提在於你要能忍能幹能拼,還要具有敏銳的嗅覺感知前方潮流變化。如:今年大數據,人工智慧比較火。。。(相對錶示就是 python 比較火)

前面也講了運維基礎篇,發現對很多人收益挺大,接下來也寫下關於這4年多的運維實踐經驗,從事了2年多游戲運維,1年多安全運維,1年大數據運維,相關行業信息不能算非常精通嗎,但是熟悉和熟練還是相對可以的。

 

 

拓撲詳見:

中級篇
從我後面面試經歷和麵試別人的經歷。有些人認為,其實運維就是部署某個軟體,設置些基礎功能,就算會運維了。

舉個例子:安裝LAMP,LNMP,就感覺部署方法我都掌握了。其實網上大多數都有一鍵安裝腳本啥的根本沒有啥技術含量,在面試官眼裡,這些都不是你的亮點。基本到了公司一般環境架構都是部署好的,很少需要你去變動環境架構。就算你安裝好 LNMP 架構你熟悉裡面的原理嗎,熟悉 Nginx 優化嗎,熟悉 MySQL 優化嗎?

再舉個例子:我面試遇到的問題,面試官問你既然熟悉 LNMP 架構,那麼 Nginx 反向代理的作用。
你應該不是說出懂這個軟體和配置,你儘可能的說怎麼優化,怎麼深入提高網站性能。

1、使用反向代理可以理解為7層應用層的負載均衡,使用負載均衡之後可以非常便捷的橫向擴展伺服器集群,實現集群整體併發能力、抗壓能力的提高。
2、通常反向代理伺服器會帶有本地 Cache 功能,通過靜態資源的 Cache,有效的減少後端伺服器所承載的壓力,從而提高性能。

下麵說說運維在工作中需要掌握的核心技術
註意,這是在工作中掌握的,在學習中很難掌握。

#6458M為真實使用記憶體  1649M為真實剩餘記憶體(剩餘記憶體+緩存+緩衝器)

#linux會利用所有的剩餘記憶體作為緩存,所以要保證linux運行速度,就需要保證記憶體的緩存大小

  

系統信息:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 uname -a              # 查看Linux內核版本信息 cat /proc/version     # 查看內核版本 cat /etc/issue        # 查看系統版本 lsb_release -a        # 查看系統版本  需安裝 centos-release locale -a             # 列出所有語系 locale                # 當前環境變數中所有編碼 hwclock               # 查看時間 who                   # 當前線上用戶 w                     # 當前線上用戶 whoami                # 查看當前用戶名 logname               # 查看初始登陸用戶名 uptime                # 查看伺服器啟動時間 sar -n DEV 1 10       # 查看網卡網速流量 dmesg                 # 顯示開機信息 lsmod                 # 查看內核模塊

  

硬體信息:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 more /proc/cpuinfo                                       # 查看cpu信息 lscpu                                                    # 查看cpu信息 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c    # 查看cpu型號和邏輯核心數 getconf LONG_BIT                                         # cpu運行的位數 cat /proc/cpuinfo | grep 'physical id' |sort| uniq -c    # 物理cpu個數 cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l     # 結果大於0支持64位 cat /proc/cpuinfo|grep flags                             # 查看cpu是否支持虛擬化   pae支持半虛擬化  IntelVT 支持全虛擬化 more /proc/meminfo                                       # 查看記憶體信息 dmidecode                                                # 查看全面硬體信息 dmidecode | grep "Product Name"                          # 查看伺服器型號 dmidecode | grep -P -A5 "Memory\s+Device" | grep Size | grep -v Range       # 查看記憶體插槽 cat /proc/mdstat                                         # 查看軟raid信息 cat /proc/scsi/scsi                                      # 查看Dell硬raid信息(IBM、HP需要官方檢測工具) lspci                                                    # 查看硬體信息 lspci|grep RAID                                          # 查看是否支持raid lspci -vvv |grep Ethernet                                # 查看網卡型號 lspci -vvv |grep Kernel|grep driver                      # 查看驅動模塊 modinfo tg2                                              # 查看驅動版本(驅動模塊) ethtool -i em1                                           # 查看網卡驅動版本 ethtool em1

  

● 使用分析系統分析web日誌。(如逆火軟體,)
● 分析系統性能瓶頸點(IO/memory/cpu,常用工具,top命令中shift組合鍵的特殊用Sar/vmstat/iostat/ipcs)

日誌管理常用命令:

1 2 3 4 5 6 7 8 9 10 history                      # 歷時命令預設1000條 HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "   # 讓history命令顯示具體時間 history  -c                  # 清除記錄命令 cat $HOME/.bash_history      # 歷史命令記錄文件 lastb -a                     # 列出登錄系統失敗的用戶相關信息  清空二進位日誌記錄文件 echo > /var/log/btmp  last                         # 查看登陸過的用戶信息  清空二進位日誌記錄文件 echo > /var/log/wtmp   預設打開亂碼 who /var/log/wtmp            # 查看登陸過的用戶信息 lastlog                      # 用戶最後登錄的時間 tail -f /var/log/messages    # 系統日誌 tail -f /var/log/secure      # ssh日誌

  

2、優化
優化可以說是運維最吃香的技能,基本會優化的運維普遍工資很高,而且優化是要承擔風險的,並不是網上搜個文章改一下配置文件或者參數就叫優化了,這樣很容易造成宕機。

優化是根據實際的現場環境硬體各個參數進行部分優化,提高軟體性能和網站性能。這個我只能講半知半解,當時優化mysql和tomcat參數也是根據網上文章和官網文檔查找參數在虛擬機上測試然後查看性能。

成本優化,性能優化。這裡我給出 tomcat 優化 jvm 參數(做過相應測試才放到現場環境的):(記住無監控不調優)
-標準參數,所有jvm都應該支持
-X 非標,每個jvm實現都不同
-XX 不穩定參數,下一版本可能會取消
serial collector 單線程 序列化
parallel collector 多線程

啟動 jvisualvm.exe 監控 dump 記憶體溢出
-Xms:初始堆大小
-Xmx:最大堆大小
-Xss:線程棧大小
-XX:NewSize=n:設置年輕代大小
-XX:NewRatio=n:設置年輕代和年老代的比值,如3, 標示年輕代:年老代比值1:3,年輕代占整個年輕代年老代和的1/4
-XX:SurvivorRatio=n:年輕代中的eden區與2個Survivor區的比值。
-XX:MaxPermSize=n:設置持久代大小

收集器設置
-XX:+UseSerialGC:設置串列收集器
-XX:+UseParallelGC:設置並行收集器
-XX:+UseConcMarkSweepGC:設置併發收集器

回收統計信息
-XX:+PrintGC
-XX:+PrintGCDetails
-Xloggc:filename

tocmat 優化 確認有幾個 jvm 虛擬機
set JAVA_OPTS=
-Xms4g
-Xmx4g
-Xss512k
-XX:+AggressiveOpts 進攻型的優化選項,所有優化項都加上
-XX:+UseBiasedLocking 優化鎖,基本都要選上,偏執鎖
-XX:permSize=64m 原始區大小,最大300m 類多就設置大一點
-XX:MaxPermSize=300m
-XX:+DisableExplicitGC //System.gc() 不顯示調用gc
-XX:+UseConcMarkSweepGC 使用cms縮短相應時間,併發收集,低停頓
-XX:+UseParNewGC 並行收集新生代的垃圾
-XX:+CMSParallelRemarkEnabled 在使用UseParNewGC的情況下,儘量減少mark的時間
-XX:+UseCMSCompactAtFullCollection 使用併發收集器時,開啟對年老代的壓縮,使碎片減少
-XX:LargePageSizelnBytes=128m 記憶體分頁大小對性能的提升
-XX:+UseFastAccessorMethods get/set方法轉成本地代碼
-Djava awt headless=true 修複linux下tomcat處理圖標時可能產生的bug

記憶體調優:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 "C:\Program Files\Java\jdk1.8.0_31\bin\java" -XX:+DoEscapeAnalysis -XX:+EliminateAllocations -XX:+UseTLAB -XX:+PrintGCDetails -Didea.launcher.port=7540 "-Didea.launcher.bin.path=E:\java\IntelliJ IDEA 2016.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_31\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_31\jre\lib\rt.jar;E:\java\new\out\production\new;E:\java\IntelliJ IDEA 2016.3\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain aa.T02 Heap  PSYoungGen      total 38400K, used 3994K [0x00000000d5d80000, 0x00000000d8800000, 0x0000000100000000)   eden space 33280K, 12% used [0x00000000d5d80000,0x00000000d61668b8,0x00000000d7e00000)   from space 5120K, 0% used [0x00000000d8300000,0x00000000d8300000,0x00000000d8800000)   to   space 5120K, 0% used [0x00000000d7e00000,0x00000000d7e00000,0x00000000d8300000)  ParOldGen       total 87552K, used 0K [0x0000000081800000, 0x0000000086d80000, 0x00000000d5d80000)   object space 87552K, 0% used [0x0000000081800000,0x0000000081800000,0x0000000086d80000)  Metaspace       used 3072K, capacity 4494K, committed 4864K, reserved 1056768K   class space    used 329K, capacity 386K, committed 512K, reserved 1048576K Heap  PSYoungGen      total 38400K, used 1147K [0x00000000d5d80000, 0x00000000d8800000, 0x0000000100000000)   eden space 33280K, 3% used [0x00000000d5d80000,0x00000000d5e9ecb8,0x00000000d7e00000)   from space 5120K, 0% used [0x00000000d8300000,0x00000000d8300000,0x00000000d8800000)   to   space 5120K, 0% used [0x00000000d7e00000,0x00000000d7e00000,0x00000000d8300000)  ParOldGen       total 87552K, used 0K [0x0000000081800000, 0x0000000086d80000, 0x00000000d5d80000)   object space 87552K, 0% used [0x0000000081800000,0x0000000081800000,0x0000000086d80000)  Metaspace       used 3072K, capacity 4494K, committed 4864K, reserved 1056768K   class space    used 330K, capacity 386K, committed 512K, reserved 1048576K   線程本地緩存使用eden的,開啟就會使用更多

  

tomcat 前任何參數沒參加大概每秒605 調優後大概每秒435 接近3倍的結果

3、開發技能
優選 shell 和 python,現在 shell 無法滿足你的需求或者效率很低,那麼選擇自動化 python 是最好的選擇。現在普遍招聘需求要求,會寫 shell 或者 python,perl 腳本,個人選擇還是選 python。

python 這門語言上手比較快,容易理解。

python 在伺服器管理工具上非常豐富,配置管理(saltstack) 批量執行( fabric, saltstack) 監控(Zenoss, nagios 插件) 虛擬化管理( python-libvirt) 進程管理 (supervisor) 雲計算(openstack) ...... 還有大部分系統 C 庫都有 python 綁定。

對於流程確定的事情,最終一定是納入系統管理的體系,寫成程式,成為系統的一部分。而不是無法復用游離與整體的各種腳本。

隨著雲計算時代的來臨,中小型公司,不需要運維了。大型公司,沒有工程開發能力的運維,是沒有競爭力的。

最重要的學好 python 可以漲工資,可以漲工資,可以漲工資。(重要的事情說三遍。)
目前本人也是在學 python,正在把以前 shell 腳本的實例轉換成 python 腳本。

python筆記:python實例手冊(一直在看)
下載鏈接:http://down.51cto.com/data/2329173

4、意識篇
1) 安全意識:
運維人員的許可權很大,所以一定要保證帳號/私鑰的安全。
● 最好使用加密工具存儲。比如truecrypt,lpassword
● 基於本地存儲。切勿用網盤,也不建議用lastpass等
● ssh私鑰添加密碼

2) 磨刀意識:
關於任何操作配置,最好先搞明白操作或配置的原理,然後再去操作。應一句話叫做“磨刀不誤砍柴功”,而且對於類似的操作可以舉一反三。

3) 計劃意識:
複雜的變更操作比如多台主機以及牽涉到san存儲,最好先作 操作計劃,寫計劃文檔,詳細緻每條命令,然後請高手幫忙審核。 這樣能最大程度使整個操作過程安全。如果是重要的客戶業務系統,操作最好有回退方案,而一旦變更失敗,客戶可以在短時間內將業務回退。

4) 記錄分享意識:
遇到自己認為較特殊的案例時,記得要寫 案例過程及分析的文檔。也方便自己以後翻看,或者和其他兄弟分享,作知識的傳播以便於大家以後都能少走彎路。

5) 監控意識:
運維來說,監控是非常重要的,監控是發現系統各種異常的眼睛,所以運維應該和監控緊密配合。

6) 業務意識:
儘量瞭解維護的各主機上業務類型,以及各主機業務之間的關聯性。因為任何維護工作都是為主機能提供業務服務的,當某業務中斷,能最快的知道與此業務相關的主機群,從而縮小故障排查範圍,最快定位故障。

附上運維思路拓撲圖:

可以看看:安全運維理念(半神半仙亦民工)

意識是很重要,並不是你技術很牛,學的技術很多很熟,就不代表你不需要運維意識,其實領導很看重運維意識的,例如有沒有做好備份,許可權分配問題,平臺測試情況,故障響應時間等,這些都是意識,而不是你學了很多技術自認大牛了,平臺發現故障你又沒什麼大不子,以為很簡單的問題喜歡處理就處理,不需要向其它部門反饋等,領導不是看你的技術如何,而是看你的運維意識如何,你沒運維意識,技術再牛也沒用,只會讓其它部門的人跟你不協調。

要知道做IT這行是苦B的,需要無盡的學習,不學習只會被淘汰,不想被年輕的淘汰,就只能不斷增值自己,不然不是你工資無法提升,而是你無法再從事這行。

這個世界,在悄悄懲罰不改變的人...

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 從本地複製到遠程 從遠程複製到本地 說明 ...
  • 本文目錄:1.awk簡介和基本語法格式2.print和printf格式化輸出3.輸入行的欄位分隔符和行分隔符4.BGEIN和END5.數組6.流程式控制制語句 6.1 條件判斷語句 6.2 while迴圈 6.3 do迴圈 6.4 for迴圈7.更完整的awk程式格式和表達式8.awk中的變數9.awk ...
  • ``` 第一講小結 1. 游標在屏幕文本中的移動既可以用箭頭鍵,也可以使用 hjkl 字母鍵。 h (左移) j (下行) k (上行) l (右移) 2. 欲進入 Vim 編輯器(從命令行提示符),請輸入:vim 文件名 3. 欲退出 Vim 編輯器,請輸入 :q! 放棄所有改動。 ... ...
  • 主要內容: 技術關鍵點:docker17.06.3安裝,docker自製鏡像及相關容器操作,docker分配固定IP及添加埠映射,solrCloud集群部署等 主要思路:在Ubuntu14.04操作系統的宿主機中,安裝docker17.06.3,將宿主機的操作系統製作成docker基礎鏡像,之後使 ...
  • 1.運行-regedit 打開註冊表 定位到 HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control Network {4D36E972-E325-11CE-BFC1-08002BE10318} 目錄下 這裡保存著當前網卡配置信息,查找目錄下每個子目錄... ...
  • Ubuntu16.04無法安裝libtool,只能在Ubuntu14.04以下版本安裝。 cp 下載/crosstool-ng-1.22.0.tar.bz2 /home/hou/ tar -xvf crosstool-ng-1.22.0.tar.bz2 cd crosstool-ng 安裝一些必要的... ...
  • 1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 ...
  • 簡述:ActiveMQ是由Apache出品的,一款最流行的,能力強勁的開源消息匯流排。ActiveMQ是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實現,它非常快速,支持多種語言的客戶端和協議,而且可以非常容易的嵌入到企業的應用環境中,並有許多高級功能。 安裝Active ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...