Linux機器常見問題處理
1、 查詢linux機器的版本信息:
1. cat /etc/redhat-release(查看linux版本當前操作系統發行版信息)
2. getconf LONG_BIT (查看linux系統是多少位的)
2、 查看CPU信息(型號):
1. cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq –c
3、 查看資源利用:
1. top(輸入1 可展開cpu核數)
2. cat /proc/meminfo
3. free –g
4. df -h
5. echo 1 > /proc/sys/vm/drop_caches(如果讓操作系統重新分配內存將1改爲0即可)
4、 查看機器型號:
1. dmidecode | grep "Product Name"
5、 查看本機ip以及網卡信息:
1. dmesg | grep -i eth
2. ifconfig
3. watch cat /proc/net/dev(哪個流量大,就是當前使用的網卡)
6、 linux用戶操作:
1> 創建用戶:
- (useradd test password test)
- useradd test -p test
- groupadd gro1 --新建用戶組
- gpasswd -a test gro1 --將test用戶添加到gro1用戶組中
- gpasswd -d test gro1 --將test用戶從gro1用戶組中移出
刪除用戶:
- userdel -r test; 對應文件也刪除
2> 修改用戶名密碼:
- passwd test
3> Su root和su – root切換用戶的區別:
- 第一種只是會切換到root用戶,但是shell環境變量用的還是原來用戶的,第二種切換後,shell環境變量也會切換到root的變量環境
切換用戶快捷方式補充:su - test切換到test用戶後,ctrl+D可以logout(快速推出當前用戶),退回到root
4> 普通用戶賦予root權限:
root用戶下,執行visudo: 對應位置填上以下配置
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
5> 查看用戶屬於哪個組:
groups test (groups查看當前用戶所屬的組)
chown -R user:group file 修改文件的屬主用戶(注意這裏-R是大寫,意思是遍歷文件夾下面所有子文件夾或文件,全部賦權給指定用戶和用戶組)
6> su和sudo的區別:
su表示切換用戶
sudo表示臨時使用root權限
7、 操作命令集:
1> 創建一個文件夾: mkdir test,補充:創建一個帶子文件夾的文件,可以用 mkdir -p A/B
2> 複製一個文件到另一個文件夾local下: cp test.txt /usr/local
3> 移動一個文件到另一個文件夾local下: mv test.txt /usr/local
4> 刪除一個文件test.txt:rm -f test.txt
5> 刪除一個文件夾test:rm -rf test(參數r的意思是向下遞歸,不管有多少級目錄,全部刪除)
6> 編輯文件:
vi test.txt(或者 vim test.txt):
1、vi命令下有三種模式,一種是編輯模式,一種是插入模式,一種是命令模式
2、輸入insert進入插入模式,然後可以對文本編輯,編輯完之後,按esc退出編輯模式,輸入:進入命令模式,wq保存文件退出,q!不保存強制退出
搜索關鍵字: /關鍵字 n 向下搜索 N 反向搜索 ?/關鍵字 向上搜索
3、刪除一行: dd
4、刪除多行: ndd
5、撤銷上一步:u
6、翻頁命令: ctrl+f前一頁、ctrl+b後一頁
7、查找關鍵字: 輸入/加自己的關鍵字
8、複製:ctrl+insert 粘貼:shift+insert
7> 查找文件:
1、在當前路徑下查找擴展名爲txt的文件: find ./ -type f -name “*.txt”
2、顯示當前路徑: pwd
3、查找文件安裝路徑如mysql: whereis mysql which、locate、whereis命令的區別,兩者都可以查詢系統中的可執行文件的路徑,而不同之處是,which只能查找加入path的可執行文件,whereis還可以搜索非path的可執行文件,以及man文件等。
which可以搜索一些系統命令,即在usr目錄下的一些命令,比如which cat; which
find等,如果安裝了mysql,還可以which mysql。 whereis也是來搜索命令的,但是同時會搜索出命令對應的幫助文檔
locate是純粹來搜索文件路徑的
(which和whereis命令結果)
(locate命令結果)
4、查找某個文件所在的位置: locate my.cnf
5、根據文件名關鍵字模糊查找文件所在位置: find / -name ‘tomcat’
8> 修改文件權限:
1、ll命令可以查看某個文件夾下所有文件的權限,權限參數解釋: 權限是3個一組,
【-】1【rwx】234【r-x】567【r–】890
1代表文件是目錄還是文件,234代表擁有者的權限,567代表同用戶組用戶權限,890代表其他用戶權限
2、chmod u+(-/=)rwx 1.txt 或者chmod 777 test.txt 給文件賦予rwx權限,參數解釋: u(文件擁有者)、g(group用戶組)、o(other其他用戶)、a(all)
3、修改文件的所有者: chown mdmp:mdmp B*,參數解釋:mdmp是所有者,後一個mdmp是所屬於的組,B*是以B開頭的所有文件
9> 解壓文件:
1、zip格式解壓 unzip test.zip
2、tar.gz文件解壓tar –zxvf test.tar.gz 10> 日誌文件處理:
1、日誌文件過濾查詢: cat test.log|grep xx 、more test.log|grep xx
2、大日誌文件的處理:先用cat grep結合過濾,然後講過濾的文件保存起來,再通過vi來查看日誌步驟: cat big.log|grep xx > 1.log vi 1.log(使用/搜索)
3、修改linux機器時間: date –s ’16:29:30 2019/05/09’。進程虛擬機重啓後系統時間就不準了,需要修改時間來查日誌
4、less text.log,使用/來搜索字符串。less和more的區別:more查看日誌不能後退,less加上了這個功能,Linux流傳這樣一句話"less
is more",可以根據兩個命令的特點來選擇使用哪個。
5、清屏:ctrl+l
8、進程處理操作:
1> jps 或者 ps –ef|grep java 查看已經啓動的java進程
2> kill -9 pid(進程號) 注意:ps –ef|grep XX 查出來的進程信息中,第一個id是進程的 id,第二個id是進程的父id, 不要殺錯
3> 查看佔用端口進程號
netstat -nap | grep 9836
或
lsof -i:佔用端口
4> 查詢某個進程開啓的端口是多少?
ps -ef|grep 進程名 這一步查到PID(進程號)
netstat -nap|grep PID 查詢到端口信息
9、防火牆操作:
1> centOs7以前,系統使用的防火牆是iptables,開啓關閉防火牆命令:
service iptables stop/status/start
2> centOs7使用的防火牆是firewalld,systemctl start/status/stop firewalld
3> firewalld開放某個端口:
firewall-cmd --zone=public --add-port=8180/tcp –permanent
firewall-cmd –reload firewall-cmd --list-ports systemctl restart
firewalld.service
4> iptables防火牆端口開放:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT /etc/init.d/iptables
save
5> firewalld防火牆出現了異常,無法關閉(有報不知名的錯誤):
1、一種解決辦法: 升級firewalld,yum update firewalld 升級完之後,防火牆自動就關閉了
2、第二種解決辦法,直接殺掉firewalld的進程
10、遠程連接問題:
1> 遠程連接工具xshell或secureCRT無法連接:
1、檢查是不是sshd服務的問題:service status/start/stop sshd(操作)
11、項目部署:
1> jar包啓動:
1、java -jar xx.jar 啓動,日誌會顯示在當前窗口
2、nohup java -jar xx.jar & 加了&,默認jar會在後臺啓動,可以ctrl+c終止, 進行其他操作
3、清理操作日誌: echo “”>XX.log
4、殺掉多個已知進程名的進程腳本:
#!/bin/sh
string=“data-registry,data-publish-biz,data-gateway,mdmp-1.3-nbg”(這裏是變量,可以輸入多個進程名)
array=(${string//,/ })
for var in ${array[@]}
do
ps -ef |grep $var|grep -v grep| awk ‘{print $2}’|xargs kill -9
done
注:windows工具下編輯出來的sh腳本文件是windows格式的,在linux機器上要轉換爲unix格式(文本工具都可以轉換),要不執行腳本會不識別其中的換行等字符
12、創建證書連接
說明:兩臺機器通過證書建立信任關係,祕鑰的生成跟機器沒有任何關係,只要有公鑰和私鑰就可以連接 1)使用ssh-keygen命令生成公私鑰
可以看到/root/.ssh目錄下已經生成了對應的公私鑰對
2)將公鑰信息寫入到私鑰登錄時的校驗文件(機器上沒有這個文件authorized_keys,需要手動創建,然後將公鑰信息寫入其中)
3)將私鑰信息分發到需要使用私鑰登錄的用戶手中
13、手機SSH連接linux服務器:
下載juiceSSH app(應用市場都有),然後新建連接即可(免費好用,界面清爽,UI漂亮,一個檸檬) IOS的可以下載Termius
14、常見的linux系統以及區別
1> linux發行廠商:redhat、ubuntu、debian、suse、redflag(中科院研發)
2> 常見linux系統區別:centos、redhat的區別
1、首先,兩者的聯繫:redhat提供linux的開源,centos是在其基礎上的一個克隆版本,redhat的兩系列linux產品:一類是免費的Fedora
Core,主要用戶桌面版本,另一類是收費的Enterprise系列,包括AS/ES/WS分支,Red Hat Enterprise
Linux:redhat的企業版本,簡寫:RHEL
2、centOs與redhat區別
15、ping www.baidu.com時候ping不通,不能識別host這個問題說明缺少DNS服務器配置。
在 etc/resolv.conf 文件中,添加:nameserver 114.114.114.114 即可
注:resolv.conf文件是各種操作系統域名系統解析器(DNS Resolver)的配置文件。每當一個程序需要通過域名來訪問Internet上面的其它機器時,需要利用Resolver庫函數將域名轉換成對應的IP,然後纔可以進行訪問。
16、linux上各個文件夾的作用
/bin 一般存放linux系統的常用命令 比如: ls、cat、mkdir等 /sbin 一般存放系統級別的管理命令和程序 比如:ifconfig等
/usr 一般存放系統應用程序
/opt 額外安裝的應用程序可以存放在這裏 比如: tomcat等
/dev 存放外接設備文件(磁盤等)
/etc 存放系統管理和配置文件
/proc 系統內存的映射,可以直接訪問這個目錄來獲取系統的信息
/var 存放運行時需要改變數據的文件,也是某些大文件的溢出區,比如各種服務的日誌文件
/tmp 存放各種裏臨時文件