常用命令
/
|---- bin 存放用戶二進(jìn)制文件
|---- boot 存放內(nèi)核引導(dǎo)配置文件
|---- dev 存放設(shè)備文件
|---- etc 存放系統(tǒng)配置文件
|---- home 用戶主目錄
|---- lib 動(dòng)態(tài)共享庫(kù)
|---- lost+found 文件系統(tǒng)恢復(fù)時(shí)的恢復(fù)文件
|---- media 可卸載存儲(chǔ)介質(zhì)掛載點(diǎn)
|---- mnt 文件系統(tǒng)臨時(shí)掛載點(diǎn)
|---- opt 附加的應(yīng)用程序包
|---- proc 系統(tǒng)內(nèi)存的映射目錄肠牲,提供內(nèi)核與進(jìn)程信息
|---- root root用戶主目錄
|---- sbin 存放系統(tǒng)二進(jìn)制文件
|---- srv 存放服務(wù)相關(guān)數(shù)據(jù)
|---- sys sys虛擬文件系統(tǒng)掛載點(diǎn)
|---- tmp 存放臨時(shí)文件
|---- usr 存放用戶應(yīng)用程序
|---- var 存放郵件,系統(tǒng)日志等變化文件
mv 123.txt 321.txt? 重命名文件
cp:復(fù)制文件
rm:刪除
ln -s source.txt target_link.txt? 創(chuàng)建鏈接文件(軟鏈接)
ln source.txt target_link_2.py? 創(chuàng)建鏈接文件(硬鏈接)
find ./ -name xxx.txt? 查找當(dāng)前目錄下匹配的文件名
? ? ? ? ? -size 2M 查找當(dāng)前目錄下匹配大小的文件
find ./ -name "NEA???" -type d -print
find ./ -name '*test*' -exec dirname {} \; | uniq
find ./ -type f -mtime +10 | xargs \rm
find ./ -mtime +30 -name "*.txt" -exec rm -rf {} \;
find ./ -type f -name "*txt" -delete
whereis 參數(shù) 服務(wù)名:搜索二進(jìn)制文件-b,man說明文件-m笋粟,源碼文件-s
locate /etv/sh:搜索etc下所有sh開頭的文件
which ls:查找ls命令的可執(zhí)行文件
whatis ls:查看ls的介紹及使用簡(jiǎn)要
cut -d '/' -f 2 字符串切割几迄,以‘/’為分隔符她奥,取第二個(gè)字段
wc -c(字節(jié)數(shù)) -l(行數(shù)) -w(字?jǐn)?shù))? 內(nèi)容統(tǒng)計(jì)命令
grep -iv:忽略大小寫泌辫,不含該串
awk -F , '{print $1,$2}' log.txt:以叉跛,分隔log.txt的內(nèi)容,取1跋理,2項(xiàng)
sed -i ':a;N;$!ba;s/\n//g' filename? /替換文件中所有換行
tar -cvf test.tar *.py 打包
tar -xvf test.tar? 解包
gzip -r test.tar test.tar.gz? 壓縮(gzip test.tar)
gzip -d test.tar.gz
tar -jcvf xxx.tar.bz2? 打壓縮包
tar -jxvf xxx.tar.bz2 -C ./test…? 解壓縮包
xz -z 要壓縮的文件 (tar.xz文件)
xz -d 要解壓的文件
zip myzip *.*? 打rar包
unzip -d test myzip.zip? 解rar包
sudo -s
du -a:目錄或文件占磁盤大小
df -hl:看磁盤占用空間
repquota:顯示出一個(gè)文件系統(tǒng)的配額信息
ntpdate -u xxx.xxx.xxx.xxx
jobs -l:查看運(yùn)行的后臺(tái)進(jìn)程;fg %jobnumber:將后臺(tái)命令調(diào)至前臺(tái)繼續(xù)運(yùn)行;bg jobnumber:將后臺(tái)暫停的命令變成后臺(tái)繼續(xù)運(yùn)行;ctrl+z:將前臺(tái)正在執(zhí)行的命令放到后臺(tái)择克,并處于暫停狀態(tài);
ps -elf:查看正在運(yùn)行的進(jìn)程;D不可中斷睡眠,R正在運(yùn)行或可運(yùn)行前普,S可中斷睡眠肚邢,T已停止的進(jìn)程收到sigstop,sigstp,sigtin,sigtou信號(hào)后停止運(yùn)行,X死進(jìn)程拭卿,Z僵尸進(jìn)程
chage -l 用戶組 查看下情況;chage -M 99999 www,對(duì)www用戶組密碼期限做了修改骡湖,其中99999代表永久
showkey -a:查看按鍵對(duì)應(yīng)的字符序列
compgen -c:可以打印出所有支持的命令列表
disown -r:可以將所有正在運(yùn)行的進(jìn)程移除
hash:打印出你所使用過的命令以及執(zhí)行的次數(shù)
useradd dreamlee -m /home/dreamlee?添加用戶
passwd laowang 給用戶設(shè)置密碼
cat /etc/passwd 查看系統(tǒng)當(dāng)前用戶名
userdel -r laowang 刪除用戶
cat /etc/group 查看有哪些用戶組
groupmod 加兩次tab鍵
groupadd -g 7100 hadoopgroup
useradd -u 7100 -g hadoopgroup hadoopuser
groupdel www
groups laowang 查看用戶所屬的用戶組有哪些
usermod -g AAA laowang 修改用戶所在組(默認(rèn)組)
usermod -a -G BBB laowang 增加用戶的用戶組
chmod 修改文件權(quán)限
chmod u(goa)+(-=)w(rx) 1.py
chmod 421 1.py
chown 修改文件所有者
chown bingbing 1.py
chgrp 修改文件所屬組
添加用戶到wheel用戶組:useradd opsuser -G wheel;vim /etc/pam.d/su
sudo命令操作: root用戶執(zhí)行visudo,添加opsuser? ALL=(root)? NOPASSWD:/bin/su? ? 執(zhí)行sudo su登錄root用戶
查看Linux內(nèi)核版本命令:cat /proc/version;uname -a
查看Linux系統(tǒng)版本的命令:lsb_release -a峻厚;cat /etc/redhat-release勺鸦;cat /etc/issue
輸入“nmcli con show”命令查看網(wǎng)卡uuid即可
alias la='ls -a':對(duì)命令取別名
env:查看環(huán)境變量;shell中表示在一個(gè)修改后的環(huán)境里執(zhí)行命令
nohup:不掛斷地運(yùn)行命令;一般用法nohup [command] &;
eval:會(huì)對(duì)后面的cmdline進(jìn)行兩遍掃描,如果第一遍掃描后目木,cmdline是個(gè)普通命令换途,則執(zhí)行此命令,如果cmdline中含有變量的間接引用刽射,則保證間接引用的語義军拟。
let c=a+b:進(jìn)行整型數(shù)的數(shù)學(xué)運(yùn)算
修改時(shí)區(qū)timedatectl
timedatectl list-timezones# 列出所有時(shí)區(qū)
timedatectl set-local-rtc 1# 將硬件時(shí)鐘調(diào)整為與本地時(shí)鐘一致, 0 為設(shè)置為 UTC 時(shí)間
timedatectl set-timezone Asia/Shanghai# 設(shè)置系統(tǒng)時(shí)區(qū)為上海
或者:cp?/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
同步NTP時(shí)間:ntpdate -u ntp.sjtu.edu.cn
磁盤掛載
查看未分區(qū)磁盤:fdisk -l
劃分分區(qū)并格式化:fdisk /dev/vdb
格式化:mkfs.ext4 /dev/vdb1
掛載磁盤:mount /dev/vdb1 /home? ?#取消掛載 umount /home
開機(jī)自動(dòng)掛載:編輯/etc/fstab文件,添加:/dev/vdb1 /home ext4 defaults 0? 0??#0 0 表示開機(jī)不檢查磁盤誓禁。
#查看磁盤uuid =====>>> ls -l /dev/disk/by-uuid/
##虛擬機(jī)新增加硬盤懈息,不用重啟讀到新加的硬盤
# cd?/sys/class/scsi_host/
# echo?"-?-?-"?>?host0/scan
# fdisk?-l
centos7擴(kuò)容根目錄(/dev/mapper/centos-root)
partprobe /dev/vdb 或者?partx -u /dev/vdb1 #任一命令通知內(nèi)核更新分區(qū)表
e2fsck -f /dev/sdb1 # 檢查文件系統(tǒng)
resize2fs /dev/sdb1 # 變更文件系統(tǒng)大小
mount -t cifs -o username=DELL,password=gsglpt //192.168.18.158/ManagementPlatform /mnt/share? --Linux訪問Windows共享目錄
shell判斷
-e filename 如果 filename存在,則為真
-d filename 如果 filename為目錄摹恰,則為真
-f filename 如果 filename為常規(guī)文件辫继,則為真
-L filename 如果 filename為符號(hào)鏈接,則為真
-r filename 如果 filename可讀俗慈,則為真
-w filename 如果 filename可寫姑宽,則為真
-x filename 如果 filename可執(zhí)行,則為真
-s filename 如果文件長(zhǎng)度不為0闺阱,則為真
-h filename 如果文件是軟鏈接炮车,則為真
= 等于 應(yīng)用于:整型或字符串比較 如果在[] 中,只能是字符串
!=不等于 應(yīng)用于:整型或字符串比較 如果在[] 中酣溃,只能是字符串
< 小于 應(yīng)用于:整型比較 在[] 中瘦穆,不能使用 表示字符串
> 大于 應(yīng)用于:整型比較 在[] 中,不能使用 表示字符串
-eq 等于 應(yīng)用于:整型比較
-ne 不等于 應(yīng)用于:整型比較
-lt 小于 應(yīng)用于:整型比較
-gt 大于 應(yīng)用于:整型比較
-le 小于或等于 應(yīng)用于:整型比較
-ge 大于或等于 應(yīng)用于:整型比較
-a? 雙方都成立(and) 邏輯表達(dá)式 –a 邏輯表達(dá)式
-o? 單方成立(or) 邏輯表達(dá)式 –o 邏輯表達(dá)式
-z? 空字符串
-n? 非空字符串
for循環(huán)使用參數(shù):$0(這個(gè)程式的執(zhí)行名字)赊豌;$n(這個(gè)程式的第n個(gè)參數(shù))扛或;$*(這個(gè)程式的所有參數(shù),可超過9個(gè))碘饼;$#(這個(gè)程式 參數(shù)個(gè)數(shù))熙兔;$$(這個(gè)程式的PID)悲伶;$!(執(zhí)行上一個(gè)景指令的PID);$?(執(zhí)行上一個(gè)命令的返回值)黔姜;$-(顯示shell使用的當(dāng)前選項(xiàng))拢切;$@(跟$*類似蒂萎,但可以當(dāng)作數(shù)組用)
使用linux命令dos2unix?filename秆吵,直接把文件轉(zhuǎn)換為unix格式
日志
# 日志顏色
COLOR_G="\x1b[0;32m"
COLOR_Y="\x1b[0;33m"
COLOR_R="\x1b[0;31m"
RESET="\x1b[0m"
DATE=`date +%F`
TIME=`date "+%Y-%m-%d %H:%M:%S"`
function info(){
? echo -e "${COLOR_G}[$TIME] [Info] ${1}${RESET}"
}
function warn()
{
? echo -e "${COLOR_Y}[$TIME] [Info] ${1}${RESET}"
}
fuser
echo "你被管理員踢出了" > /dev/pts/1 && fuser -k /dev/pts/1
配置ssh免密登錄
#ssh-keygen -t rsa:生成ssh免密登錄密鑰
ssh-keygen -f ~/.ssh/id_rsa -P "" > /dev/null 2>&1
#ssh-copy-id [nodeIP]:將公鑰復(fù)制到免密登錄的目標(biāo)機(jī)器上 ~/.ssh/authorized_keys
sshpass -p$SSH_Pass ssh-copy-id -i $Key_Path "-o StrictHostKeyChecking=no" $IP
截取字符串
注:匹配的內(nèi)容為去掉的
獲取字符串長(zhǎng)度:${#str}
最小限度從前面截去:${str#*/}
最大限度從前面截去:${str##*/}
最小限度從后面截去:${str%/*}
最大限度從后面截去:${str%%/*}
0表示左邊第一個(gè)字符開始,7表示子字符總個(gè)數(shù):${str:0:7}
echo "xxx=xxx=xxxxx=xxxx" | awk -F '='? '{s="";for(i=2;i<=NF;i++)s=s""(i==NF?$i:$i"=");print s}'
開放/關(guān)閉端口號(hào)
文件:/etc/init.d/iptables;/etc/sysconfig/iptables
查看哪些端口號(hào)被打開:netstat -anp
打開23端口:nc -lp 23
端口訪問量:netstat -nao|awk '{print $4}'|grep :8089|wc -l
查看帶寬占用情況:iftop -i eth0 -P
--?查找所有規(guī)則:iptables?-L?INPUT?--line-numbers
--?刪除一條規(guī)則:iptables?-D?INPUT?11
iptables -I DOCKER -ptcp --dport 3306 -j DROP;
關(guān)閉:
iptables -A INPUT -ptcp --dport [端口號(hào)] -j DROP;
iptables -A OUTPUT -ptcp --dport [端口號(hào)] -j DROP;
開啟:
iptables -A INPUT -ptcp --dport [端口號(hào)] -j ACCEPT;
iptables -A OUTPUT -ptcp --sport [端口號(hào)] -j ACCEPT;
保存設(shè)置:service iptables save
重啟防火墻:service iptables restart
關(guān)閉防火墻開機(jī)啟動(dòng):chkconfig iptables off
添加80端口的訪問權(quán)限五慈,這里添加后永久生效
? ? ? ? #firewall-cmd --zone=public --add-port=80/tcp --permanent
? ? ? ? #firewall-cmd --reload
查看80端口訪問權(quán)限情況
? ? ? #firewall-cmd --zone=public --query-port=80/tcp
關(guān)閉80訪問權(quán)限
? ? ? #firewall-cmd --zone=public --remove-port=80/tcp --permanent
將指定IP主機(jī)加入(刪除)trusted域
? ? #firewall-cmd --permanent --zone=trusted --add-source=192.168.31.127
? ? #firewall-cmd --permanent --zone=trusted --remove-source=192.168.31.127
拒絕主機(jī)的所有網(wǎng)絡(luò)連接(有回應(yīng)/無回應(yīng))
? ? #firewall-cmd --permanent --zone=block --add-source=192.168.31.127
? ? #firewall-cmd --permanent --zone=drop --add-source=192.168.31.127
配置路由:
route -n
route add -net 192.168.19.0 netmask 255.255.255.0 gw 192.168.18.1
route del -net 192.168.19.0 netmask 255.255.255.0 gw 192.168.18.1
配置靜態(tài)路由static-routes
any net 192.168.3.0/24 gw 192.168.3.254
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129?
rpmbuild制作RPM包
1.安裝rpmbuild:
yum install rpmbuild
yum install rpmdevtools
rpmdev-setuptree
查看是否安裝完成:rpmbuild --showrc|grep topdir
配置文件位置:/usr/lib/rpm/macros? %_topdir
2.rpmbuild目錄
BUILD:編譯rpm包的臨時(shí)目錄
BUILDROOT:編譯后生成的軟件臨時(shí)安裝目錄
RPMS:最終生成的可安裝rpm包的所在目錄
SOURCES:所有源代碼和補(bǔ)丁文件的存放目錄
SPECS:存放spec文件的目錄(重要)
SRPMS:軟件最終的rpm源碼格式存放路徑
3.寫spec文件
生成spec文件模板:rpmdev-newspec -o Name-version.spec
%prep:將%_sourcedir目錄下的源碼解壓到%_builddir目錄下纳寂。如果有補(bǔ)丁,需要在這個(gè)階段進(jìn)行打補(bǔ)丁操作
%build:在%_builddir目錄下執(zhí)行源碼包的編譯泻拦。一般是執(zhí)行./confiure和make指令
%install:將需要打包到rpm軟件包里的文件從%_builddir下拷貝到%_buildrootdir目錄下毙芜。當(dāng)用戶最終用rpm -ivh name-version.rpm安裝軟件包時(shí),這些文件會(huì)安裝到用戶系統(tǒng)中相應(yīng)的目錄里
制作rpm包:這個(gè)階段是自動(dòng)完成的争拐,所以在SPEC文件里面是看不到的腋粥,這個(gè)階段會(huì)將%_buildroot目錄的相關(guān)文件制作成rpm軟件包最終放到%_rpmdir目錄里
%clean:編譯后的清理工作,這里可以執(zhí)行make clean以及清空%_buildroot目錄等
4.打包
rpmbuild
-ba 既生成src.rpm又生成二進(jìn)制rpm
-bs 只生成src的rpm
-bb 只生成二進(jìn)制的rpm
-bp 執(zhí)行到pre
-bc 執(zhí)行到build段
-bi 執(zhí)行install段
-bl 檢測(cè)有文件沒包含
關(guān)于IP地址
開啟/關(guān)閉網(wǎng)卡:ifup ens33/ifdowm ens33
注意:在橋接模式下
cd? /etc/sysconfig/network-scripts/
其中“ifcfg-ens33”的文件架曹,為我們需要修改的網(wǎng)絡(luò)配置文件
BOOTPROTO=static
修改ONBOOT=“yes” 意思是將網(wǎng)卡設(shè)置 為開機(jī)啟用
IPADDR=192.168.0.230 #靜態(tài)IP
GATEWAY=192.168.0.1 #默認(rèn)網(wǎng)關(guān)隘冲,在cmd中輸入ipconfig/all,再查找;虛擬機(jī)是192.168.0.2
NETMASK=255.255.255.0 #子網(wǎng)掩碼
vim /etc/resolv.conf的配置自動(dòng)配置為如下圖示:
$:hostnamectl set-hostname master
/etc/hosts文件內(nèi)配置:192.168.200.128 master
這兩步使得hostname -i返回結(jié)果為192.168.200.128
若出現(xiàn)ping不通域名的情況绑雄,則直接在/ect/syconfig/network-scripts/ifcfg-ens33里面添加:
DNS1=8.8.8.8
DNS2=114.114.114.114
centOS查看網(wǎng)卡UUID:nmcli con show
CPU負(fù)載過高的問題
1.定位進(jìn)程:top -c 顯示進(jìn)程列表展辞,輸入P,按cpu使用率排序
2.定位線程:top -Hp [進(jìn)程PID]万牺,輸入P罗珍,找到哪個(gè)線程耗費(fèi)cpu最高
3.定位代碼:把線程pid轉(zhuǎn)換成16進(jìn)制,printf "%x\n" [線程PID]; jstack [進(jìn)程PID] | grep '[16進(jìn)制線程PID]' -C5 --color
4.查看網(wǎng)卡訪問 iftop -i eth0
查看占用內(nèi)存最高的進(jìn)程:ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head -n 10
linux下獲取占用CPU資源最多的10個(gè)進(jìn)程:ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
查看linux機(jī)器版本
查看內(nèi)核版本:cat /proc/version;uname -a;uname -r
查看系統(tǒng)版本信息:cat /etc/issue;cat /etc/lsb-release;lsb_release -a;cat /etc/redhat-release
vi vim
替換第n行開始到最后一行的每一個(gè)str為newstr -> :n,$s/str/newstr/g
sed命令
進(jìn)行文本替換工作脚粟。
常用符號(hào)
^:行首定位符
$:行尾定位符
.:匹配除換行外的單個(gè)字符
*:匹配0個(gè)或多個(gè)前導(dǎo)字符
[]:匹配制定字符組內(nèi)任一字符
[^]:匹配不在制定字符組內(nèi)任一字符
..:保存已匹配的字符
&:保存查找串以便在替換串中引用
<:詞首定位符
>:詞尾定位符
x{m}:連續(xù)m個(gè)x
x{m,}:至少m個(gè)x
x{m,n}:大于等于m個(gè)覆旱,小于n個(gè)x
常用選項(xiàng)
-n:使用安靜模式。在一般sed的用法中核无,所有來自stdin的資料一般都會(huì)被列出到屏幕通殃,但如果加上-n參數(shù)后,則只有經(jīng)過sed特殊處理的一行(或者command)才會(huì)被列出來厕宗。
-e:允許多點(diǎn)編輯
-f:直接將sed的動(dòng)作寫在一個(gè)檔案內(nèi)画舌,-f filename則可以執(zhí)行filename內(nèi)的sed動(dòng)作
-r:sed的動(dòng)作支援的是延伸型正規(guī)表示法的語法。(預(yù)設(shè)是基礎(chǔ)正規(guī)表示法語法)
-i:直接修改讀取的檔案內(nèi)容已慢,而不是由屏幕輸出曲聂。
動(dòng)作說明
a :新增, a 的后面可以接字串佑惠,而這些字串會(huì)在新的一行出現(xiàn)(目前的下一行)~
c :取代朋腋, c 的后面可以接字串齐疙,這些字串可以取代 n1,n2 之間的行!
d :刪除旭咽,因?yàn)槭莿h除啊贞奋,所以 d 后面通常不接任何東東;
i :插入穷绵, i 的后面可以接字串轿塔,而這些字串會(huì)在新的一行出現(xiàn)(目前的上一行);
p :打印仲墨,亦即將某個(gè)選擇的數(shù)據(jù)印出勾缭。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)行~
s :取代,可以直接進(jìn)行取代的工作哩目养!通常這個(gè) s 的動(dòng)作可以搭配正規(guī)表示法俩由!例如 1,20s/old/new/g 就是啦!
g:全局
示例
sed '2,5 s/old/new/' file ----分隔符有/#癌蚁!幻梯,行尋址2到5行
sed -r 's/[0-9][0-9]$/&.5/' datafile ----&代表在查找串中匹配到的內(nèi)容
sed -n '/root/,/nologin/ s/old/new/p' /etc/passwd ----找到root行或nologin行
awk命令
ELK
elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
action.auto_create_index: true
#action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
http.cors.enabled: true
http.cors.allow-origin: "*"
kibana.yml
server.host: "0"
elasticsearch.hosts: [ "http://elastic_es:9200" ]
elasticsearch.username: "elastic"
elasticsearch.password: "elastic@PROD"
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://localhost:9200" ]
#xpack.monitoring.enabled: true
#xpack.monitoring.elasticsearch.username: "elastic"
#xpack.monitoring.elasticsearch.password: "elastic@PROD"
path.config: /opt/cloud/elastic/logstash-7.13.4/config/conf.d/
path.logs: /var/log/logstash
prod-mp-backend-log.conf
input {
? file {
? ? type => "mp-log"
? ? path => "/usr/local/pm_jeecg2.2/catalina.out"
? ? start_position => "beginning"
? ? stat_interval => "5"
? }
codec => multiline {
? ? ? ? ? ? pattern => "^\d+"
? ? ? ? ? ? negate => "true"
? ? ? ? ? ? what => "previous"
? ? ? ? ? ? charset => "UTF-8"
? ? ? ? ? ? auto_flush_interval => 3
? ? ? ? }
}
output {
? if [type] == "mp-log" {
? ? elasticsearch {
? ? ? hosts => ["http://localhost:9200"]
? ? ? index => "prod-mp-backend-log-%{+YYYY.MM.dd}"
? ? ? user => "elastic"
? ? ? password => "elastic@PROD"
? ? }
? }
}