先大概列一下常用的命令
cd、ls、ll、grep、less、tail、vi、vim、touch等,我就不一一列舉了
查看硬盤空間情況df -l
[root@localhost dev]# df -l
查看內存:free -m
[root@localhost bin]# free -m
查看cpu型號:cat /proc/cpuinfo
[root@localhost bin]# cat /proc/cpuinfo
查看內核版本:uname -a
[root@localhost bin]# uname -a
查看系統版本:lsb_release -a
[root@localhost /]# lsb_release -a
查看端口占用情況:
lsof -i :port
查看是否有某些文件:
find ~/develop -name filename 查找develop 目錄下的文件名爲某某的
rpm -qa|grep -i mysql 檢查是否安裝過mysql
rpm -ivh:安裝顯示安裝進度--install--verbose--hash
#註釋
#單行用#多行用:<<!....!
#在bash中,$( )與` `(反引號)都是用來作命令替換的
#$( )的弊端是,並不是所有的類unix系統都支持這種方式,但反引號是肯定支持的
#一般情況下,$var與${var}是沒有區別的,但是用${ }會比較精確的界定變量名稱的範圍
#linux中shell變量$#,$@,$0,$1,$2的含義解釋:
#變量說明:
$$
#Shell本身的PID(ProcessID)
$!
#Shell最後運行的後臺Process的PID
$?
#最後運行的命令的結束代碼(返回值)
$-
#使用Set命令設定的Flag一覽
$*
#所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$@
#所有參數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$#
#添加到Shell的參數個數
$0
#Shell本身的文件名
$1~$n
#添加到Shell的各參數值。$1是第1參數、$2是第2參數…。
我大概列舉一下簡單的一些
#解壓
tar -zxvf fileName
unzip FileName.zip
#查系統版本:
cat /etc/redhat-release
sudo vim #操作命令 回車輸入密碼就root用戶權限
df -h #磁盤命令
du -sh #查文件大小
#查看某一端口的佔用情況: lsof -i:端口號
#linux端口狀態查看相關命令
netstat -an|grep 8080
#獲取某個文件的內容,通過名字過濾、再通過:剪切,再去重
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
#後臺啓動某個進程
nohup sh xx.sh >./nxx.log 2>&1 &
#再如:
nohup java -jar ./springbootjardemo.jar > springbootjardemo.log 2>&1 &
shell運算
#!/bin/bash
#第一方式$()
RESULT1=$(((2+3)*4));
echo "result1=$RESULT1"
#第二種方式[]
RESULT2=$[(2+3)*4]
echo "result2=$RESULT2"
#使用expr 運算號與數據之間必須要有空格符號
#expr + , - , \*, /, % 加,減,乘,除,取餘
#注意:expr運算符間要有空格
TEMP=`expr 2 + 3`;
RESULT3=`expr $TEMP \* 4`
echo "result3=$RESULT3"
#$((運算式))”或“$[運算式]
#求出兩個參數的和
SUM=$[$1+$2]
echo "SUM=$SUM"
if語句
#!/bin/bash
#案例1:"ok"是否等於"ok"
#if和[ ]之間要空格
#[ ]和“ ”之間要空格
# ”和=之間要空格
#否則都會報錯
if [ “ok” = “ok” ]; then
echo "equal"
else
echo "not equal"
fi
#案例2:20是否大於等於20
#大於 -gt (greater than)
#小於 -lt (less than)
#大於或等於 -ge (greater than or equal)
#小於或等於 -le (less than or equal)
#不相等 -ne (not equal)
if [ 25 -ge 25 ]; then
echo "equal"
else
echo "not equal"
fi
#案例3:/opt/tmp/aaa.txt 目錄中的文件是否存在
if [ -e /opt/tmp/aaa.txt ]; then
echo "exist"
fi
$的用法
#!/bin/bash
#$$ Shell本身的PID(ProcessID)
#$! Shell最後運行的後臺Process的PID
#$? 最後運行的命令的結束代碼(返回值)
#$- 使用Set命令設定的Flag一覽
#$* 所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
#$@ 所有參數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
#$# 添加到Shell的參數個數
#$0 Shell本身的文件名
#$1~$n 添加到Shell的各參數值。$1是第1參數、$2是第2參數…。
#獲取到各個參數
echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "參數個數=$#"
echo "當前的進程號=$$"
#後臺的方式運行 myShell.sh
sh myshell.sh &
echo "最後的進程的號=$!"
echo "執行的值=$?"
function
#!/bin/bash
function sum(){
S=0
S=$[$n1+$n2]
echo "s=$S"
}
read -p "請輸入第一個數n1=" n1
read -p "請輸入第一個數n2=" n2
sum $n1 $n2
for的用法
#!/bin/bash
#案例1 :打印命令行輸入的參數
#使用 $*
for i in "$*"
do
echo "the num is $i"
done
echo "==============================="
#使用 $@
for j in "$@"
do
echo "the num is $j"
done
#案例2 :從1加到100的值輸出顯示
#定義一個變量
SUM=0
for((i=1;i<=100;i++))
do
SUM=$[$SUM+$i]
done
echo "sum=$SUM"
while的用法
#!/bin/shell
#案例1 :從命令行輸入一個數n,統計從 1+..+ n 的值是多少
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "sum=$SUM"
case的用法
#!/bin/bash
#案例1 :當命令行參數是 1 時,輸出 "週一", 是2 時,就輸出"週二", 其它情況輸出 "other"
case $1 in
"1")
echo "週一"
;;
"2")
echo "週二"
;;
"3")
echo "週三"
;;
*)
echo "other"
;;
esac
同步腳本的Demo
#!/bin/shell
#1 獲取輸入參數個數, 如果沒有參數,直接退出
paramCount=$#
if [ $paramCount -eq 0 ]; then
echo "no args"
exit
fi
#2 獲取文件名稱
p1=$1
#filename=$(basename $p1)和fname=`basename $p1`是一樣的
filename=$(basename $p1)
echo filename=$filename
#3 獲取上級目錄到絕對路徑
#$(cd -P $(dirname $p1); pwd) 和`cd -P $(dirname $p1); pwd` 即$() 和``反向引號是一樣的
pdir=$(cd -P $(dirname $p1); pwd)
echo pdir=$pdir
#4 獲取當前用戶名稱
#user=`whoami`
user=$(whoami)
#echo user=$user
for((hosts=2; hosts<5; hosts++)); do
#rsync -rvl $pdir/$fname $user@weisg00$host:$pdir
echo $pdir/$fname $user@weisg00$hosts:$pdir
done
進程監控的Demo
top //每隔5秒顯式所有進程的資源佔用情況
top -d 2 //每隔2秒顯式所有進程的資源佔用情況
top -c //每隔5秒顯式進程的資源佔用情況,並顯示進程的命令行參數(默認只有進程名)
top -p 12345 -p 6789//每隔5秒顯示pid是12345和pid是6789的兩個進程的資源佔用情況
top -d 2 -c -p 123456 //每隔2秒顯示pid是12345的進程的資源使用情況,並顯式該進程啓動的命令行參數
pmap pmap - report memory map of a process(查看進程的內存映像信息)
選項含義
-x extended Show the extended format. 顯示擴展格式
-d device Show the device format. 顯示設備格式
-q quiet Do not display some header/footer lines. 不顯示頭尾行
-V show version Displays version of program. 顯示版本
#!/bin/shell
#進程號
input_process_id=$1
while true
do
pmap -d ${input_process_id}|tail -1
sleep 3
done
我用springboot開發,所以看下一下springboot.jar的啓動及停止,只要你看懂了啓動,停止就懂了
不多說,直接上代碼:
#!/bin/sh
RESOURCE_NAME=springbootjardemo.jar
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 5
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'App is running.'
else
echo 'App is NOT running.'
fi
#rm -f tpid
nohup java -jar ./$RESOURCE_NAME --spring.profiles.active=test >> demo.out &
#echo $! > tpid
if [ $! -gt ${tpid} ]; then
echo Start Success!
fi
如果是寫接口的,有linux上可以瞭解一下壓力測試工具siege的用法
在Linux上搞集羣,自然少不了時間同步設置問題
llinux下時間同步的方法
ntpdate time.nist.gov
其中 time.nist.gov 是一個時間服務器.
刪除本地時間並設置時區爲上海
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime