linux系統基礎優化及經常使用命令

Linux系統基礎優化及經常使用命令

 

Linux基礎系統優化

引言沒有,只送給你一句話:誰都給不了你你想要的生活,除了你本身!html

Linux的網絡功能至關強悍,一時之間咱們沒法瞭解全部的網絡命令,在配置服務器基礎環境時,先了解下網絡參數設定命令。前端

  • ifconfig  查詢、設置網卡和ip等參數
  • ifup,ifdown    腳本命令,更簡單的方式啓動關閉網絡
  • ip  符合指令,直接修改上述功能
在咱們剛裝好linux的時候,須要用xshell進行遠程鏈接,那就得獲取ip地址,有時候網卡默認是沒啓動的,Linux也就拿不到ip地址,所以咱們得手動啓動網卡
#編輯網卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0 
#修改配置參數
ONBOOT=yes

ifup,ifdown命令

複製代碼
啓動/關閉一塊網卡
ifup eth0
ifdown eth0

---
若是關閉網卡,xshell會怎樣?
複製代碼

ifconfig命令

ifconfig 查看網卡的ip地址

複製代碼
直接輸入ifconfig會列出已經啓動的網卡,也能夠輸入ifconfig eth0單獨顯示eth0的信息
各選項解釋是:
eth0    網卡的代號 
lo        迴環地址loopback
inet    IPv4的Ip地址
netmask    子網掩碼
broadcast    廣播地址
RX/TX     流量發/收狀況     tx是發送(transport),rx是接收(receive)
packets     數據包數
errors     數據包錯誤數
dropped    數據包有問題被丟棄的數量
collisions    數據包碰撞狀況,數值太多表明網絡情況差
複製代碼

ifup,ifdown命令

ifup和ifdown是直接鏈接到/etc/sysconfig/network-scripts目錄下搜索對應的網卡文件,例如ifcfg-eth0而後加以設置

ip命令

ip是一個命令,不是TCP/IP那個ip,這個ip命令是結合了ifconfig和route兩個命令的功能。
ip addr show #查看ip信息

瞭解瞭如何查看網卡信息,接下來查看系統信息。python

你的系統是什麼版本?mysql

 

複製代碼
#查看系統版本信息
cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
#查看內核版本號
uname -r
3.10.0-693.el7.x86_64
#查看系統多少位
uname -m
x86_64
#查看內核全部信息
uname -a
複製代碼

 

用戶管理

現代操做系統通常屬於多用戶的操做系統,也就是說,同一臺機器能夠爲多個用戶創建帳戶,通常這些用戶都是爲普通用戶,這些普通用戶能同時登陸這臺計算機,計算機對這些用戶分配必定的資源。
普通用戶在所分配到的資源內進行各自的操做,相互之間不受影響。可是這些普通用戶的權限是有限制的,且用戶太多的話,管理就不便,從而引入root用戶。
此用戶是惟一的,且擁有系統的全部權限。root用戶所在的組稱爲root組。「組」是具備類似權限的多個用戶的集合。

 

你們都知道windows下有管理員用戶linux

這樣sql

或者這樣shell

Linux/unix是一個多用戶、多任務的操做系統。數據庫

root:默認在Unix/linux操做系統中擁有最高的管理權限。能夠理解爲qq羣的羣主⬇️⬇️⬇️vim

 

普通用戶:是管理員或者具有管理權限的用戶所建立的,只能讀、看,不能增、刪、改。windows

權限越大,責任越大

#添加用戶
useradd oldboy 
#設置密碼       
passwd redhat

切換用戶

複製代碼
#先看下當前用戶(我是誰)
whoami
#切換用戶
su - oldboy
#退出用戶登陸
logout
ctrl + d
複製代碼
  • 通常狀況下,在生產環境避免直接用root用戶,除非有特殊系統維護需求,使用完馬上退回普通用戶
  • 非交互式設置密碼(echo "redhat"|passwd --stdin oldboy && history -c)
Tip:
1.超級用戶root切換普通用戶無需密碼,例如「羣主」想踢誰就踢誰
2.普通用戶切換root,須要輸入密碼
3.普通用戶權限較小,只能基本查看信息
4.$符號是普通用戶命令提示符,#是超級管理員的提示符
root是當前用戶,oldboyedu是主機名,~表明當前路徑,也是家目錄

PS1變量

Linux命令提示符由PS1環境變量控制

複製代碼
[root@oldboy_python ~]# echo $PS1
[\u@\h \W]\$

能夠自行調整全局變量/etc/profile文件用於永久生效 PS1='[\u@\h \W\t]\$'
\d  日期
\H  完整主機名
\h  主機名第一個名字
\t  時間24小時制HHMMSS
\T  時間12小時制
\A  時間24小時制HHMM
\u  當前用戶帳號名
\v  BASH的版本
\w  完整工做目錄
\W  利用basename取得工做目錄名
\#  下達的第幾個命令
\$  提示字符,root爲#,普通用戶爲$
PS1 > 變量名
$PS1 > 查看變量內容
PS1=新內容 從新賦值

變量賦值,查看
name='chaoge'
echo $name
複製代碼

tar解壓命令

tar 命令:用來壓縮和解壓文件。tar自己不具備壓縮功能。他是調用壓縮功能實現的

語法

複製代碼
tar(選項)(參數)
-A或--catenate:新增文件到以存在的備份文件;
-B:設置區塊大小;
-c或--create:創建新的備份文件;
-C <目錄>:這個選項用在解壓縮,若要在特定目錄解壓縮,可使用這個選項。
-d:記錄文件的差異;
-x或--extract或--get:從備份文件中還原文件;
-t或--list:列出備份文件的內容;
-z或--gzip或--ungzip:經過gzip指令處理備份文件;
-Z或--compress或--uncompress:經過compress指令處理備份文件; -f<備份文件>或--file=<備份文件>:指定備份文件; -v或--verbose:顯示指令執行過程; -r:添加文件到已經壓縮的文件; -u:添加改變了和現有的文件到已經存在的壓縮文件; -j:支持bzip2解壓文件; -v:顯示操做過程; -l:文件系統邊界設置; -k:保留原有文件不覆蓋; -m:保留文件不被覆蓋; -w:確認壓縮文件的正確性; -p或--same-permissions:用原來的文件權限還原文件; -P或--absolute-names:文件名使用絕對名稱,不移除文件名稱前的「/」號; -N <日期格式> 或 --newer=<日期時間>:只將較指定日期更新的文件保存到備份文件裏; --exclude=<範本樣式>:排除符合範本樣式的文件。
複製代碼

實例

tar -zxvf Python-3.7.0b3.tgz #解壓
tar -czvf oldboy.txt.tar.gz oldboy.txt #壓縮oldboy.txt
tar -cf all_pic.tar *.jpg #壓縮當前目錄全部jpg結尾的文件
tar -xjf xx.tar.bz2  #解壓縮bz2結尾的文件

netstat命令

netstat命令用來打印Linux中網絡系統的狀態信息,可以讓你得知整個Linux系統的網絡狀況。

 語法【選項】

複製代碼
netstat [選項]
-t或--tcp:顯示TCP傳輸協議的連線情況;
-u或--udp:顯示UDP傳輸協議的連線情況;
-n或--numeric:直接使用ip地址,而不經過域名服務器;
-l或--listening:顯示監控中的服務器的Socket;
-p或--programs:顯示正在使用Socket的程序識別碼和程序名稱;
-a或--all:顯示全部連線中的Socket;
複製代碼

實例

複製代碼
[root@oldboy_python ~ 10:21:59]#netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      814/sshd            
tcp6       0      0 :::111                  :::*                    LISTEN      2703/rpcbind        
tcp6       0      0 :::3306                 :::*                    LISTEN      29269/mysqld        
udp        0      0 0.0.0.0:758             0.0.0.0:*                           2703/rpcbind        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           2703/rpcbind        
udp        0      0 10.141.32.137:123       0.0.0.0:*                           484/ntpd            
udp        0      0 127.0.0.1:123           0.0.0.0:*                           484/ntpd            
udp        0      0 0.0.0.0:123             0.0.0.0:*                           484/ntpd            
udp6       0      0 :::758                  :::*                                2703/rpcbind        
udp6       0      0 :::111                  :::*                                2703/rpcbind        
udp6       0      0 :::123                  :::*                                484/ntpd
複製代碼

