簡單常用命令
- 清屏 clear, ctrl + l
- 創建檔案夾 mkdir abc
- 創建檔案 touch abc
- 設定權限 chmod 755 abc, chmod -x abc, chmod a+x abc, chmod a+w abc
注意
r 代表讀權限,用數值4表示
w 代表寫權限,用數字2表示
x 代表執行權限,用數字1表示
+ 代表增加權限
- 代表減少權限
因此755代表 rwxr-xr-x,7代表檔案擁有者權限,5代表檔案所屬組權限,5代表檔案組外權限
find
用途:基于檔案屬性查找
用法:
find [查找路徑] 尋找條件 操作
常用引數:
-name
-type f/d(檔案/目錄)
-size +/-30M(大于/小于)
-perm
-exec
-ok (比exec多一個詢問)
-maxdepth 指定搜索的目錄層級
-exec引數詳解
find [目錄] -[引數] -exec [命令] {} \;
find [目錄] -[引數] -exec [命令] {} +
分號和加號都是-exec引數的終結符
\; 每找到一個,就執行一次[命令]
+ 找到多個,一次性執行[命令]
-exec特點
這兩種-exec中的tar命令的使用等效
find . -type f -exec tar -czvf n.tar.gz {} +
find . -type f -exec tar -uvf n.tar.gz {} \;
xargs
這種使用方式效果和上述兩種方式一致
find . -type f | xargs tar -czvf n.tar.gz
tar
tar -xzvf [壓縮檔案名] -C [指定卸壓目錄](卸壓)
tar -czvf [壓縮檔案名] [要進行壓縮的檔案] (壓縮)
tar -uvf [壓縮檔案名] [要進行壓縮的檔案] (更新式壓縮)
tar -tvf [壓縮檔案名] (不卸壓查看內容)
--remove-files (在壓縮完檔案后洗掉源檔案)
sed
s:字符替換
sed 's///' file
sed 's/abc.net/efg.com/' text.txt
c:整行替換
sed '//c/' file
sed '/^SELINUX=/cSELINUX=disabled/' file
^代表開頭
g:全域替換
sed 's///g' file
sed 's/abc.net/efg.com/g' test.txt
-n:定位到某一行
sed -n '2p' file (定位到第二行)
sed -n '/broadcast/p' file (定位到/broadcast這一行)
-e:允許在同一行命令中執行多個命令
sed -e '///' -e '///' file
sed -e 's/11/aa/' -e 's/bb/gg/' file
-i:生效到文本;不加只是屏顯測驗結果
sed可以同時對多個檔案執行同一個'///'
sed 's/aa/11/' file1 file2 ...
awk
功能:報告生成器(不修改文本)
- 行:record
- 列:field
- NR:number of record
- NF:number of field
例:
基本操作:
awk '{print $0}' access.log (列印所有列)
awk '{print $1}' access.log (列印第一列)
awk '{print $NF}' access.log (列印最后一列)
awk '{print $NF-1}' access.log (最后一列-1)
awk '{print $(NF-1)}' access.log (列印倒數第二列)
列對齊:
awk '{print $1" \t "$2" \t "$3}' access.log (列對齊)
awk '{print $1,$2,$3}' access.log (輸出默認分隔符為逗號,代表一個空格,若把逗號改成空格,輸出效果表現為空)
echo 1:2 3*4|awk -F":" '{print $1}' (-F表示指定輸入分隔符,輸入默認分隔符為空格)
顯示行數/列數:
awk '{print NR "\t" $0}' awk.txt (列印行號)
awk '{print NF "\t" $0}' awk.txt (列印每行的列數)
awk '$2=="2012"{print $0}' staff.txt (當第二列的值==2012時,列印這一行)
awk '{print NF}' staff.txt (只列印每行的列數)
awk '{print NR}' staff.txt (只列印每行的行號)
awk 'NR=="3"{print NR,$0}' staff.txt (只列印第3行)
awk 'NF=="5"{print $0}' staff.txt (只列印列數為5的行)
注意:如果不指定檔案名,awk會等待輸入
自定義分隔符
awk 'BEGIN{FS=","}{print $1}'
BEGIN表示全域變數,FS表示輸入分隔符,OFS表示輸出分隔符
awk默認的輸入分隔符和輸出分隔符是分別定義的
awk 'BEGIN{FS=",";OFS=","}{print $1,$2}'
awk '{print NR,FILENAME,$0}' staff.txt data.txt (會把data的內容追加列印在staff的下方顯示)
隱藏某列內容
awk '{$3="xxxx";print $0}' staff.txt
awk做計算
awk '{a=1;b=3;print a+b}' (回車給出結果,但不結束)
awk遇到字符:
awk '{a=2;b="56ass";c=3;print b+c}' (56+3=59)
awk '{a=2;b="ass56";c=3;print b+c}' (3)
grep/egrep
功能:基于文本內容的查找
grep -E等效于egrep
排除#號行(注釋)和空行
egrep -v "^$|#" file (-v取反,^以什么開頭,$以什么結尾,|或者)
egrep -v '(#|^$)' file
或者
grep -Ev "#|^$" file
查找目錄下的所有檔案中是否包含指定字串
find . | xargs grep -ri "IBM"
查找目錄下的所有檔案中是否包含指定字串,并只列印檔案名
find . | xargs grep -ril "IBM"
cut
功能
文本/屏顯的切割命令;能接收管道,也能直接操作文本,按行處理
- 默認以制表符為分隔符
- -b 按位元組切割(1byte=8bit)
- -c 按字符切割(character,全角是2個byte,半角是1個byte)
- -f 按欄位切割(field列)
- -d 指定分隔符(輸入、輸出一樣)
who | cut -b 3 (切割who的輸出,并只顯示每行的第3個字符)
范圍的表示方法
| 表示 | 備注 |
|---|---|
| N | 只有第N項 |
| N- | 從第N項一直到行尾 |
| N-M | 從第N項到第M項(包括M) |
| -M | 從一行的開始到第M項(包括M) |
cut -d: -f 1,3-5,8- file.txt (-d指定分隔符:,-f指定輸出第1列、3-5列、第8列及以后)
cut和awk的一些區別
- cut默認不會忽略空格和制表符(全是field欄位)
- awk默認把空格、制表符看作分隔符(非field欄位)

