1. 程式人生 > >從一個程序監控指令碼學幾個Linux命令

從一個程序監控指令碼學幾個Linux命令

首先來看看指令碼全貌

#!/bin/sh
curTime=`date +%Y%m%d-%H:%M`
count=1
nums=$(ps -ef | grep -E "zhudejun.*mainClass=Main" | grep -v grep | awk '{print $2}'| wc -w);
if [ $nums -lt $count ]
then
    cd /home/zhudejun/recomMonitor/RecomMonitor
    nohup mvn exec:java -Dexec.mainClass="Main" &  
    cd /home/zhudejun/recomMonitor/
    echo
"重啟服務"$curTime >> recomMonitor.log fi

用到了ps,grep,awk,wc 以及shell語法相關的一些知識.下面一一來看

ps命令

語法:ps (選項)
用於報告當前系統的程序狀態.用的太多了,就不細說了

grep命令

常用語法: pipe源 | grep (選項) pattern grep (選項) pattern file_name
-o 只輸出文件中匹配到的部分
-v 反轉搜尋
-E 正則表示式
-i 大小寫忽略

awk命令

語法:awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file


awk是一種程式語言,用於在linux/unix下對文字和資料進行處理。
工作流程:

  1. 執行BEGIN{ commands }語句塊中的語句;
  2. 從檔案或標準輸入(stdin)讀取一行,然後執行pattern{ commands }語句塊,它逐行掃描檔案,從第一行到最後一行重複這個過程,直到檔案全部被讀取完畢。
  3. 當讀至輸入流末尾時,執行END{ commands }語句塊。

wc命令

語法:wc (選項)
wc命令用來計算數字。
-c或–bytes或——chars:只顯示Bytes數;
-l或——lines:只顯示列數;
-w或——words:只顯示字數。

linux預設變數

最後補充幾個linux中的變數
$# 是傳給指令碼的引數個數

$0 是指令碼本身的名字

$1 是傳遞給該shell指令碼的第一個引數

$2 是傳遞給該shell指令碼的第二個引數

$n 第n個引數

[email protected] 是傳給指令碼的所有引數的列表

$* 是以一個單字串顯示所有向指令碼傳遞的引數,與位置變數不同,引數可超過9個

$$ 是指令碼執行的當前程序ID號

$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其他表示有錯誤

相關推薦

一個程序監控指令碼Linux命令

首先來看看指令碼全貌 #!/bin/sh curTime=`date +%Y%m%d-%H:%M` count=1 nums=$(ps -ef | grep -E "zhudejun.*mainClass=Main" | grep -v grep | aw

[一天linux命令] shell指令碼之正則表示式

shell指令碼之正則表示式 原文連結:Linux–shell指令碼之正則表示式 概念及特點 概念 正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定的字元、及這些特定字元的組合,組成一個"規則字串",這個"規則字串"用來表達對字串的一種過濾邏輯。規定一些特殊語

Linux命令指令碼使用中的奇淫巧技

例項1.建立一個別名,刪除原始檔案,同時在使用者的home目錄下backup中儲存副本。 #/bin/bash cp [email protected] ~/backup && rm -rf [email protected] 例項2.For

測試工作中經常用到的Linux命令(第一彈)

ppi 問題 過程 哪些 工作 存在 隱藏文件 日誌 清空 自己平時測試工作中經常要在Linux下搭建測試環境,有涉及到啟動/終止服務器,修改tomcat配置文件,偶爾碰到端口被占用。。。 這時就不得不需要一些基本的Linux命令來處理遇到的這些問題(順便邁向裝B之旅) 1

[一天linux命令] find