Kill命令

kill命令用來刪除執行中的程序或工做。kill可將指定的信息送至程序。

選項

-a:當處理當前進程時,不限制命令名和進程號的對應關係;
-l <信息編號>:若不加<信息編號>選項,則-l參數會列出所有的信息名稱;
-p:指定kill 命令只打印相關進程的進程號,而不發送任何信號;
-s <信息名稱或編號>:指定要送出的信息;
-u:指定用戶。

只有第9種信號(SIGKILL)才能夠無條件終止進程,其餘信號進程都有權利忽略,下面是經常使用的信號:

複製代碼
HUP     1    終端斷線
INT     2    中斷(同 Ctrl + C)
QUIT    3    退出(同 Ctrl + \)
TERM   15    終止
KILL    9    強制終止
CONT   18    繼續(與STOP相反, fg/bg命令)
STOP   19    暫停(同 Ctrl + Z)
複製代碼

實例

複製代碼
先用ps查找進程,而後用kill殺掉:
ps -ef | grep vim
root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log
root      3370  2822  0 16:21 pts/0    00:00:00 grep vim

kill 3268
複製代碼

SELinux功能

SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對於強制訪問控制的實現,這個功能管理員又愛又恨,大多數生產環境也是關閉的作法,安全手段使用其餘方法。

大多數ssh鏈接不上虛擬機,都是由於防火牆和selinux阻擋了

永久關閉方式:

複製代碼
1.修改配置文件,永久生效關閉selinux
cp /etc/selinux/config /etc/selinux/config.bak #修改前備份
2.修改方式能夠vim編輯,找到
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
3.用sed替換
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
4.檢查狀態
grep "SELINUX=disabled" /etc/selinux/config
#出現結果即表示修改爲功
複製代碼

臨時關閉selinux(命令行修改,重啓失效):

複製代碼
getenforce #獲取selinux狀態
#修改selinux狀態
setenforce 
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
數字0 表示permissive,給出警告,不會阻止,等同disabled
數字1表示enforcing,表示開啓
複製代碼

Tip:

修改selinux配置後,想要生效還得重啓系統,技巧就是(修改配置文件+命令行修改,達到當即生效)

生產環境的服務器是禁止隨意重啓的!!!!

iptables防火牆

在學習階段,關閉防火牆能夠更方便的學習,在企業環境中,通常只有配置外網ip的linux服務器纔會開啓防火牆,可是對於高併發流量的業務服務器仍然是不能開啓的,會有很大性能損失,所以須要更nb的硬件防火牆。

關閉防火牆具體操做以下:

複製代碼
centos7默認已經使用firewall做爲防火牆了
1.關閉防火牆
systemctl status firewalld #查看防火牆狀態
systemctl stop firewalld    #關閉防火牆
systemctl disable firewalld#關閉防火牆開機啓動
systemctl is-enabled firewalld.service#檢查防火牆是否啓動
 
複製代碼

Linux中文顯示設置(防止中文亂碼)

此項優化爲可選項,根據我的狀況選擇是否調整Linux系統的字符集,字符集就是一套文字符號以及編碼。

Linux下經常使用字符集有:

  • GBK  實際企業應用較少
  • UTF-8  普遍支持,MYSQL也使用UTF-8,企業普遍使用
複製代碼
#查看系統當前字符集
echo $LANG
#檢查xshell crt的字符集
#命令修改字符集
export LANG=en_US.utf8
1.修改配置文件/etc/locale.conf
LANG="zh_CN.UTF-8"
2.更改後查看系統語言變量
locale
複製代碼

亂碼核心解決辦法

1.系統字符集utf8
2.xshell字符集utf8
3.文件字符集一致zh_CN.UTF-8

 df命令

df命令用於顯示磁盤分區上的可以使用的磁盤空間。默認顯示單位爲KB。能夠利用該命令來獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息。

複製代碼
語法
df(選項)(參數)
-h或--human-readable:以可讀性較高的方式來顯示信息;
-k或--kilobytes:指定區塊大小爲1024字節;
-T或--print-type:顯示文件系統的類型;
--help:顯示幫助;
--version:顯示版本信息。
複製代碼

