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命令

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有問題