find 名稱 find - 在目錄樹中搜索檔案 使用 -name 正則表示式 基於檔名搜尋(檔案前的目錄會被忽略),正則與shell的正則一樣。因為檔案前的目錄會被忽略,所以查詢的檔名中永遠不要包括’/’,因此’-name a/b’查詢不到任何東西(你可能需要使用**-

最近專案裡用到的Linux命令總結

最近在專案裡接觸到幾個常用的Linux命令,在此總結一下: su - 使用者名稱 切換到指定使用者 注意:- 跟使用者名稱之間需要有一個空格 cd     返回到登入時的目錄

超有趣的這linux命令

這裡列舉的幾個沒有實際用處、 但很有趣的命令。它們的有趣並不是因為無用,而是真的有趣,接下來就讓我們看看它們是如何搞怪的吧。 一、cmatrix 你應該看過好萊塢大片《駭客帝國》,相信你會對電影中那些神奇的場景著迷。 在Neo的眼裡任何東西都能以計算機位元組流的形式展現,你是否也想做一個很有黑客範

[一天linux命令] 改變檔案所屬使用者組,所有者 chgrp chown

修改檔案的所屬使用者組 chgrp 改變一個檔案的使用者組真的是很簡單,直接以chgrp來改變即可,這個命令就是change group的簡稱。不過,請記得,要改變的組名必須要在/etc/group檔案記憶體在才行,否則就會顯示錯誤 用法: ch

[一天linux命令] Linux的賬號與群組

Linux的賬號與群組 管理員的工作中,相當重要的一環就是“管理賬號”啦!因為整個系統都是你在管理的,並且所有一般使用者的賬號申請,都必須要通過你的協助才行!所以你就必須要了解一下如何管理好一個伺服器主機的賬號啦!在管理Linux主機的賬號時,我們必須先來了解

一個優秀的程序員該有的好習慣

nbsp sdn 函數 程序員 問題 很好 學習 視野 自己的 1. 看到下次還經常用的函數代碼就會封裝,然後保存; 註意這裏提到的,先封裝到一個類中,這樣就能避免每段代碼都保存到一個文件中,下次使用時可以直接拷這個類使用; 2. 系統地學習的時候,多看業內大牛的博客,這樣

初學Windows應用程序開發遇到的專業名詞解釋

程序編譯 理論 文件 微軟 文件的 開發環境 環境 com pos 1、.NET Framework Visual Studio.NET程序開發環境是微軟開發的基於.net 架構的Windows應用程序開發工具,它支持VB.NET、C/C++、C#、Java等編程語言,提供

技術好卻進不了大公司?iOS程序員面試的小技巧你可要收好了

朋友 知識 了解 一點 今天 刪除 就會 為什麽 年輕 前言: 有很多程序員,專業技術挺好,項目經驗充足,簡歷上金碧輝煌,也面試了很多國內大廠,但就是沒有一家能成功的。處境可以說是相當尷尬。 大家都知道程序員本身就是要吃年輕飯,不僅是技術活,也是體力活。早點跳槽,早點漲薪,

php中一個字符占用字節?

php先看看字符與字節有什麽區別:(一)“字節”的定義字節(Byte)是一種計量單位,表示數據量多少,它是計算機信息技術用於計量存儲容量的一種計量單位。(二)“字符”的定義字符是指計算機中使用的文字和符號,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。數字、字母等符號都是字符,字符只占一個

【14】程序監控指令碼-getRSSMem.sh

# get size of java process RSS memory PName=$1 #echo $PName if [ "$PName" != "" ];then a=`ps aux | grep $PName | grep -v grep | grep -v z

【13】程序監控指令碼-getPID.sh

#!/bin/bash # get size of java process PID PName=$1 #echo $PName if [ "$PName" != "" ];then pid=`ps aux | grep $PName | grep -v grep

【11】程序監控指令碼-getHandle.sh

# get size of java process handles PName=$1 #echo $PName if [ "$PName" != "" ];then a=`ps aux | grep $PName | grep -v grep | grep -v zabb

【10】程序監控指令碼-getCPUPer.sh

#!/bin/bash # get size of java process CPU% PName=$1 #echo $PName if [ "$PName" != "" ];then a=`ps aux | grep $PName | grep -v grep |

[遞迴] 排列組合 - 一個字串中任意選取N元素構成的所有排列組合 - C語言

排列組合 【題目】求從字串中"ABCD"中任取3個元素構成的所有排列組合 A

用shell指令碼增加組,並在每個組裡建立一定的使用者

昨天我們用語言寫了一個關於使用者組和使用者的簡單應用,但是說實話,就九個使用者我已經重複的很煩惱了,於是我就想能不能通過shell指令碼來實現批量增加使用者。於是乎,我今天就想著用shell指令碼去完成昨晚的例子。我們先來回顧一下昨天的例子。 題目:建立幾個組,每個組有一定的成員,並且每個組有一個可以操作的

一個正常人變成程式猿兩多月的規劃

                        首先  不多說啥  今天剛剛在戴爾軟體技術部辭職  心情格外好 由衷的感覺 因為我知道自己不適合售後服