示例

查看系統磁盤設備,默認是KB爲單位:
df
使用-h選項以KB以上的單位來顯示,可讀性高:
df -h

tree命令

  tree參數

DNS

DNS(Domain Name System,域名系統),萬維網上做爲域名和IP地址相互映射的一個分佈式數據庫,可以使用戶更方便的訪問互聯網,而不用去記住可以被機器直接讀取的IP數串。
經過域名,最終獲得該域名對應的IP地址的過程叫作域名解析(或主機名解析)。

查看Linux的dns

配置文件
cat /etc/resolv.conf
#dns服務器地址 nameserver 119.29.29.29 nameserver 223.5.5.5

nslookup命令

nslookup命令是經常使用域名查詢工具,就是查DNS信息用的命令。

nslookup4有兩種工做模式,即「交互模式」和「非交互模式」。在「交互模式」下,用戶能夠向域名服務器查詢各種主機、域名的信息,或者輸出域名中的主機列表。而在「非交互模式」下,用戶能夠針對一個主機或域名僅僅獲取特定的名稱或所需信息。

進入交互模式,直接輸入nslookup命令,不加任何參數,則直接進入交互模式,此時nslookup會鏈接到默認的域名服務器(即/etc/resolv.conf的第一個dns地址)。或者輸入nslookup -nameserver/ip。進入非交互模式,就直接輸入nslookup 域名就能夠了。

#解析
nslookup www.oldboyedu.com

crontab命令

crontab命令被用來提交和管理用戶的須要週期性執行的任務,與windows下的計劃任務相似

語法

crontab (選項)(參數)
-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u<用戶名稱>:指定要設定計時器的用戶名稱。

crontab配置文件

複製代碼
在/etc目錄下有一個crontab文件,這個就是系統任務調度的配置文件
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
 分 時 日 月 周
複製代碼
複製代碼
minute: 表示分鐘,能夠是從0到59之間的任何整數。
hour:表示小時,能夠是從0到23之間的任何整數。
day:表示日期,能夠是從1到31之間的任何整數。
month:表示月份,能夠是從1到12之間的任何整數。
week:表示星期幾,能夠是從0到7之間的任何整數,這裏的0或7表明星期日。
command:要執行的命令,能夠是系統命令,也能夠是本身編寫的腳本文件。
在以上各個字段中,還可使用如下特殊字符:

星號(*):表明全部可能的值,例如month字段若是是星號,則表示在知足其它字段的制約條件後每個月都執行該命令操做。
逗號(,):能夠用逗號隔開的值指定一個列表範圍,例如,「1,2,5,7,8,9」
中槓(-):能夠用整數之間的中槓表示一個整數範圍,例如「2-6」表示「2,3,4,5,6」
正斜線(/):能夠用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩小時執行一次。同時正斜線能夠和星號一塊兒使用,例如*/10,若是用在minute字段,表示每十分鐘執行一次。
複製代碼

實例

複製代碼
#每1分鐘執行一次命令
* * * * * 命令
#每小時的3,15分組執行命令
3,15 * * * * 命令
#在上午8-11點的第3和第15分鐘執行
3,15 8-11 * * * 命令
#每晚21:30執行命令
30 21 * * * 命令
#沒周6、日的1:30執行命令
30 1 * * 6,0 命令
複製代碼

yum命令

yum命令是在Fedora和RedHat以及SUSE中基於rpm的軟件包管理器,它可使系統管理人員交互和自動化地更細與管理RPM軟件包,可以從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟體包,無須繁瑣地一次次下載、安裝。

windows下的軟件管理工具

yum提供了查找、安裝、刪除某一個、一組甚至所有軟件包的命令,並且命令簡潔而又好記。

複製代碼
yum(選項)(參數)
-h:顯示幫助信息;
-y:對全部的提問都回答「yes」; -c:指定配置文件; -q:安靜模式; -v:詳細模式; -d:設置調試等級(0-10); -e:設置錯誤等級(0-10); -R:設置yum處理一個命令的最大等待時間; -C:徹底從緩存中運行,而不去下載或者更新任何頭文件。
複製代碼

選項