cut如何輸入制表符
先按ctrl+v,再按tab健,"\t"這種分隔符都是無效的
重定向
- 標準輸入0 standardinput STDIN
- 標準輸出1 standardoutput STDOUT
- 標準錯誤2 standarderror STDERR
標準輸出重定向
| 符號命令 | 用途 |
|---|---|
| > 或 1> | 把標準輸出重定向到新檔案(會覆寫),標準錯誤不適用 |
| &> 或 2> | 標準錯誤輸出 |
| >> | 追加,不覆寫原有檔案 |
| &>> | 標準錯誤追加 |
| 2>&1 | 將標準錯誤重定向到標準輸出 |
| 命令 >> 檔案 2>&1 或 命令 &>> 檔案 | 將標準輸出與錯誤輸出共同(追加)寫入檔案(不管命令執行結果如何) |
| 命令 > 檔案 2>&1 或 命令 &> 檔案 | 同上(不追加) |
systemctl status httpd > httpd (無屏顯,內容存到httpd)
systemctl status abc > abc (屏顯錯誤,abc存在并空白)
tee : 類似于大于號,但只從管道(或輸入重定向)接收資料
tee -a : 類似于追加符(-a append)
tee和tee -a都會屏顯,>>和>不屏顯
tee可以同時重定向到多個檔案(而>和>>沒有這個功能,123 > file1 file2 結果file1里面是123 file2)
命令1|tee file.txt|命令2: 將命令1的結果既保存到file.txt中,也傳給命令2,并屏顯命令2的結果(若有第三個管道,就正常傳值)
標準輸入重定向
| 符號命令 | 用途 |
|---|---|
| < | 指定輸入檔案 |
| << | 等待用戶輸入,指定輸入結束符 |
| tr | 只處理字符,而非單行單列,只顯示處理結果,不修改源檔案,只從管道(或輸入重定向)接收資料(同tee) |
cat > file <<end (一直等待輸入,直到輸入end)
echo 1234 | tr 123 AB (結果為ABB4)
echo 1::2::3 | tr -s : (-s壓縮重復字符,結果為1:2:3)
tr -d "^$" < file (不能洗掉空行,因為tr只對字符操作)
tr -d " " < file (洗掉空格)
tr 1-9 a-z < file (數字變字母)
sort
默認ASCII碼排列,從左往右讀取字符abcdefg
| 引數 | 用途 |
|---|---|
| -r | 倒排序 |
| -n | 按數字排列 |
| -t | 指定分隔符,如-t:指定分隔符為冒號 |
| -k | 指定列,如-k3n代表第3列按數字排序 |
uniq
去除重復行
-c:去除重復行并統計重復行的數量
wc
wc -l:統計行數
錨定符
與正則的區別:錨定符前后不能有其他字符,正則可以有
\<字串\>
\b字串\b
head/tail
head -5 前5行
tail -5 最后5行
tail -f 表示一直重繪最后的
shell腳本撰寫
#!/bin/bash
if [ $# -ge 1 ];then
systemctl status $1 &> /dev/null
if [ $? -eq 0 ];then
echo "$1 is `systemctl status $1|sed -n 3p|awk '{print $2,$3}'`"
else
echo "$1 服務不存在或未正常運行"
fi
else
echo "請按如下格式執行命令:bash $0 服務名稱"
fi
#!/bin/bash
if [ $# -ge 1 ];then
for i in $@
do
systemctl status $i &> /dev/null
if [ $? -eq 0 ];then
echo "$i is `systemctl status $i|sed -n 3p|awk '{print $2,$3}'`"
else
echo "$i 服務不存在或狀態錯誤"
fi
done
else
echo "請按如下格式執行命令:bash $0 服務名稱"
fi
#!/bin/bash
read -p "Please input your record: " cj
if [ $cj -ge 0 ] && [ $cj -le 59 ];then
echo "補考"
elif [ $cj -ge 60 ] && [ $cj -le 70 ];then
echo "一般"
elif [ $cj -ge 71 ] && [ $cj -le 85 ];then
echo "良好"
elif [ $cj -ge 86 ] && [ $cj -le 100 ];then
echo "優秀"
else
echo "Please input a valid record(0-100)"
fi
#!/bin/bash
case $1 in
1)
echo "god bless me"
;;
2)
echo "cat is cute"
;;
*)
echo "bye"
;;
esac
#!/bin/bash
set -xv
read -p "Please input your number: " NU
[ $NU = "1" ] && echo "You are the best" || ([ $NU = "2" ] && echo "Oh my god!")
zabbix
[zabbix-server]服務端:監控端,就是監控者
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
#上述操作還會在/etc/yum.repos.d/下面生成一個新的倉庫檔案zabbix.repo
#但這個檔案還是指向zabbix官網,往往因為網路問題還是會導致下面的安裝錯誤
#所以,可以修改一下:
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum clean all
yum makecache
yum install deltarpm vim wget -y
yum install -y zabbix-server-mysql zabbix-web-mysql mariadb-server
systemctl enable mariadb --now
mysql_secure_installation
mysql -uroot -proot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'root';
mysql> quit;
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -proot zabbix
mysql -uzabbix -proot -D zabbix -se "show tables;"
sed -i.ori '116a DBPassword=root' /etc/zabbix/zabbix_server.conf
sed -i.ori '18a php_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf
systemctl disable firewalld --now
setenforce 0;sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
systemctl enable zabbix-server --now
systemctl enable httpd --now
#解決web中文亂碼:
yum -y install wqy-microhei-fonts
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
#瀏覽器打開:http://server的ip/zabbix
#賬戶:Admin/zabbix
[zabbix-agent]客戶端:被監控端,就是被監控者,或者叫代理端
#若agent和server同主機,下面步驟就不用重復操作了:
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum clean all
yum makecache
yum install deltarpm vim wget -y
#下面這一步是安裝agent包,是必備操作,無論agent和server是否同主機:
yum install -y zabbix-agent
#下面這5步是在agent的組態檔上配置服務端的IP,若agent和server同主機,可做可不做:
#請根據自己的實際情況,修改“zabbix服務端的IP”:
sed -i.ori 's#Server=127.0.0.1#Server=zabbix服務端的IP#' /etc/zabbix/zabbix_agentd.conf
sed -i.ori 's#ServerActive=127.0.0.1#ServerActive=zabbix服務端的IP#' /etc/zabbix/zabbix_agentd.conf
sed -i '/^Hostname=/cHostname=zabbix-agent1' /etc/zabbix/zabbix_agentd.conf
systemctl disable firewalld --now
setenforce 0;sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
#這一步是要做的:
systemctl enable zabbix-agent --now
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/231694.html
標籤:Linux
下一篇:安裝nginx并安全地配置和啟動
