linux計數
1. linux操作系統的知識點總結
Linux操作系統的基礎知識並不是很難理解,熟悉掌握基礎知識能更好的學習Linux。下面由我為大家整理了Linux操作系統的知識點總結的相關知識,希望對大家有幫助!
Linux操作系統的知識點總結1.操作系統總體介紹
•CPU: 就像人的大腦,主要負責相關事情的判斷以及實際處理的機制。
查詢指令: cat /proc/cpuinfo
•內存: 大腦中的記憶區塊,將皮膚、眼睛等所收集到的信息記錄起來的地方,以供CPU進行判斷。查詢指令: cat /proc/meminfo
物理內存
物理內存,就是我們將內存條插在主板內存槽上的內存條的容量的大小。看計算機配置的時候,主要看的就是這個物理內存
虛擬內存
Windows中運用了虛擬內存技術,即拿出一部分硬碟空間來充當內存使用,當內存佔用完時,電腦就會自動調用硬碟來充當內存,以緩解內存的緊張。
關系:windows中虛擬內存和物理內存可能都會被使用,Linux中,只有物理內存使用完了,才會使用虛擬內存
•硬碟: 大腦中的記憶區塊,將重要的數據記錄起來,以便未來再次使用這些數據。
查詢指令: fdisk -l (需要root許可權)
Linux操作系統的知識點總結2.內存和硬碟的關系
具體命令後面會介紹
Linux操作系統的知識點總結3.操作系統監控命令>單獨寫一份
•vmstat
•sar
•iostat
•top
•free
•uptime
•netstat
•ps
•strace
•lsof
Linux操作系統的知識點總結4.如何分析操作系統
實際流程: 讀數據》數據>硬碟》虛擬內存(swaP)》內存》cpu緩存》執行隊列
分析方向,正好相反
Linux操作系統的知識點總結4.各個部分常出現的漏洞
•CPU: 容易出現該類瓶頸的郵件伺服器、動態web伺服器
•內存: 容易出現該類瓶頸的列印伺服器、資料庫伺服器、靜態web伺服器
•磁碟I/O: 頻繁讀寫操作的項目
•網路帶寬: 頻繁大量上傳下載項目
Linux操作系統的知識點總結5.linux本身的一些優化
1. 系統安裝優化
當安裝linux系統時,磁碟劃分、 SWAP內存的分配都直接影響系統性能。對於虛擬內存SWAP的設定,現在已經沒有了所謂虛擬內存是物理內存兩倍的要求,但是根據經驗,如果內存較小(物理內存小於4GB),一般設置SWAP交換分區大小為內存的2倍;如果物理內存大約4GB小於16GB,可以設置SWAP大小等於或者略小於物理內存即可;如果內存在16GB以上,原則上可以設置SWAP為0,但最好設置一定大小的SWAP
• 2. 內核參數優化
例如,如果系統部署的Oracle資料庫應用,那麼就需要對系統共享內存段( kernel.shmmax, kenerl.shmmni, kernel.shmall)、
系統信號量( kernel.sem)、文件句柄( fs.file0max)等參數進行優化設置;如果部署的WEB應用,那麼就需要根據web應用特性進行網路參數的優化,例如修改net.ipv4.ip_local_port_range、net.ipv4.tc_tw_reuse、 net.core.somaxconn等網路
內核參數
• 3. 文件系統優化
在linux下可選的文件系統有ext2,、 ext3、 xfs、 ReiserFS
linux標准文件系統是從VFS開始,然後ext、 ext2, ext2是linux上的標准文件系統, ext3是在ext2基礎上增加日誌形成的。從VFS到ext3,設計思想沒有太大變化,都是早期UNIX家族基於超級塊和inode的設計理念設計而成。XFS文件系統是SGI開發的一個高級日誌文件系統,通過分布處理磁碟請求、定位數據、保持cache的一致性來提供對文件系統數據的低延遲、高帶寬的訪問,因此XFS極具伸縮性,非常健壯,具有優秀的日誌記錄功能、可擴展性強、快速寫入等優點。ReiserFS在Hans Reiser領導下開發出來的一款高性能的日誌文件系統,通過完全平衡樹來管理數據,包括文件數據、文件名及日誌支持等。與ext2、 ext3相比,最大的優點是訪問性能和安全性大幅提升。具有高效、合理利用磁碟空間,先將的日誌管理機制,特意的搜尋方式,海量磁碟存儲等優點
Linux操作系統的知識點總結5.重點知識
物理內存和虛擬內存
1.如何查看物理內存和虛擬內存?
Top 命令可以查看物理內存和虛擬內存的數值
2.Buffer
是硬碟控制器上的一塊內存晶元,具有極快的存取速度,它是硬碟內部存儲和外界介面之間的緩沖器。由於硬碟的內部數據傳輸速度和外界介面傳輸速度不同,緩存在其中起到一個緩沖的作用。緩存的大小與速度是直接關繫到硬碟的傳輸速度的重要因素,能夠大幅度地提高硬碟整體性能。
3.Cache
CPU緩存(Cache Memory)是位於CPU與內存之間的臨時存儲器,它的容量比內存小的多但是交換速度卻比內存要快得多。緩存的出現主要是為了解決CPU運算速度與內存讀寫速度不匹配的矛盾,因為CPU運算速度要比內存讀寫速度快很多,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度
4.CPU中斷
當CPU執行完一條現行指令時,如果外設向CPU發出中斷請求,那麼CPU在滿足響應的情況下,將發出中斷響應信號,與此同時關閉中斷,表示CPU不在受理另外一個設備的中斷。這時,CPU將尋找中斷請求源是哪一個設備,並保存CPU自己的程序計數器(PC)的內容。然後,他將轉移到處理該中斷源的中斷服務程序。CPU在保存現場信息,設備服務(如交換數據)以後,將恢復現場信息。在這些動作完成以後,開放中斷,並返回到原來被中斷的主程序的下一條指令。
5.上下文切換
上下文切換(Context Switch) 或者環境切換
多任務系統中,上下文切換是指CPU的控制權由運行任務轉移到另外一個就緒任務時所發生的事件。
在操作系統中,CPU切換到另一個進程需要保存當前進程的狀態並恢復另一個進程的狀態:當前運行任務轉為就緒(或者掛起、刪除)狀態,另一個被選定的就緒任務成為當前任務。上下文切換包括保存當前任務的運行環境,恢復將要運行任務的運行環境。
進程上下文用進程的PCB(進程式控制制塊,也稱為PCB,即任務控制塊)表示,它包括進程狀態,CPU寄存器的值等。
通常通過執行一個狀態保存來保存CPU當前狀態,然後執行一個狀態恢復重新開始運行。
上下文切換會對性能造成負面影響。然而,一些上下文切換相對其他切換而言更加昂貴;其中一個更昂貴的上下文切換是跨核上下文切換(Cross-Core Context Switch)。一個線程可以運行在一個專用處理器上,也可以跨處理器。由單個處理器服務的線程都有處理器關聯(Processor Affinity),這樣會更加有效。在另一個處理器內核搶占和調度線程會引起緩存丟失,作為緩存丟失和過度上下文切換的結果要訪問本地內存。總之,這稱為“跨核上下文切換”。
6.進程和線程
進程概念
進程是表示資源分配的基本單位,又是調度運行的基本單位。例如,用戶運行自己的程序,系統就創建一個進程,並為它分配資源,包括各種表格、內存空間、磁碟空間、I/O設備等。然後,把該進程放人進程的就緒隊列。進程調度程序選中它,為它分配CPU以及其它有關資源,該進程才真正運行。所以,進程是系統中的並發執行的單位。
線程概念
線程是進程中執行運算的最小單位,亦即執行處理機調度的基本單位。如果把進程理解為在邏輯上操作系統所完成的任務,那麼線程表示完成該任務的許多可能的子任務之一
進程和線程的關系
(1)一個線程只能屬於一個進程,而一個進程可以有多個線程,但至少有一個線程。 (2)資源分配給進程,同一進程的所有線程共享該進程的所有資源。
(3)處理機分給線程,即真正在處理機上運行的是線程。
(4)線程在執行過程中,需要協作同步。不同進程的線程間要利用消息通信的辦法實現同步。
2. 統計linux某個單詞出現次數怎麼操作
使用這個命令查出文本中的單詞出現頻率按照由高到底排序
cat words.txt |tr -cs "[a-z][A-Z]" "[ 12*]"|tr A-Z a-z|sort|uniq -c|sort -k1nr -k2|head -10
但是有時我們想查找出某一個單詞的出現頻率這時我們可以使用如下幾個命令
文件名稱:file 查找單詞名稱:word
操作命令:
(1)more file | grep -o word | wc -l
(2)cat file | grep -o word | wc -l
(3) grep -o test word | wc -l
如果這些還是不能滿足需求,那隻能寫linux腳本進行實現了。可以使用awk哦
1.命令格式:
wc [選項]文件...
2.命令功能:
統計指定文件中的位元組數、字數、行數,並將統計結果顯示輸出。該命令統計指定文件中的位元組數、字數、行數。如果沒有給出文件名,則從標准輸入讀取。wc同時也給出所指定文件的總統計數。
3.命令參數:
-c 統計位元組數。
-l 統計行數。
-m 統計字元數。這個標志不能與 -c 標志一起使用。
-w 統計字數。一個字被定義為由空白、跳格或換行字元分隔的字元串。
-L 列印最長行的長度。
--help 顯示幫助信息
--version 顯示版本信息
4.值得注意的是,-c,c應該是count的縮寫,統計的是文件的位元組數,而不是通常我們想要的「字數」,字數的統計應該用-w,所以上面提到那個問題,可以怎麼做呢?wc並沒有提供給我們統計特定一個單詞的選項,只能查找唄~所以結合grep就可以這樣簡單寫:
grep cout hello.cpp | wc -l
5.上面命令通過管道串聯起來,意思是,查找hello.cpp里所有出現過cout的行,統計行數。
但是,問題來了,如果不只想統計行數,而是想精確到個數(一行里可能會出現多次),應該怎麼辦呢?
這就是grep的作用了2,-o選項(only的意思)表示只選中那些匹配的地方,比如a cout yes, and b cout no.,匹配cout,結果是兩行,每行一個cout。所以要想統計出現次數的話,簡單加一個選項就好了:
3. linux查看文件大小命令
最簡單的查看方法可以使用ls -ll、ls-lh命令進行查看,當使用ls -ll,會顯示成位元組大小,而ls- lh會以KB、MB等為單位進行顯示,這樣比較直觀一些。
通過命令-h –max-depth=1 *,可以查看當前目錄下各文件、文件夾的大小,這個比較實用。查詢當前目錄總大小可以使用 -sh,其中s代表統計匯總的意思,即只輸出一個總和大小。
Linux
全稱GNU/Linux,是一種免費使用和自由傳播的類UNIX操作系統,其內核由林納斯·本納第克特·托瓦茲於1991年10月5日首次發布,它主要受到Minix和Unix思想的啟發,是一個基於POSIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟體、應用程序和網路協議。它支持32位和64位硬體。
4. linux借用外部命令expr,實現計算器功能,利用管道,進程
test指令(使用指令man查詢)
功能:檢查文件類型,值比較。
test的各種參數和使用。
test EXPRESSION1 –a EXPRESSION2
當表達式1和表達式2同時為真時值為真
test EXPRESSION1 –o EXPRESSION2
當表達式1或者表達式2為真時值為真
test –n STRING
或者
test STRING
當STRING串的長度不為零時值為真
test –z STRING
當STRING串長度為零時值為真
test STRING1 = STRING2
當STRING1和STRING2相同時值為真
test STRING1 != STRING2
當STRING1 和 STRING2不同時值為真
test INTEGER1 –eq INTEGER2
當INTEGER1等於INTEGER2時值為真
test INTEGER1 –ge INTEGER2
當INTEGER1大於或者等於INTEGER2時值為真
test INTEGER1 –gt INTEGER2
當INTEGER1 大於INTEGER2時值為真
test INTEGER1 –le INTEGER2
當INTEGER1小於等於INTEGER2時值為真
test INTEGER1 –lt INTEGER2
當INTEGER1 小於INTEGER2時值為真
test INTEGER1 –ne INTEGER2
當INTEGER1不等於INTEGER2時值為真
test FILE1 –ef FILE2
當FILE1和FILE2有同樣的device和inode號時為真(詳細見linux文件學習筆記)
test FILE1 –nt FILE2
當FILE1修改時間比FILE2新時值為真
test FILE1 –ot FILE2
當FILE1修改時間比FILE2舊時值為真
test –b FILE
FILE存在並且內容是block類型的
test –c FILE
FILE存在並且是字元類型的
test –d FILE
FILE存在並且是一個目錄
test –e FILE
FILE是否存在
test –f FILE
FILE存在並且是一個正則表達式類型的文檔
test –g FILE
FILE存在並且是 set-group-ID也就是SGID(詳細見後文學習筆記)
test –G FILE
FILE存在並且由有效的GROUP ID所擁有(詳細見後文學習筆記)
test –h FILE
FILE存在並且是一個符號鏈接(詳細見後文學習筆記)
test –k FILE
FILE存在並且設置了sticky bit set(詳細見後文學習筆記)
test –L FILE
FILE存在並且是一個符號鏈接
test –O FILE
FILE存在並且由一個有效的USER ID所擁有
test –p FILE
FILE存在並且是一個命名管道(命名管道見後文學習筆記)
test –r FILE
FILE存在並且授予了可讀的許可權
test –s FILE
FILE存在並且size大於0
test –S FILE
FILE存在並且是一個socket
test –t FD
文件的描述符FD在終端打開
test –u FILE
FILE存在並且SUID已經被設置
test –w FILE
FILE存在並且授予了寫操作許可權
test –x FILE
FILE存在並且授予了可執行的許可權
----------------------------------------------------------------------------------------------------------------------------------------------------
expr
expr是linux的手工命令行計數器,它可以幫助我們完成一些基本的表達式值運算。同時它也是一個字元串處理工具
(1) 整數運算
$expr ARG1 | ARG2
$expr ARG1 & ARG2
$expr ARG1 < ARG2
$expr ARG1 <= ARG2
$expr ARG1 = ARG2
$expr ARG1 != ARG2
$expr ARG1 >= ARG2
$expr ARG1 > ARG2
$expr ARG1 + ARG2
$expr ARG1 – ARG2
$expr ARG1 * ARG2
使用乘法時,需要使用反斜杠進行轉義
$expr ARG1 % ARG2
(2) 字元串操作
$expr length 「xxx」 //計算字元串長度
$expr substr 「this is a」pos length //從第pos位開始截取length長度的子串
$expr index 「tesr」e //獲取e在主串中首次出現的位置
(3) 增量計數
例子
loop=3
loop=`expr $loop + 1`
echo $loop
結果是4,在第二行代碼中,使用反引號,shell會將反引號中的內容作為一個系統命令,這樣一來,就好像我們在命令行內輸入了expr $loop + 1然後這個命令的返回結果被賦值到loop。
(4) 模式匹配(按照正則表達式模式匹配串)
通過指定冒號選項計算字元串中字元數。.*意即任何字元重復0次或多次。
> VALUE=account.doc
> expr $VALUE : 』.*』
8
在expr中可以使用字元串匹配操作,這里使用模式抽取.doc文件附屬名。
$expr $VALUE : 『\(.*\).doc』
accounts
(5) 其他
+ TOKEN
將TOKEN解釋為串,不管它是一個關鍵字或者一個操作符
延伸知識:
引號的作用
1 雙引號(「」)
1)使用」」可引用除字元$(美元符號)、`(反引號)、\(反斜線)外的任意字元或字元串。雙引號不會阻止shell對這三個字元做特殊處理(標示變數名、命令替換、反斜線轉義)。
Eg:name=gezn; echo 「User name:$name」//將列印User name :gezn
Echo 「The date is:`date +date-%d-%m-%Y`」//將列印The date is: 03-05-2009
Echo –e 「$USER\t$UID」 //將列印gezn 500
2)如果要查新包含空格的字元串經常用到雙引號
2 單引號(』』)
1) 如果用單引號把字元串括起來,則dayi9nhao內字元串中的任何特殊字元的特殊含義均被屏蔽。
2) 舉例:echo –e 『$USER\t$UID』//將列印$USER $UID(沒有屏蔽\t,是因為選項「-e」的緣故)
echo 『USER\t$UID』 //將列印$USER\t$UID
3 反引號(``)
1) shell將反引號中的內容作為一個系統命令,並執行其內容。使用這種方法可以替換輸出為一個變數
2) 舉例:a=`date + date-%d-%m-%Y` //將列印The date is: 03-05-2009
4.反斜線(\)
1)如果下一個字元有特殊含義,反斜線防止shell誤解其含義,即屏蔽其特殊含義。
2)下屬字元包含有特殊含義:& * + $ ` 「 | ?
3) 在列印字元串時要加入八進制字元(ASCII相應字元)時,必須在前面加反斜線,否則shell作普通數字處。
舉例: bj=Beijing; echo 」variable\$bj=$bj」//將列印variable $bj = beijing
------------------------------------------------------------------------------------------------------------------------------------------------
Shell特殊變數
在Shell中,預先定義了幾個有特殊含義的Shell變數,它們的值只能由Shell根據實際情況進行賦值,而不能通過用戶重新設置。shell的特殊變數包括它的位置和一些系統變數.
(一)常用位置變數:
$# 命令行上實際參數的個數,但不包含Shell腳本名。
$? 上一條命令執行後的返回值(也稱作 「退出碼」)。它是一個十進制數。多數Shell命令執行成功時,則返回值為0;如果執行失敗,則返回非0值。
$$ 當前進程的進程號。
$! 上一個後台命令對應的進程號,這是一個由1~5位數字構成的數字串。
$- 由當前Shell設置的執行標志名組成的字元串。例如:
set -xv 這個命令行給Shell設置了標志-x和-v(用於跟蹤輸出)。
$* 表示在命令行中實際給出的所有實參字元串,它並不僅限於9個實參。
$@ 它與$*基本功能相同,但是使用時加引號,並在引號中返回每個參數
$0 腳本名稱
$1..$9 第N個參數
下面的aaa bbb 為變數名
${aaa:-bbb} 如果$aaa為空或未定義,則取值$bbb.否則取值$aaa
${aaa:+bbb} 如果$aaa非空,則取值$bbb,否則取值為空
${aaa:=bbb} 如果$aaa非空,則取值$aaa,否則取值$bbb而且賦值(aaa=bbb)
${aaa:3} 如果aaa=abcdefg,則${aaa:3}的值為:defg ,相當於substr,計數從0開始
${aaa:3:2} 如上; ${aaa:3:2}取值為: de.相當於substr
${#aaa} 字元串$aaa的長度.
(二)常用系統變數:
$HOME 用戶的主目錄
$USER 用戶名稱
$GROUP 用戶所屬組名
$PATH 默認的搜索路徑
$HOSTNAME 主機名稱
$TZ 時區
$MAIL 存放郵件的路徑名
練手:
#!/bin/bash
echo $0
echo $*
echo $@
echo $#
echo $$
echo $_
在terminal窗口中執行:
./test.sh -a -b –c /home
./test.sh
-a -b -c /home
-a -b -c /home
4
3250
/home
區別$*和$@編寫如下test.sh腳本:
#!/bin/bash
function testargs
{
echo "$# args"
}
testargs "$*"
testargs "$@"
unset -f testargs
在terminal窗口中執行:
./test.sh -a -b /home
1 args //很明顯就一個嘛,傳入的是$*這個串,不是解釋後的參數
3 args //$@必須和引號搭配,所以結果正確
#!/bin/bash
function testargs
{
echo "$# args"
}
testargs $*
testargs $@
unset -f testargs
再次執行有:
./test.sh -a -b /home
3 args
3 args
作者:Aga.J
出處:http://www.cnblogs.com/aga-j
5. 《Linux下部分常用指令筆記》
一、創建linux維護用戶
登錄root用戶
創建新用戶
useradd 新用戶名
設置用戶密碼
passwd 新用戶密碼
二、安裝jdk和配置環境變數
建議在root用戶下直接安裝jdk,並直接配置環境變數,同時給非root用戶設置讀和執行許可權
解壓包
tar xvf jdk包名.tar
配置全局變數
編輯/etc/profile文件
vi /etc/profile
按I鍵,切換成編輯模式。
在文件未加入一下配置
export java_HOME=jdk的解壓文件目錄
export JRE_HOME=jdk的解壓文件目錄/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${ JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${ JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
保存並退出
Esc
:wq
重載配置文件使其生效
source /etc/profile
檢查是否安裝成功
Javac
Java version
許可權修改
讀4寫2執行1,順序所有者、組成員、其他用戶
Chomd 755 jdk的解壓文件目錄
三、安裝tomcat
安裝tomcat和放入war包使用非root的維護用戶
如果使用root安裝的話記得設置許可權。( chomd -r 外層文件目錄 )
su - 用戶名
1、解壓包
tar xvf tomcat包名.tar
2、將war包放入tomcat/webapps目錄下
3、Tomcat啟動服務和停止服務
查看進程
ps -ef | grep java
啟動應用
Tomcat bin目錄下.startup.sh
停止應用
建議使用
Kill -9 進程號
註:解壓出應用文件後,注意配置信息的修改
四、IBM MQ部署 (7.5之後的版本)
(以下是使用9.0版本的正確部署命令)
一、 卸載舊版本IBM MQ (可選)
<因為部署環境沒有安裝過mq,卸載這部分命令我沒有親自測試過>
設置環境
以用戶身份登錄到組mqm,找到mq的安裝位置 /opt/mqm
source ./setmqenv -s
查看隊列管理器的狀態
dspmq -o installation
停止與要卸載的安裝關聯的所有正在運行的隊列管理器
endmqm SXRECV
停止與隊列管理器關聯的所有偵聽器。
endmqlsr -m SXRECV
查看系統上當前安裝的軟體包(組件)
sudo rpm -qa | grep MQSeries
列出軟體包並一次性卸載
sudo rpm -qa | grep MQSeries | xargs rpm -ev
再將對應的用戶及安裝目錄給刪除
rm -rf /opt/mqm
userdel -r mqm
檢查MQ license
license文件在安裝目錄中 /opt/mqm/lib 可以找到
amqtcert.lic - is a trial license
amqbcert.lic - is a beta license
amqpcert.lic - is the proction license
——————————————————————————————————————
二、安裝新版本ibm mq
解壓,解壓文件都在MQServer中
tar –xzvf IBM_MQ_9.1.5_LINUX_X86-64.tar.gz
進入MQServer文件夾中:
cd MQServer/
運行MQ許可證程序
./mqlicense.sh
安裝WebSphere MQ for Linux伺服器(Runtime、SDK 和 Server 軟體包):
rpm -U MQSeriesRuntime-9.1.5-0.x86_64.rpm
rpm -U MQSeriesSDK-9.1.5-0.x86_64.rpm
rpm -U MQSeriesServer-9.1.5-0.x86_64.rpm
安裝WebSphere MQ for Linux客戶機:
rpm -U MQSeriesClient-9.0.0-0.x86_64.rpm
安裝WebSphere MQ樣本程序:
rpm -U MQSeriesSamples-9.0.0-0.x86_64.rpm
創建組和用戶
安裝過程創建了一個名為mqm的用戶和一個同樣名為 mqm 的組。設置一個密碼來解鎖。
passwd mqm
——————————————————————————————————————
三、 配置
(這部分隊列管理器、通道、隊列等根據實際情況自行配置)
切換用戶:
su mqm
創建隊列管理器
使用crtmqm命令來創建一個名為 SXRECV
的隊列管理器。我們把它作為預設隊列,並且將不在創建時指定死信隊列。然後使用strmqm命令啟動隊列管理器。
crtmqm -q SXRECV
strmqm SXRECV
——————
如果執行crtmqm命令時提示
-bash-3.2$ crtmqm
-bash: crtmqm: command not found
find / -name crtmqm
則需要配置mqm用戶的環境變數,編輯如下文件,並添加下面的內容,如下:
第一種方法:相對第二種較安全僅對mqm用戶有效
方法一:
(1) -bash-3.2$ vi /var/mqm/.bash_profile --有可能會在文件夾下看不到這個文件,通過編輯即可看到
PATH=$PATH:/opt/mqm/samp/bin:/opt/mqm/bin:bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin
(2)執行「.」命令,使這個文件生效
-bash-3.2$ source .bash_profile
(3)再次嘗試實行crtmqm或是dspmqm命令,即可發現已經生效。
方法二:
( 1)
su root
[if !supportLists](2)[endif]
vim /etc/profile
[if !supportLists](3)[endif] 在最後面加上:
PATH=$PATH:/opt/mqm/samp/bin:/opt/mqm/bin:bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/bin
( 4)關閉遠程終端重新打開,無需重啟伺服器
——————
運行隊列管理器
runmqsc SXRECV
創建通道和隊列
DEFINE QLOCAL (XYDATA) REPLACE USAGE (NORMAL) DEFPSIST (YES) MAXDEPTH (300000) DESCR('興業銀行')
DEFINE QLOCAL (XYTRANS) REPLACE USAGE (XMITQ) DEFPSIST (YES) MAXDEPTH (300000) DESCR('興業銀行')
DEFINE QREMOTE (XYACK) REPLACE DEFPSIST (YES) RQMNAME (SXSEND) RNAME (XYACK) XMITQ (XYTRANS) DESCR('XXXX')
DEFINE CHANNEL (XYDATA) CHLTYPE (RCVR) TRPTYPE (TCP) REPLACE DESCR('XXXX')
DEFINE CHANNEL (XYACK) CHLTYPE (SDR) CONNAME ('166.1.1.8(2214)') XMITQ (XYTRANS) TRPTYPE (TCP) DISCINT (0) CONVERT (NO) SHORTRTY (30) SHORTTMR (10) LONGRTY (999999999) LONGTMR (20) REPLACE DESCR('XXXX')
DEFINE CHANNEL (SVRCONN) CHLTYPE (SVRCONN) MCAUSER('mqm')
創建監聽
DEFINE LISTENER (RECLISTENER) TRPTYPE (TCP) CONTROL(QMGR) PORT (2214)
啟動監聽
start LISTENER(RECLISTENER)
啟動通道
start channel(SVRCONN)
start channel(XYDATA)
start channel(XYACK)
———————————————————————————————————————————————————
四、2035錯誤碼 說明
如果程序連接mq報錯2035,則需要對許可權認證做設置,則進行以此操作
1、
ALTER QMGR CHLAUTH(DISABLED)
2、
ALTER CHL(通道名) CHLTYPE(SVRCONN) MCAUSER('mqm')
3、
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
或者直接將連接認證選項置為空,將其完全關閉,指令如下:
ALTER QMGR CONNAUTH('')
在執行完上述兩條命令中的任一條後,都需要刷新連接認證的緩存,指令如下:
REFRESH SECURITY TYPE(CONNAUTH)
五、mq操作命令
一、MQ的啟動與停止
1、MQ的啟動
strmqm QMgrName
如果啟動默認隊列管理器,strmqm後可以忽略隊列管理器名稱。
2、MQ的關閉
endmqm -i QMgrName
停止mq
二、MQ運行狀態查看與常用操作
1、 查看隊列管理器運行狀態
su mqm
執行如下命令檢查隊列管理器運行狀態:dspmq顯示結果中QMNAME表示MQ隊列管理器的名稱,STATUS表示當前運行狀態。運行狀態有如下幾種:Starting正在啟動Running正在運行Ending正在停止Ended normally已經正常終止Ended immediately已經立即終止Ended preemtively已經強制終止Ended unexpectively異常終止
注意:停止MQ後必須使用dspmq命令進行狀態檢查
2、查看通道運行狀態與啟停通道
runmqsc
dis chl(*);查看所有通道定義
dis chs(*);查看所有通道狀態,如果沒有查詢到通道狀態,或報錯AMQ8420: Channel Status not found,請啟動通道
dis chs(ChannelName); 查看通道ChannelName的狀態
通道狀態有如下幾種:
STARTING正在啟動BINDING正在綁定INITIALIZING正在初始化RUNNING正常STOPPING 正在停止RETRYING重試PAUSED等待STOPPED已停止REQUESTING請求
start chl(ChannelName);啟動通道
stop chl(ChannelName);停止通道
* 重置通道
reset channel(ChannelName); 重置通道序號。當本地與其他MQ隊列管理器的通道無法正常啟動的情況,檢查日誌發現是通道序號不一致,此時就需要先停止發送方通道,清空隊列深度並在發送方和接收方進行通道計數的重置,重置後啟動通道即可恢復通訊。
注意:重置成功mq序列號一般相同或相差1
3、查看通道監聽狀態與啟停監聽
runmqsc
dis listner(*);查看通道監聽定義
dis lsstatu(listnerName);查看監聽狀態
start lstr(listnerName); 啟動監聽
stop lstr(listnerName); 停止監聽
4、查看隊列深度
runmqsc
dis q(*);查看所有各類隊列的屬性
dis qlocal(QName);查看所有本地隊列的屬性
隊列深度屬性為:CURDEPTH
查看隊列深度display ql('隊列名') curdepth
*清空隊列深度
清空隊列深度
clear ql(『隊列名』)
三、MQ發送和接收消息
su mqm
發送消息
amqsput 隊列名 隊列管理器
獲取消息
amqsget 隊列名 隊列管理器
可通過配合查看隊列深度命令,完成mq的聯調
六、其他維護中常用linux命令
1、測試埠連接
telnet ip port
2、查看已啟動的埠
netstat -an | grep 埠號
3、查看應用進程
ps -ef |grep java
4、修改許可權
chomd XXX(對應的許可權) 文件目錄
5、修改文件或目錄下所有文件所有者和組
Chomd -R 用戶名:組名 文件目錄
6、查看目錄內容
ls 或者ls -l (簡寫ll)
7、查看文件輸出
cat 目錄/文件名
或者
Vi 目錄/文件名 按i可進入編輯
按 G 到文檔末尾
按 gg 到文件首行
不保存退出
Esc :q!
保存退出
Esc :wq
vi 進入文檔文檔後查找關鍵字
Esc 進入命令行
/關鍵字
按n向下繼續查找
按N向上繼續查找
8、殺進程
Kill -9 進程號
9、復制
cp -r 源目錄 目標目錄
10、移動
mv -i 源文件或目錄 目標文件或目錄
11、刪除
rm -R 文件目錄
12、 切換工作目錄
cd 相對路徑或絕對路徑
~也表示為 home 目錄 的意思, . 則是表示目前所在的目錄, .. 則表示目前目錄位置的上一層目錄。
6. linux 的常用小技巧
1、統計文件的行數
<pre>
[root@test59 dbgen]# wc -l partsupp.tbl
80000000 partsupp.tbl
[root@test59 dbgen]# wc -l orders.tbl
150000000 orders.tbl
</pre>
wc 還有其他的一些參數:
語法:wc [選項] 文件…
說明:該命令統計給定文件中的字元數、字數、行數。如果沒有給出文件名,則從標
准輸入讀取。wc同時也給出所有指定文件的總統計數。字是由空格字元區分開的最大字元串。
該命令各選項含義如下:
這些選項可以組合使用。
輸出列的順序和數目不受選項的順序和數目的影響。
總是按下述順序顯示並且每項最多一列。
行數、字數、字元數、文件名
如果命令行中沒有文件名,則輸出中不出現文件名。
另外針對命令也可以增加wc -l,例如查看一下當前80埠的連接情況:
netstat -an|grep 80|wc -l
2、用戶如果出現資源不夠,執行su - user也出錯:
su: cannot set user id: Resource temporarily unavailable
需要檢查/etc/security/limits.conf
<pre>
vi /etc/security/limits.conf
</pre>
分布式環境下資源使用的很多,默認設置遠遠不夠
3、簡單的針對某個ip進行iptables設置:
iptables -I INPUT -s 121.0.0.34 -j DROP
4、設置密碼的安全策略
Debian、Ubuntu 或 Linux Mint 系統上:
<pre>
root@deepin155:~# vi /etc/pam.d/common-password
password requisite pam_pwquality.so enforce_for_root retry=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 difok=3
</pre>
它表示密碼必須至少包含一個大寫字母(ucredit),一個小寫字母(lcredit),一個數字(dcredit)
ocredit:標點符號
difok:字元種類
minlen:密碼長度
CentOS、Fedora、RHEL 系統上:
<pre>
vi /etc/pam.d/system-auth
password requisite pam_cracklib.so try_first_pass retry=3 type=
</pre>
設置密碼過期期限
編輯 /etc/login.defs 文件
<pre>
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
</pre>