引言
? ?本章節(jié)主要用于補(bǔ)齊之前GC篇章、JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)的一些JVM參數(shù)以及常用的Linux指令,更多的作用也可以看作是JVM與Linux的參數(shù)列表大全。對(duì)于開發(fā)者而言,能夠控制JVM的部分也就只有啟動(dòng)參數(shù)了,同時(shí),對(duì)于JVM的性能調(diào)優(yōu)而言,JVM的參數(shù)也是基礎(chǔ)。
“本篇主要用于記錄一些常用的JVM參數(shù)與Linux指令,方便之后使用時(shí)快速查找”。
? ?在JVM的所有參數(shù)中,總體會(huì)被分為幾種類型:標(biāo)準(zhǔn)參數(shù)(Standard)、非標(biāo)準(zhǔn)參數(shù)(Non-Standard)、高級(jí)運(yùn)行時(shí)選項(xiàng)以及不建議使用(可能會(huì)被遺棄的)四大類,其中:
- 標(biāo)準(zhǔn)參數(shù):開頭直接為參數(shù)名,例如:
-server、-client等。 - 非標(biāo)準(zhǔn)參數(shù):
-X開頭,例如:-Xdebug、-XBatch等。 - 高級(jí)選項(xiàng):
-XX:開頭,例如:-XX:+UseG1GC、-XX:-UseG1GC等,其中+號(hào)代表開啟,-號(hào)代表關(guān)閉。
上述簡單介紹清楚JVM參數(shù)中,不同開頭的參數(shù)代表的含義后,接下來開始羅列JVM中的參數(shù)列表。
當(dāng)然,也可以根據(jù)其他維度定義為行為參數(shù)、性能調(diào)優(yōu)參數(shù)、調(diào)試參數(shù)這類的。
PS:本章是將一些常用的JVM、Linux參數(shù)寫成個(gè)參數(shù)表,以便于使用時(shí)方便查閱,如果你認(rèn)為對(duì)于你有幫助,也歡迎點(diǎn)贊、收藏!當(dāng)然,對(duì)于不足也可以在評(píng)論區(qū)補(bǔ)充。
一、JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)參數(shù)列表
? ?虛擬機(jī)的運(yùn)行時(shí)數(shù)據(jù)區(qū)中,堆空間無疑是最重要的,除堆空間之外,虛擬機(jī)棧/本地方法棧(HotSpot中二合一)、元數(shù)據(jù)空間、本地內(nèi)存等區(qū)域也有對(duì)應(yīng)的參數(shù),接下來依次列出。
1.1、通用參數(shù)
-
-client:以客戶端模式啟動(dòng)JVM。 -
-server:以服務(wù)器模式啟動(dòng)JVM。 -
-agentlib:裝載本地lib庫。 -
-agentpath: 按全路徑裝載本地庫。 -
-classpath:聲明jvm搜索目錄名、jar、zip文檔名,之間用分號(hào);分隔。 -
-D property=value:設(shè)置系統(tǒng)[屬性名/值]對(duì)。- 應(yīng)用程序運(yùn)行時(shí)可通過
System.getProperty("property")獲取。
- 應(yīng)用程序運(yùn)行時(shí)可通過
-
-enableassertions:設(shè)置JVM是否啟動(dòng)斷言機(jī)制,默認(rèn)關(guān)閉(1.4開始支持的)。- 后續(xù)跟
-esa代表開啟,跟-dsa代表關(guān)閉。
- 后續(xù)跟
-
-jar:指定以jar包的形式執(zhí)行一個(gè)應(yīng)用程序。 -
-javaagent:jarpath:指定JVM啟動(dòng)時(shí)裝入java語言設(shè)備代理。 -
-verbose:這個(gè)參數(shù)比較有趣,可以用于輸出JVM一些信息,如下:- 結(jié)尾跟
:class:輸出JVM類加載相關(guān)信息,JVM找不到類時(shí)可以用于排查。 - 結(jié)尾跟
:gc:輸出每次GC相關(guān)的簡略信息。 - 結(jié)尾跟
:jni:輸出native方法調(diào)用的相關(guān)狀況,可以用于診斷jni調(diào)用錯(cuò)誤。
- 結(jié)尾跟
-
-version:輸出當(dāng)前機(jī)器Java環(huán)境版本信息。 -
-version:release:指定當(dāng)前機(jī)器以某個(gè)特定的版本執(zhí)行。-
-version:"1.5.0_04 1.5*&1.5.1_02+":以1.5或比1.5更高的版本執(zhí)行。
-
-
-help:輸出Java所有標(biāo)準(zhǔn)參數(shù)及其描述。 -
-X: 輸出非標(biāo)準(zhǔn)的參數(shù)列表及其描述。 -
-Xint:設(shè)置JVM以純解釋器模式執(zhí)行。 -
-Xcomp:完全采用即時(shí)編譯器模式執(zhí)行程序。 -
-Xmixed:采用解釋器+JIT即時(shí)編譯器的混合模式共同執(zhí)行。 -
-Xbatch:禁止JVM后臺(tái)編譯,將編譯過程放到前臺(tái)任務(wù)執(zhí)行。 -
-Xbootclasspath:讓Bootstrap從指定目錄下加載庫、jar、zip包。- 結(jié)尾跟
/a:path:將指定路徑的全部文件追加到默認(rèn)bootstrap路徑中。 - 結(jié)尾跟
/p:path:讓JVM優(yōu)先于bootstrap默認(rèn)路徑加載指定路徑的文件。
- 結(jié)尾跟
-
-Xcheck:jni: 對(duì)JNI函數(shù)進(jìn)行附加檢查,校驗(yàn)傳遞給JNI函數(shù)參數(shù)的合法性。 -
-Xfuture:讓JVM對(duì)類文件執(zhí)行嚴(yán)格模式檢查(默認(rèn)不使用)。 -
-Xnoclassgc:關(guān)閉針對(duì)class的gc(開啟后類不會(huì)被卸載/會(huì)導(dǎo)致OOM)。 -
-Xincgc: 開啟增量gc,會(huì)減少停頓,但會(huì)導(dǎo)致吞吐量下降。 -
-Xprof:跟蹤正運(yùn)行的程序,適合于開發(fā)環(huán)境調(diào)試。 -
-Xrs:減小JVM對(duì)操做系統(tǒng)信號(hào)(signals)的使用。 -
-XX:DisableExplicitGC:禁止程序內(nèi)部調(diào)用System.gc()觸發(fā)GC。 -
-XX:MaxFDLimit:文件描述符的最大數(shù)量限制。 -
-XX:UseThreadPriorities:啟用本地線程優(yōu)先級(jí)。 -
-XX:UnlockExperimentalVMOptions:開啟未知參數(shù)識(shí)別機(jī)制。 -
-XX:PrintFlagsInitial:輸出當(dāng)前程序的參數(shù)默認(rèn)值。
1.2、堆空間常用參數(shù)
-
-Xms:JVM啟動(dòng)時(shí)堆空間大小。 -
-Xmx:堆空間的最大大小。 -
-XX:NewSize=n/-Xmn:分配年輕代的空間大小。 -
-XX:NewRatio=n:設(shè)置年輕代和年老代的比值。 -
-XX:SurvivorRatio:設(shè)置新生代中Eden區(qū)和Survivor區(qū)的大小比值。 -
- XX:TargetsurvivorRatio:設(shè)置Survivor區(qū)的目標(biāo)使用率,默認(rèn)為50%。 -
-XX:MaxTenuringThreshold:設(shè)置年老代對(duì)象的晉升年齡。 -
-XX:PretenureSizeThreshold:指定直接進(jìn)入年老代大對(duì)象的閾值。 -
-XX:MaxHeapFreeRatio:GC后允許堆中空閑內(nèi)存占的最大比例。 -
-XX:MinHeapFreeRatio:GC后允許堆中空閑內(nèi)存占的最小比例。 -
-XX:MaxNewSize:新生代單個(gè)對(duì)象允許存在的最大值。 -
-XX:MaxPermSize:年老代單個(gè)對(duì)象允許存在的最大值。 -
-XX:UseLargePages:開啟大頁面內(nèi)存技術(shù)(大內(nèi)存下使用)。 -
-XX:LargePageSizeInBytes:設(shè)置Java堆空間的大頁面尺寸。 -
-XX:HandlePromotionFailire:是否開啟空間分代擔(dān)保機(jī)制。 -
-XX:HeapDumpOnOutOfMemoryError:堆空間首次發(fā)生OOM時(shí)輸出dump日志。 -
-XX:HeapDumpPath:和上面的參數(shù)配套使用,指定輸出的位置。 -
-XX:OnOutOfMemoryError:當(dāng)JVM首次發(fā)生OOM時(shí),可以執(zhí)行制定腳本。 -
-XX:+UseGCOverheadLimit:在拋出OOM前限制JVM耗費(fèi)在GC上的時(shí)間比例。 -
-XX:UseAdaptiveSizePolicy:是否開啟自適應(yīng)堆比例調(diào)整機(jī)制(并行GC器)。 -
-XX:MaxGCPauseMillis:設(shè)置每次新生代垃圾回收的期望最大停頓時(shí)間。 -
-XX:UseCompressedOops:是否開啟對(duì)象指針壓縮機(jī)制。 -
-XX:CompressedClassSpaceSize:是否開啟類指針壓縮機(jī)制。 -
-XX:UseTLAB:是否開啟TLAB分配機(jī)制。 -
-XX:TLABWasteTargetPercent:指定TLAB與整個(gè)Eden區(qū)的占比。 -
-XX:TLABSize:顯示指定TLAB區(qū)域的大小。 -
-XX:ResizeTLAB:是否開啟JVM自適應(yīng)的TLAB大小自調(diào)整機(jī)制。 -
-XX:BiasedLockingStartupDelay:設(shè)置sync匿名偏向鎖的延遲啟動(dòng)時(shí)間。 -
-XX:PreBlockSpin:指定Sync自旋鎖次數(shù)(1.6被棄用,引入自適應(yīng)自旋)。 -
-XX:PermSize:設(shè)置非堆空間初始大小(1.7后被棄用,改為元空間)。 -
-XX:MaxPermSize:設(shè)置非堆空間最大大小(1.7后被棄用,改為元空間)。
1.3、Java棧參數(shù)
-
-Xss:設(shè)置虛擬機(jī)棧的默認(rèn)大小。 -
-XX:ThreadStackSize:設(shè)置線程棧默認(rèn)大小。 -
-XX:+DoEscapeAnalysis:是否開啟逃逸分析機(jī)制。 -
-XX:PrintEscapeAnaysis:輸出逃逸分析信息。 -
-XX:EliminateAllocations:是否開啟標(biāo)量替換機(jī)制。 -
-XX:EliminateLocks:是否開啟同步消除機(jī)制。 -
-XX:PrintEliminateAllocations:輸出標(biāo)量替換信息。
1.4、元數(shù)據(jù)空間參數(shù)
-
-XX:MetaspaceSize:指定元數(shù)據(jù)空間的初始大小。 -
-XX:MaxMetaspaceSize:指定元數(shù)據(jù)空間的最大大小。 -
-XX:MinMetaspaceFreeRatio:FullGC后,允許元空間空閑內(nèi)存的最小比例。 -
-XX:MaxMetaspaceFreeRatio:FullGC后,允許元空間空閑內(nèi)存的最大比例。 -
-XX:MinMetaspaceExpansion:設(shè)置元空間中允許存在的單個(gè)數(shù)據(jù)的最小大小。 -
-XX:MaxMetaspaceExpansion:設(shè)置元空間中允許存在的單個(gè)數(shù)據(jù)的最大大小。 -
-XX:CompileThreshold:方法調(diào)用計(jì)數(shù)器編譯觸發(fā)閾值設(shè)置。 -
-XX:ReservedCodeCacheSize:熱點(diǎn)代碼緩存區(qū)的最大大小。 -
-XX:InitialCodeCacheSize:設(shè)置熱點(diǎn)代碼緩存區(qū)的初始大小。 -
-XX:+UseCodeCacheFlushing:熱點(diǎn)代碼空間已滿時(shí),取消部分冷代碼的編譯。 -
-XX:UseCounterDecay:是否開啟熱度衰減機(jī)制。 -
-XX:CounterHalfLifeTime:調(diào)整半衰周期的時(shí)間,單位為秒。 -
-XX:PrintCompilation:當(dāng)方法被編譯時(shí)輸出相關(guān)信息。 -
XX:BackgroundCompilation:禁止JVM后臺(tái)編譯,將編譯任務(wù)在前臺(tái)執(zhí)行。 -
-XX:CITime:JVM關(guān)閉時(shí),輸出各種編譯的統(tǒng)計(jì)信息。 -
-XX:TraceClassLoading:跟蹤類加載信息。 -
-XX:TraceClassLoadingPreorder:跟蹤所有被使用的類加載信息。 -
-XX:TraceClassUnloading:跟蹤類卸載信息。 -
-XX:TraceLoaderConstraints:跟蹤類加載器相關(guān)信息。 -
-XX:TraceClassResolution:跟蹤常量池信息。
1.5、直接內(nèi)存參數(shù)
-
-XX:DirectMemorySize:設(shè)置直接內(nèi)存的初始空間值(不設(shè)置默認(rèn)與Xmx參數(shù)值相同)。 -
-XX:MaxDirectMemorySize:設(shè)置直接內(nèi)存的最大空間值。
1.6、調(diào)試通用參數(shù)
-
-XX:+PrintVMOptions:輸出當(dāng)前運(yùn)行程序的顯式啟動(dòng)參數(shù)。 -
-XX:+PrintCommandLineFlags:輸出傳遞給虛擬機(jī)的顯式和隱式參數(shù)。 -
-XX:+PrintFlagsInitial:查看所有的參數(shù)的默認(rèn)初始值。 -
-XX:+PrintFlagsFinal:輸出所有的系統(tǒng)參數(shù)的最終值。 -
-XX:PrintTLAB:輸出TLAB分配相關(guān)的信息 -
-XX:CITime:輸出JIT即時(shí)編譯的耗時(shí)。 -
-XX:ErrorFile:保存錯(cuò)誤日志或者數(shù)據(jù)到文件中。 -
-XX:OnError=”;”:出現(xiàn)致命錯(cuò)誤時(shí)執(zhí)行自定義的指定腳本。
1.7、GC調(diào)試通用參數(shù)
-
-XX:+PrintGC/-verbose:gc:輸出GC的簡略日志。 -
-XX:+PrintGCDetails:輸出GC發(fā)生時(shí)的詳細(xì)日志。 -
-XX:+PrintGCTimeStamps:輸出GC發(fā)生的時(shí)間。 -
-XX:+PrintGCApplicationConcurrentTime:輸出應(yīng)用程序的執(zhí)行時(shí)間。 -
-XX:+PrintGCApplicationStoppedTime:輸出應(yīng)用由于GC而產(chǎn)生的停頓時(shí)間。 -
-Xloggc:將輸出的GC日志轉(zhuǎn)儲(chǔ)到指定目錄中。 -
-XX:+PrintReferenceGC:跟蹤并輸出軟/弱/虛引用和Finallize隊(duì)列信息。 -
-XX:+PrintHeapAtGC:每次GC前后打印堆信息。 -
-XX:PrintGCCause:輸出導(dǎo)致本次GC觸發(fā)的原因。
二、新生代垃圾收集器參數(shù)列表
? ?上述階段中,將一些JVM通用參數(shù)、JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)參數(shù)以及部分調(diào)試參數(shù)進(jìn)行了簡單整理,接下來看看GC相關(guān)的一些參數(shù)。
2.1、Serial收集器參數(shù)
-
-XX:UseSerialGC:是否啟用Serial作為新生代收集器。
2.2、ParNew收集器參數(shù)
-
-XX:UseParNewGC:是否啟用ParNew作為新生代收集器。
2.3、ParallelScavenge收集器參數(shù)
-
-XX:UseParallelGC:是否啟用ParallelScavenge作為新生代收集器。 -
-XX:MaxGCPauseMillis:設(shè)置GC發(fā)生時(shí)允許的最大停頓時(shí)間。 -
-XX:GCTimeRatio:精準(zhǔn)控制GC發(fā)生時(shí)的吞吐量占比。 -
-XX:UseAdaptiveSizePolicy:是否開啟JVM自適應(yīng)的GC調(diào)節(jié)策略。 -
-XX:ParallelGCThreads:指定GC工作時(shí)的并行線程數(shù)(默認(rèn)為CPU核數(shù))。
三、年老代垃圾收集器參數(shù)列表
3.1、SerialOld收集器參數(shù)
-
-XX:UseSerialGC:是否啟用SerialOld作為年老代收集器。
3.2、ParallelOld收集器參數(shù)
-
-XX:UseParallelOldGC:是否啟用ParallelOld作為年老代收集器。
3.3、CMS收集器參數(shù)
-
-XX:UseConcMarkSweepGC:是否啟用CMS作為年老代收集器。 -
-XX:UseCMSInitiatingoccupancyonlyn:指定觸發(fā)CMS回收的閾值。 -
-XX:CMSInitIatingOccupancyFaction:指定空間占用達(dá)到多少比例時(shí)觸發(fā)MSC工作。 -
-XX:UseCMSCompactAtFullCollection:內(nèi)存碎片化嚴(yán)重時(shí)是否開啟MSC工作。 -
-XX:CMSFullGCsBeforeCompaction:設(shè)置間隔多少次FullGC觸發(fā)一次MSC工作,默認(rèn)0。 -
-XX:ParallelCMSThreads:指定CMS執(zhí)行GC工作時(shí)的并發(fā)線程數(shù)。 -
-XX:CMSClassUnloadingEnabled:是否開啟類元數(shù)據(jù)卸載(回收)機(jī)制。 -
-XX:CMSInitiatingPermOccupancyFraction:指定元空間GC的觸發(fā)比例。 -
-XX:GCTimeRatio:指定GC停頓時(shí)間與用戶線程工作時(shí)間的占比。 -
-XX:MaxGCPauseMillis:指定一次GC允許發(fā)生的最大停頓時(shí)間。 -
-XX:CMSIncrementalMode:是否啟用增量回收模式(1.8中被廢棄,1.9中移除)。 -
-XX:CMSScavengeBeforeRemark:是否在重新標(biāo)記階段前觸發(fā)一次新生代GC。
四、整堆分區(qū)垃圾收集器參數(shù)列表
4.1、G1收集器參數(shù)
-
-XX:+UseG1GC:讓JVM使用G1收集器。 -
-XX:ConcGCThreads:指定并發(fā)GC工作階段的并發(fā)線程數(shù)量。 -
-XX:ParallelGCThreads:指定STW階段,GC工作的并行線程數(shù)。 -
-XX:MaxGCPauseMillis:期望的目標(biāo)停頓時(shí)間(默認(rèn)200ms)。 -
-XX:GCPauseIntervalMillis:GC的間隔時(shí)間。 -
-XX:G1HeapRegionSize:指定單個(gè)分區(qū)大小(1~32MB,且必須是2的N次冪)。 -
-XX:G1NewSizePercent:新生代初始空間占比(默認(rèn)整堆的5%)。 -
-XX:G1MaxNewSizePercent:新生代最大空間占比。 -
GCTimeRatio:GC停頓的時(shí)間占比(G1會(huì)根據(jù)此值調(diào)整堆空間)。 -
-XX:TargetSurvivorRatio:G1中空間分配擔(dān)保的觸發(fā)比例。- 當(dāng)
Survivor空間達(dá)到填充容量閾值時(shí)(默認(rèn)50%),將對(duì)象轉(zhuǎn)入年老代。
- 當(dāng)
-
-XX:MaxTenuringThreshold:新生代空間對(duì)象的晉升年齡閾值(默認(rèn)15)。 -
-XX:InitiatingHeapOccupancyPercent:年老代空間觸發(fā)MixedGC的閾值。 -
-XX:GCPauseIntervalMillis:設(shè)置停頓間隔時(shí)間(作用于G1-回收階段)。 -
-XX:ExplicitGCInvokesconcurrent:對(duì)顯示調(diào)用觸發(fā)的GC是否啟用并發(fā)回收。 -
-XX:G1ReservePercent:預(yù)留年老代的空閑Region數(shù),為分代擔(dān)保做準(zhǔn)備,默認(rèn)10。- 默認(rèn)為整堆
45%,年老代空間使用比例達(dá)到該閾值時(shí)觸發(fā)混合GC。
- 默認(rèn)為整堆
-
-XX:G1MixedGCLiveThresholdPercent:單個(gè)Region觸發(fā)GC的垃圾占比閾值。- 默認(rèn)為
85%,單個(gè)分區(qū)中垃圾對(duì)象達(dá)到該閾值時(shí)才可被選作目標(biāo)區(qū)域回收。
- 默認(rèn)為
-
-XX:G1MixedGCCountTarget:指定回收階段時(shí),分為幾次篩選回收。- 默認(rèn)8次,在G1最后的篩選回收階段可以回收一段時(shí)間,然后暫?;厥?,恢復(fù)系統(tǒng)運(yùn)行,過一會(huì)兒再回收,這樣做可以讓系統(tǒng)不至于單次停頓時(shí)間過長。
-
-XX:G1HeapWastePercent:GC回收停止的空閑Region閾值(默認(rèn)5%)。- 回收階段是基于復(fù)制算法來完成的,回收一個(gè)分區(qū)時(shí)會(huì)將該區(qū)內(nèi)的所有存活對(duì)象移入到另外一個(gè)區(qū)域,然后統(tǒng)一清除該分區(qū),這樣最終就會(huì)出現(xiàn)一個(gè)空的
Region,而當(dāng)空閑的Region數(shù)量達(dá)到5%時(shí),G1會(huì)結(jié)束本次MixedGC。
- 回收階段是基于復(fù)制算法來完成的,回收一個(gè)分區(qū)時(shí)會(huì)將該區(qū)內(nèi)的所有存活對(duì)象移入到另外一個(gè)區(qū)域,然后統(tǒng)一清除該分區(qū),這樣最終就會(huì)出現(xiàn)一個(gè)空的
-
-XX:G1OldCSetRegionThresholdPercent:每輪MixedGC回收分區(qū)的最大比例,默認(rèn)10%。 -
-XX:SoftRefLRUPolicyMSPerMB:指定每兆空間中軟引用的存活時(shí)間,默認(rèn)為1000ms。
4.2、ZGC收集器參數(shù)
-
-XX:UnlockExperimentalVMOptions:是否解鎖JVM隱藏的額外參數(shù)(實(shí)驗(yàn)參數(shù))。 -
-XX:UseZGC:是否啟用ZGC作為JVM整堆的垃圾收集器。 -
-XX:ZCollectionInterval:定期觸發(fā)一次GC(默認(rèn)不開啟,單位:秒)。 -
-XX:ZProactive:設(shè)置ZGC主動(dòng)觸發(fā)GC的閾值(默認(rèn)開啟)。
4.3、ShenandoahGC收集器參數(shù)
-
-XX:UseShenandoahGC:是否啟用ShenandoahGC作為JVM整堆的垃圾收集器。
其實(shí)整堆收集器中,除開G1之外,其他兩款整堆收集器,因?yàn)闆]有做分代實(shí)現(xiàn),所以能夠暴露給外部操作的JVM參數(shù)其實(shí)也并不會(huì)太多,大概也只能調(diào)調(diào)線程數(shù)、內(nèi)存大小、GC觸發(fā)條件、GC頻率這類的了。因?yàn)檫@些整堆收集器本身就能夠很好的駕馭已分配的堆空間。
五、Linux系統(tǒng)常用指令
? ?Linux系統(tǒng)是每位開發(fā)者逃不開的話題,程序發(fā)布、上線中間件、數(shù)據(jù)庫部署等幾乎都會(huì)基于Linux系統(tǒng)。因此,對(duì)于Linux你大概不需要掌握的特別精通,但至少對(duì)于它的一些常用指令必須要會(huì)使用,畢竟項(xiàng)目上線、線上排查等場景下,我們都必須要通過指令進(jìn)行操作。
5.1、目錄管理與文件操作指令
-
pwd:顯示當(dāng)前所在目錄的路徑。 -
cd:切換目錄,后面需要跟具體操作:-
..:回到上一級(jí)目錄。 -
/:回到根目錄。 -
~:回到/home/user/目錄下。 -
dirName:進(jìn)入當(dāng)前目錄的dirName子目錄。 -
/xx/xx/xxx:進(jìn)入到指定路徑的目錄下。
-
-
ls:查看當(dāng)前目錄下的所有文件,可跟選項(xiàng)如下:-
-a:顯示目錄下的所有文件,包含隱藏文件。 -
-l:顯示目錄中所有文件的詳細(xì)信息,如權(quán)限、所有者、群組、大小、日期等。 -
-f:顯示文件的類型。 -
-r:逆向模式,從后至前的顯示整個(gè)目錄下所有文件。 -
-R:遞歸模式,顯示當(dāng)前目錄下所有子目錄的內(nèi)容。 -
-s:按文件大小排序顯示。 -
-h:按KB、MB、GB等單位顯示文件大小。 -
ls -l xxx:顯示名稱為xxx文件的詳細(xì)信息。
-
-
ll:顯示當(dāng)前目錄下所有文件,并顯示文件的詳細(xì)信息。 -
tree或lstree:顯示文件和目錄由根目錄開始的樹形結(jié)構(gòu)。 -
find:在系統(tǒng)中搜索指定文件:-
-type:按類型搜索。 -
-name:按文件名搜索。 -
-atime +N:按時(shí)間搜索N天內(nèi)未被使用過的文件。 -
-mtime -N:按時(shí)間搜索過去N天內(nèi)創(chuàng)建的文件。 -
-size:按文件大小搜索文件。
-
-
man 指令名稱:查詢、解釋一個(gè)指令令的使用方法、注意事項(xiàng)。 -
locate filename:查詢某個(gè)文件的具體位置。 -
whatis 指令名稱:查詢某個(gè)指令的作用。 -
in file link:為文件file創(chuàng)建一個(gè)link物理鏈接(Windows的快捷方式)。-
-s:創(chuàng)建一個(gè)軟鏈接。
-
-
mkdir xxx:新建名稱為xxx的文件夾。 -
touch filename:創(chuàng)建文件名為filename的文件。 -
cp /xx/xx.xx /xx/xx.xx:將/xx/xx.xx文件復(fù)制到其他路徑。-
-i:互動(dòng)模式,如果目標(biāo)目錄下存在相同文件是,提示是否確認(rèn)覆蓋? -
-r:遞歸模式,將目錄下所有的子目錄、子文件等全部復(fù)制。 -
-v:詳細(xì)進(jìn)度模式,顯示當(dāng)前復(fù)制的完成進(jìn)度。
-
-
mv /xx/xx.xx /xx/xx.xx:將/xx/xx.xx文件移動(dòng)(剪切)到其他路徑。-
-i:互動(dòng)模式,如果目標(biāo)目錄下存在相同文件是,提示是否確認(rèn)覆蓋? -
-f:強(qiáng)制模式,不管目標(biāo)路徑下是否存在同名文件,都直接強(qiáng)制覆蓋。 -
-v:詳細(xì)進(jìn)度模式,顯示當(dāng)前移動(dòng)的完成進(jìn)度。
-
-
rm filename:刪除指定文件,可選參數(shù):-
-i:互動(dòng)模式,提示是否確認(rèn)刪除該文件? -
-f:強(qiáng)制模式,強(qiáng)制刪除目標(biāo)文件。 -
-r:遞歸模式,遞歸刪除目標(biāo)文件所有的子目錄及其文件。 -
-v:詳細(xì)進(jìn)度模式,顯示當(dāng)前刪除的完成進(jìn)度。 -
rm -rf /*:老梗,代表強(qiáng)制遞歸刪除根目錄下的所有文件。
-
-
rmdir xxx:刪除指定文件夾目錄。
5.2、文本操作指令
-
cat filename:打開filename文件查看文件內(nèi)容。 -
more filename:打開filename文件,輸出一屏數(shù)據(jù)。 -
less filename:和more作用相同,輸出一屏數(shù)據(jù),但可以上下滑動(dòng)。 -
tac filename:和less作用相同,但是從末尾開始顯示,支持上下滑動(dòng)。 -
tail filename:查看文件末尾十行數(shù)據(jù)內(nèi)容。-
-n:輸出指定的n行末尾數(shù)據(jù)。 -
-f:監(jiān)控某個(gè)文本文件,實(shí)時(shí)輸出最新追加的數(shù)據(jù),通常用于監(jiān)控日志。
-
-
head -n filename:輸出文件頭部n行數(shù)據(jù)。 -
grep xx filename:在filename文件內(nèi)查找xx字符。 -
wc:查看指定文件或進(jìn)程的數(shù)量:-
-l:查看指定目標(biāo)的行數(shù)。 -
-w:查看指定文件的單詞數(shù)量。 -
-c:查詢指定文件的字節(jié)數(shù)量。 -
-m:查詢指定文件的字符數(shù)量。
-
-
vi filename:編輯指定文件的內(nèi)容(vi命令是Unix/Linux通用的文件編輯器,vim是vi的增強(qiáng)版)。- 進(jìn)入
vi工具時(shí)的命令:-
vi n filename:打開指定文件并將光標(biāo)置于第n行。 -
vi /pattern filename:打開指定文件并將光標(biāo)置于第一個(gè)與pattern匹配處。 -
vi -r filename:打開指定文件,并恢復(fù)上次系統(tǒng)崩潰時(shí)的狀態(tài)。 -
vi filename...filename:同時(shí)編輯多個(gè)文件,依次進(jìn)行編輯。
-
- 屏幕翻滾類操作(命令模式):
-
Ctrl+u:向前滾動(dòng)半屏。 -
Ctrl+d:向后滾動(dòng)半屏。 -
Ctrl+f:向前滾動(dòng)一屏。 -
Ctrl+b:向后滾動(dòng)一屏。 -
[n]z:將第n行滾至屏幕頂部,不指定n時(shí),將當(dāng)前行滾至屏幕頂部。
-
- 插入文本類操作(插入模式):
-
i:在光標(biāo)位置前插入。 -
I:在當(dāng)前行的行首插入。 -
a:在光標(biāo)位置后插入。 -
A:在當(dāng)前行的行尾插入。 -
o:在當(dāng)前行上面新增一行。 -
O:在當(dāng)前行下面新增一行。 -
s:替換光標(biāo)位置的字符。 -
S:替換光標(biāo)位置的行。
-
- 刪除、復(fù)制、粘貼、查找、替換、撤銷類操作(命令模式):
-
x:刪除光標(biāo)后一個(gè)字符。 -
X:刪除光標(biāo)前一個(gè)字符。 -
dd:刪除當(dāng)前行。 -
dG:向下刪除到最后一行。 -
D0:從光標(biāo)位置刪除至行首。 -
[n]x:刪除光標(biāo)后n個(gè)字符。 -
[n]X:刪除光標(biāo)前n個(gè)字符。 -
[n]dd:向下刪除n行。 -
dw:刪除當(dāng)前的單詞。 -
d$:刪除光標(biāo)至行尾。 -
yy:復(fù)制當(dāng)前行。 -
[n]yy:向下復(fù)制n行。 -
p:在下一行位置粘貼內(nèi)容。 -
r:替換光標(biāo)處的字符。 -
R:替換光標(biāo)所到處的字符(按ESC鍵結(jié)束)。 -
u:撤銷操作。 -
ctrl+r:反撤銷操作。 -
/[filed]:查找filed關(guān)鍵字(按n查找下一個(gè))。 -
?[filed]:查找filed關(guān)鍵字(按n查找下一個(gè))。
-
- 退出保存命令(底行模式/需先按
ESC):-
:w:保存更改內(nèi)容但不退出本次編輯。 -
:w file:將內(nèi)容保存到file文件中,不退出本次編輯。 -
:w!:強(qiáng)制保存更改內(nèi)容,不退出本次編輯。 -
:wq:保存更改內(nèi)容并退出編輯。 -
:wq!:強(qiáng)制保存更改內(nèi)容并退出編輯。 -
:q:不保存更改內(nèi)容,直接退出編輯。 -
:q!:不保存更改內(nèi)容,強(qiáng)制退出編輯。 -
:e!:放棄本次編輯中的所有更改內(nèi)容,從上次保存的時(shí)刻重新編輯。
-
- 進(jìn)入
5.3、文件壓縮/解壓/備份指令
-
tar:壓縮解壓命令:-
-z:讓打包的文件具備gz壓縮性質(zhì)(gz格式,壓縮速度最快)。 -
-j:讓打包的文件具備bzip壓縮性質(zhì)(bz2格式,壓縮文件最?。?。 -
-J:讓打包的文件具備xz壓縮性質(zhì)(xz格式,壓縮率最佳)。 -
-x:解壓打包文件。 -
-t:查看壓縮文件中的內(nèi)容。 -
-c:將文件打成壓縮包。 -
-C:解壓時(shí)指定解壓位置,如tar -xf xx.tar.gz -C /usr/xxx/。 -
-v:顯示解壓時(shí)的壓縮包文件列表。 -
-f:參數(shù)后面指定要解壓或壓縮的文件名。 -
-p:保留備份數(shù)據(jù)的原本權(quán)限與屬性,一般用于打包重要的配置信息。 -
-P:保留絕對(duì)路徑。 - 壓縮命令示例:
tar -czvf xx.tar.gz xx.txt xx.conf。 - 解壓命令示例:
tar -xf xx.tar.gz -C /usr/xxx/。
-
-
zip:zip壓縮命令(需要額外安裝):-
-m:將目標(biāo)文件壓縮后,刪除原文件。 -
-o:將壓縮包內(nèi)所有文件的最新變動(dòng)時(shí)間改為壓縮的時(shí)間。 -
-q:安靜模式,在壓縮的時(shí)候不顯示壓縮執(zhí)行的過程。 -
-r:遞歸模式,將指定目錄下的所有子文件以及目錄一起壓縮。 -
-x:可以跟一個(gè)文件列表,壓縮時(shí)排除文件列表中的文件。
-
-
unzip:zip解壓命令(需要額外安裝):-
-o:強(qiáng)制模式,解壓時(shí)如果存在同名的文件直接覆蓋。 -
-l:不解壓查看壓縮包中包含的文件。 -
-v:解壓時(shí)顯示執(zhí)行過程中的詳細(xì)信息。 -
-t:檢查解壓文件是否正確(是否損壞、數(shù)據(jù)丟失等)。 -
-q:安靜模式,在解壓的時(shí)不顯示解壓執(zhí)行的過程。 -
-d:指定文件解壓后存儲(chǔ)的目錄。 -
-x:指定不要解壓壓縮包中的那些文件。
-
-
bzip2:將文件打包成拓展名為.bz2的壓縮包。 -
bunzip2:將文件拓展名為.bz2的壓縮包解壓。 -
gzip:將文件打包成拓展名為.gz的壓縮包。 -
gunzip:將文件拓展名為.gz的壓縮包解壓。 -
compress:將文件打包成拓展名為.Z的壓縮包。 -
uncompress:將文件拓展名為.Z的壓縮包解壓。 -
rar:將文件打包成拓展名為.rar的壓縮包。 -
unrar:將文件拓展名為.rar的壓縮包解壓。
5.4、系統(tǒng)操作、權(quán)限管理/用戶群組管理指令
-
shutdown:關(guān)機(jī)命令:-
-k:不會(huì)真正關(guān)機(jī),僅發(fā)出關(guān)機(jī)的警告(結(jié)合sh腳本做運(yùn)維監(jiān)控用)。 -
-r:關(guān)機(jī)后重啟。 -
-t:在指定的時(shí)間后關(guān)機(jī)(默認(rèn)單位:min)。
-
-
reboot:重啟命令:-
-d:關(guān)機(jī)時(shí)不會(huì)將內(nèi)存中的數(shù)據(jù)寫入到/var/log/wtmp檔案內(nèi)。 -
-f:不管是否有應(yīng)用阻止關(guān)機(jī),強(qiáng)制性重啟。 -
-n:在重開機(jī)前不做將記憶體數(shù)據(jù)寫回硬盤(包含了-d操作)。 -
-w:不會(huì)真的重啟,只是把數(shù)據(jù)記錄寫到/var/log/wtmp檔案里。
-
-
kill:終止(殺)進(jìn)程指令(只是給進(jìn)程發(fā)個(gè)信號(hào),讓進(jìn)程“自殺”):-
-l:列出所有可用的信號(hào)名稱。 -
-p:輸出pid但并不發(fā)送操作信號(hào)。 -
-signal:給進(jìn)程傳遞信號(hào)(目前有三種):-
-HUP/-1:重新啟動(dòng)進(jìn)程。 -
-KILL/-9:終止(殺掉)進(jìn)程。 -
-TERM/-15:結(jié)束進(jìn)程。
-
-
-
date:更改或查看目前日期。 -
cal:顯示月歷及年歷。 -
arch:顯示機(jī)器的處理器架構(gòu)。 -
uname:顯示機(jī)器的信息:-
-m:顯示機(jī)器的處理器架構(gòu)。 -
-r:顯示當(dāng)前系統(tǒng)的內(nèi)核版本。
-
-
chmod:用于改變Linux系統(tǒng)文件或目錄的訪問權(quán)限,支持文字、數(shù)字設(shè)定法:-
-R:遞歸模式,如果打算更改一個(gè)目錄的權(quán)限,加這個(gè)才可更改所有子文件權(quán)限。 - 文件使用者分為所有者、群組、其他用戶三種:
-
u:文件或目錄的所有者。 -
g:所有者所在的用戶群組。 -
o:其他用戶。 -
a:所有用戶(包含u、o、a)。
-
- 文件權(quán)限分為讀、寫、執(zhí)行三個(gè)級(jí)別:
-
r:讀權(quán)限,數(shù)字為4。 -
w:寫權(quán)限,數(shù)字為2。 -
x:執(zhí)行權(quán)限,數(shù)字為1。
-
- 權(quán)限操作:
-
+:添加權(quán)限。 -
+:移除權(quán)限。 -
=:覆蓋原有權(quán)限,讓當(dāng)前設(shè)置的權(quán)限成為唯一權(quán)限。
-
- 示例:
-
chmod a+rwx filename:為所有用戶添加filename文件的讀、寫、執(zhí)行權(quán)限。 -
chmod 777 filename:這條指令是上面那條指令的數(shù)字設(shè)定法。
-
-
-
su username:將當(dāng)前登錄的用戶切換指定用戶(更改時(shí)需要輸入密碼)。 -
useradd username:添加一個(gè)名字為username的用戶(root用戶操作)。 -
passwd username:更改username用戶的密碼,其他操作如下:-
-l username:禁止指定用戶登錄。 -
-u username:解除被禁止登錄的用戶。 -
-d username:清除指定用戶的登錄密碼,該用戶之后無需密碼即可登錄。
-
-
userdel -r username:刪除指定用戶賬號(hào)(-r:遞歸刪除用戶的所有目錄)。 -
groupadd groupname:創(chuàng)建用戶組。 -
w:查看當(dāng)前登錄用戶的詳細(xì)信息。 -
who:查看當(dāng)前登錄的所有用戶信息。 -
last:查看用戶登錄的記錄(多次登錄的記錄)。 -
lastlog:查看所有用戶最后的登錄時(shí)間。 -
touch /etc/nologin:禁止除root賬號(hào)外的所有用戶登錄。
5.5、網(wǎng)絡(luò)、內(nèi)存、磁盤管理指令
-
ping ip/domain-name:檢測與某個(gè)節(jié)點(diǎn)之間通信是否正常:-
-c:設(shè)置要求響應(yīng)的次數(shù)。 -
-d:使用Socket的SO_DEBUG功能。 -
-f:大量且快速的發(fā)送網(wǎng)絡(luò)封包給一臺(tái)機(jī)器,看它的回應(yīng)。 -
-i:指定收發(fā)信息的間隔時(shí)間,單位為秒。 -
-s:設(shè)置數(shù)據(jù)包的大小,單位:字節(jié)。 -
-r:忽略目標(biāo)機(jī)器的網(wǎng)關(guān),直接將數(shù)據(jù)保送到遠(yuǎn)程主機(jī)上。 -
-q:不顯示命令的執(zhí)行過程,只顯示結(jié)果。 -
-v:詳細(xì)顯示命令的執(zhí)行過程,包括非回應(yīng)信息和其它信息。 -
-t:設(shè)置存活數(shù)值TTL的大小。
-
-
ftp ip/domain-name:遠(yuǎn)程文件傳輸(下載、上傳)文件:-
-d:顯示指令執(zhí)行過程中的詳細(xì)信息。 -
-i:關(guān)閉互動(dòng)模式,每次執(zhí)行不詢問任何問題。 -
-g:關(guān)閉本地主機(jī)文件名稱支持特殊字符的擴(kuò)充特性。 -
-n:不試用自動(dòng)登錄,每次連接都需要手動(dòng)輸入賬號(hào)密碼。 -
-v:顯示ftp文件傳輸?shù)倪M(jìn)度信息。 - FTP內(nèi)部指令:
- 大部分指令與Linux的基本操作指令相同,如
cd等。 -
get remote-file local-file:從其他機(jī)器中下載文件到當(dāng)前機(jī)器。 -
mget remote-files:批量下載。 -
put local-file remote-file:將本地文件上傳到遠(yuǎn)程機(jī)器。 -
mput local-files:批量上傳。 -
bye:退出ftp服務(wù)。 - .......
- 大部分指令與Linux的基本操作指令相同,如
-
-
telnet ip/domain-name:遠(yuǎn)程登錄主機(jī)。 -
rlogin ip/domain-name:也是遠(yuǎn)程登錄主機(jī)的作用,與telnet指令類似。 -
netstat:查看Linux系統(tǒng)的網(wǎng)絡(luò)情況:-
-a:顯示所有連接中的Socket。 -
-f:顯示FIB信息。 -
-c:持續(xù)輸出網(wǎng)絡(luò)狀態(tài)。 -
-i:顯示網(wǎng)絡(luò)界面信息。 -
-n:不顯示網(wǎng)絡(luò)名稱,顯示真實(shí)網(wǎng)絡(luò)IP。 -
-o:顯示計(jì)數(shù)器信息。 -
-r:顯示網(wǎng)絡(luò)路徑表信息。 -
-t:顯示TCP連接信息。 -
-u:顯示UDP連接信息。 -
-v:顯示版本信息。 -
-w:顯示RAW連接信息。 -
netstat -nat|grep -i "8080"|wc -l:查看8080端口的連接數(shù)。
-
-
ifconfig:查看和設(shè)置網(wǎng)卡信息。 -
ip addr:查看網(wǎng)卡信息。 -
route:查看和操作當(dāng)前機(jī)器的路由表。 -
netstat:查看本機(jī)的網(wǎng)絡(luò)狀態(tài),可看到端口占用情況和網(wǎng)絡(luò)連接情況。 -
traceroute:顯示一個(gè)請(qǐng)求到目標(biāo)服務(wù)器所經(jīng)的全部路由節(jié)點(diǎn)(排錯(cuò)用)。 -
iftop:查看實(shí)時(shí)網(wǎng)絡(luò)io情況。 -
lsof:檢查端口是否被占用。 -
dig:查看域名解析信息。 -
curl:發(fā)送一個(gè)http請(qǐng)求,檢測目標(biāo)服務(wù)器是否可以正常工作。 -
wget:下載一個(gè)網(wǎng)絡(luò)文件到本地機(jī)器。 -
yum install:在線安裝需要用到的工具,類似于Python的PIP指令。 -
firewall-cmd --state:查看防火墻狀態(tài)。 -
systemctl list-unit-files|grep firewalld.service:查看防火墻信息。 -
systemctl restart firewalld.service:重啟防火墻。 -
systemctl stop firewalld.service:關(guān)閉防火墻。 -
systemctl disable firewalld.service:開機(jī)時(shí)禁止啟動(dòng)防火墻。 -
firewall-cmd --zone=public --add-port=8080/tcp --permanent:開放8080端口。 -
firewall-cmd --zone=public --list-ports:查看防火墻已開放的端口。 -
ps:查看當(dāng)前系統(tǒng)中在后臺(tái)執(zhí)行的進(jìn)程信息:-
-a:查看當(dāng)前運(yùn)行的所有進(jìn)程。 -
-u:列出所有進(jìn)程所屬者的名稱以及運(yùn)行時(shí)長。 -
-x:列出所有程序,包括那些沒有終端機(jī)的進(jìn)程。 -
-ef:顯示進(jìn)程的全部信息,包括父進(jìn)程ID、創(chuàng)建者、創(chuàng)建時(shí)間、PID等。 -
-l:只顯示與本次登錄有關(guān)的進(jìn)程信息。 -
-T:查看某個(gè)進(jìn)行內(nèi)的線程信息。 -
-p:指定一個(gè)進(jìn)程ID,與-T一同使用。 -
-m:輸出后臺(tái)所有進(jìn)程對(duì)于系統(tǒng)內(nèi)存的占用情況。 -
-r:只單獨(dú)顯示在執(zhí)行的前臺(tái)進(jìn)程。
-
-
top:查看系統(tǒng)執(zhí)行程序?qū)?nèi)存、CPU、磁盤的使用情況(會(huì)實(shí)時(shí)刷新):-
-H:查看所有線程的負(fù)載情況。 -
top -H -p pid:根據(jù)pid列表指定進(jìn)程下的所有線程信息。
-
-
service:查看系統(tǒng)服務(wù)信息:-
service servicename -status:查看指定名稱服務(wù)的運(yùn)行狀態(tài)。 -
service --status-all:查看所有服務(wù)的運(yùn)行狀態(tài)。 -
service servicename start:啟動(dòng)指定名稱的系統(tǒng)服務(wù)。 -
service servicename restart:重啟指定名稱的系統(tǒng)服務(wù)。 -
service servicename stop:關(guān)閉指定名稱的系統(tǒng)服務(wù)。
-
-
free:查看內(nèi)存信息及使用信息。 -
mount dir:掛載指定目錄下的文件系統(tǒng)(Linux文件系統(tǒng)只有掛載了才能使用):-
-a:掛上/etc/fstab下的全部文件系統(tǒng)。 -
-t:制定所掛上來的文件系統(tǒng)的名稱(類似于Windows的盤符重命名)。 -
-n:掛上文件系統(tǒng),但不把文件系統(tǒng)的數(shù)據(jù)寫入/etc/mtlab這個(gè)文件。 -
-w:將文件系統(tǒng)設(shè)為可讀寫。 -
-r:掛上來的文件系統(tǒng)設(shè)為只讀。
-
-
umount dir:卸載某個(gè)掛上來的文件系統(tǒng)。 -
df:檢查硬盤分區(qū)與已經(jīng)掛載的文件系統(tǒng)的磁盤空間,既查看硬盤的使用情況:-
-a:顯示所有文件系統(tǒng)和各分區(qū)的硬盤使用情況。 -
-i:列出I-nodes的使用情況。 -
-k:將各硬盤分區(qū)以及掛載的文件分區(qū)大小用k表示。 -
-t:列出某一文件系統(tǒng)的所有分區(qū)磁盤空間使用情況。 -
-x:列出不是某一文件系統(tǒng)的所有分區(qū)空間使用情況(-t的反作用)。 -
-T:列出每個(gè)分區(qū)所屬的文件系統(tǒng)名稱。
-
-
du:查看文件及目錄大?。?-
-a:顯示所有目錄下每個(gè)文件所占的空間大小。 -
-b:顯示目錄及其文件大小,以字節(jié)為單位。 -
-c:顯示文件總大小。 -
-h:指定大小單位,提高信息可讀性,如KB、MB、GB等。 -
-s:列出各文件大小的總和。 -
-x:只計(jì)算屬于同一文件系統(tǒng)的文件。
-
-
fsck:檢測和修復(fù)Linux文件系統(tǒng)。 -
iostat:查看磁盤IO的狀態(tài)。 -
iotop:與top命令類似,實(shí)時(shí)顯示各個(gè)進(jìn)程的io狀態(tài)。
5.6、Linux超級(jí)實(shí)用的小技巧
? ?對(duì)于上述羅列的指令是一些經(jīng)常接觸Linux系統(tǒng)時(shí)常用的指令,如某些指令未列出,可參考:Linux命令大全。不過在Linux系統(tǒng)中,掌握了眾多指令的同時(shí),也要熟練Linux系統(tǒng)中的一些操作,接下來分享一些個(gè)人看來比較實(shí)用的小技巧!
①同時(shí)執(zhí)行多條指令時(shí),不同命令之間可以用;隔開,如:
cd /usr/xxx/;ls
如上指令執(zhí)行后的結(jié)果則是:進(jìn)入到指定的目錄下,并查看該目錄下的所有文件信息。
②如果執(zhí)行的某條指令耗時(shí)比較長,導(dǎo)致自己當(dāng)前終端需要等待執(zhí)行完成,無法繼續(xù)操作時(shí),可以在指令最后加上&符號(hào),將任務(wù)交給Linux的后臺(tái)進(jìn)程完成,如:
cp /xxx/xxx.xx /xxx/xx/xx.xx &
該條指令執(zhí)行后,會(huì)將拷貝文件的任務(wù)交給后臺(tái)進(jìn)程執(zhí)行,當(dāng)前終端可以繼續(xù)操作。
③如果當(dāng)你想要執(zhí)行一個(gè)他人編寫好的腳本文件,但卻不知道通過什么命令執(zhí)行時(shí),你可以嘗試在前面通過加個(gè).來執(zhí)行,如下:
. xxx.sh
快速執(zhí)行指定的腳本文件,當(dāng)然,也不僅僅只局限于.sh后綴的腳本,該方式可以用于執(zhí)行大部分的腳本文件。
④如果你想將某個(gè)指令執(zhí)行后的結(jié)果,作為其他指令的入?yún)?,或想將其?zhí)行結(jié)果寫出到某個(gè)文件,那么你可以嘗試>、>>、<等這些符號(hào),如:
ls > xxx.txt
上述命令執(zhí)行后,會(huì)將ls指令的執(zhí)行結(jié)果(即當(dāng)前目錄下的所有文件信息)寫入到xxx.txt文件中,如果xxx.txt文件不存在,系統(tǒng)會(huì)默認(rèn)創(chuàng)建出來。同時(shí),你也可以通過>>將結(jié)果追加到某個(gè)文件中,如:ls >> xxx.txt。
⑤你如果想要同時(shí)執(zhí)行多個(gè)命令,但后面的命令需要建立在前面命令執(zhí)行成功的基礎(chǔ)之上時(shí),你可以嘗試使用&&符號(hào),如:
cp /usr/soft/a.txt new.txt && cat new.txt
上述命令中,如果直接執(zhí)行cat new.txt必然是不行的,因?yàn)楫?dāng)前目錄下不存在new.txt文件,所以需要先執(zhí)行拷貝的命令,將其從其他目錄下復(fù)制過來后,才能執(zhí)行cat命令。因此,可以將兩個(gè)指令用&&連接,只有當(dāng)cp命令執(zhí)行成功后,再執(zhí)行cat指令。
⑥當(dāng)執(zhí)行一個(gè)指令耗時(shí)比較長或有可能執(zhí)行失敗時(shí),但又得需要考慮執(zhí)行失敗之后的處理,這種情況可以考慮使用||,如:
wget xxx || wget xxx
執(zhí)行該指令后,因?yàn)?code>wget是從網(wǎng)絡(luò)上下載文件,所以有時(shí)會(huì)因?yàn)榫W(wǎng)絡(luò)問題導(dǎo)致失敗,此時(shí)我們可以通過||,再次執(zhí)行wget指令,重新下載。
⑦你執(zhí)行的命令中,下一條指令需要上一條的結(jié)果作為入?yún)ⅲ敲纯梢允褂?code>|管道命令,如下:
ps aux | grep java
查詢Linux后臺(tái)的所有進(jìn)程信息,但是只顯示Java的進(jìn)程。
⑧當(dāng)你想要同時(shí)操作Linux中的多個(gè)文件時(shí),可以選擇使用通配符*,如下:
rm -rf /xxx/xx/*.txt
如上命令執(zhí)行之后,會(huì)刪除指定目錄下的所有.txt后綴文件。
⑨...........
? ?其實(shí)在Linux下還有各種各樣的符號(hào)操作,如$、%、?、#、()、[]、{}、(())、[[]]等,它們都有各自的作用與功能,有些會(huì)在Shell編寫中經(jīng)常用到,如$、{}等。同時(shí),上述介紹的幾種小技巧中所用的“符號(hào)”,在運(yùn)維人員手中可能會(huì)組成一大長串令人“難以直視”的命令,但作為開發(fā)人員,對(duì)于前面那些技巧簡單掌握即可,畢竟咱也不是專業(yè)搞運(yùn)維或Linux云計(jì)算/調(diào)度開發(fā)的。