複製代碼
install:安裝rpm軟件包;
update:更新rpm軟件包;
check-update:檢查是否有可用的更新rpm軟件包;
remove:刪除指定的rpm軟件包;
list:顯示軟件包的信息;
search:檢查軟件包的信息;
info:顯示指定的rpm軟件包的描述信息和概要信息;
clean:清理yum過時的緩存;
shell:進入yum的shell提示符;
resolvedep:顯示rpm軟件包的依賴關係;
localinstall:安裝本地的rpm軟件包;
localupdate:顯示本地rpm軟件包進行更新;
deplist:顯示rpm軟件包的全部依賴關係。
複製代碼

實例

複製代碼
部分經常使用的命令包括:

自動搜索最快鏡像插件:yum install yum-fastestmirror
安裝yum圖形窗口插件:yum install yumex
查看可能批量安裝的列表:yum grouplist
生成軟件包緩存:    yum makecache
清空緩存:        yum clean all
卸載程序:        yum remove tree
檢查更新:        yum check-update
更新軟件:        yum update tree
 
   
複製代碼

yum源配置

什麼是yum源?

  • Yum(全稱爲 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,可以從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟件包,無須繁瑣地一次次下載、安裝。
  • 說到yum源就必須說到linux系統中特有的依賴關係問題,yum就是爲了解決依賴關係而存在的。yum源就至關是一個目錄項,當咱們使用yum機制安裝軟件時,若須要安裝依賴軟件,則yum機制就會根據在yum源中定義好的路徑查找依賴軟件,並將依賴軟件安裝好。
  • YUM是「Yellow dog Updater, Modified」的縮寫,是一個軟件包管理器,YUM從指定的地方(相關網站的rpm包地址或本地的rpm路徑)自動下載RPM包而且安裝,可以很好的解決依賴關係問題。
  • YUM的基本工做機制以下:
    服務器端:在服務器上面存放了全部的RPM軟件包,而後以相關的功能去分析每一個RPM文件的依賴性關係,將這些數據記錄成文件存放在服務器的某特定目錄內。 
    客戶端:若是須要安裝某個軟件時,先下載服務器上面記錄的依賴性關係文件(可經過WWW或FTP方式),經過對服務器端下載的紀錄數據進行分析,而後取得全部相關的軟件,一次所有下載下來進行安裝。

yum源的目錄

#進入yum源目錄
cd /etc/yum.repos.d/
#查看yum源文件
ls -l

配置阿里雲yum源

複製代碼
1.好習慣,備份yum源
mkdir repo_bak
mv *.repo repo_bak/
2.下載阿里雲repo文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo
3.清空yum緩存而且生成新的yum緩存
yum clean all
yum makecache
4.安裝軟件擴展源
yum install -y epel-release
複製代碼

 必須掌握的/etc下的linux目錄知識

/etc:
這個目錄用來存放全部的系統管理所須要的配置文件和子目錄。
複製代碼
#網卡配置文件
/etc/sysconfig/network-script/ifcfg-eth0
#修改機器名以及網卡,網管等配置
/etc/sysconfig/network #linux的dns客戶端配置文件,實現域名和ip的互相解析 /etc/resolv.conf
#本地dns解析文件,設定ip和域名的對應解析,開發測試最經常使用的臨時域名解析
/etc/hosts/
#系統全局環境變量永久生效的配置文件,如PATH等
/etc/profile
#用戶的環境變量
~/.bash_profile
~/.bashrc
#存放可執行程序的目錄,大可能是系統管理命令
/usr/sbin
#存放用戶自編譯安裝軟件的目錄 > 等同於C:\Program files (windows)
/usr/local
#關於處理器的信息,還能夠top指令查看
/proc/cpuinfo
#查看內存信息,還能夠free -m
/proc/meminfo
複製代碼

Linux下安裝程序的方法

  • rpm -ivh 包名.rpm  須要手動解決依賴關係
  • yum install 包名          yum自動處理依賴關係
  • 編譯安裝(源碼安裝)

服務器沒法上網錯誤

1.yum報錯
    Error couldn't resolve host 'mirrorlist.centos.org'
2.ping www.baidu.com 看是否能上網
3.若是百度不通,ping ip通了
ping 119.29.29.29  ,說明dns有問題
相關文章
相關標籤/搜索