一. 網卡配置詳解
網絡配置文件: /etc/sysconfig/network 網絡接口配置文件: /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME # 這個INTERFACE_NAME 就是 ens33 如下圖
DEVICE=: 關聯的設備名稱,要與文件名的后半部“INTERFACE_NAME”保持一致; BOOTPROTO={static|none|dhcp|bootp}: 引導協議;要使用靜態地址,使用static或none;dhcp表示使用DHCP服務器獲取地址; IPADDR=: IP地址 NETMASK=:子網掩碼 GATEWAY=:設定默認網關; ONBOOT=:開機時是否自動激活此網絡接口; HWADDR=: 硬件地址,要與硬件中的地址保持一致;可省; USERCTL={yes|no}: 是否允許普通用戶控制此接口; PEERDNS={yes|no}: 是否在BOOTPROTO為dhcp時接受由DHCP服務器指定的DNS地址;
# 有的剛裝好Linux的時候,網卡默認沒啟動 #編輯網卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 我的是ens33 #修改配置參數
ONBOOT=yes # 這個樣就默認啟動了
ifup, ifdown命令
ifup ens33 #啟動ens33網卡
ifdown ens33 # 關閉ens33網卡
二 . 用戶管理權限篇
root與其他用戶的信息
在Linux系統中,用戶也有自己的UID身份賬號且唯一 系統管理員UID為0 # root
系統用戶UID為1~999 # Linux安裝的服務程序都會創建獨有的用戶負責運行。
普通用戶UID從1000開始:# 由管理員創建
創建普通用戶
# 添加用戶
useradd attila # 設置密碼
passwd 666
# 修改密碼
passwd attila # root可以修改所有用戶的密碼,且不需要驗證
切換用戶
su命令可以切換用戶身份的需求, su - username # su命令中間的-號很重要,意味着完全切換到新的用戶,即環境變量信息也變更為新用戶的信息
Tip: 1.超級用戶root切換普通用戶無需密碼,例如“群主”想踢誰就踢誰 2.普通用戶切換root,需要輸入密碼 3.普通用戶權限較小,只能基本查看信息 4.$符號是普通用戶命令提示符,#是超級管理員的提示符
5.~ 表示在家目錄,比如root用戶在 /root下 就顯示~
userdel刪除用戶
-f 強制刪除用戶 -r 同時刪除用戶以及家目錄 userdel -rf attila
sudo命令
sudo命令用來以其他身份來執行命令,預設的身份為root。在/etc/sudoers中設置了可執行sudo指令的用戶。
若其未經授權的用戶企圖使用sudo,則會發出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,之后有5分鍾的有效期限,超過期限則必須重新輸入密碼。
參數
# sudo 【選項】【參數】
-b:在后台執行指令; -h:顯示幫助; -H:將HOME環境變量設為新身份的HOME環境變量; -k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;。 -l:列出目前用戶可執行與無法執行的指令; -p:改變詢問密碼的提示符號; -s<shell>:執行指定的shell; -u<用戶>:以指定的用戶作為新的身份。若不加上此參數,則預設以root作為新的身份; -v:延長密碼有效期限5分鍾; -V :顯示版本信息。
想要給普通用戶root的權限,必須編輯sudoers文件
# visudo # 后面不用加文件路徑自己去找 /etc/sudoers 使用visudo編輯出錯會告訴你
寫入 ## Allow root to run any commands anywhere
root ALL=(ALL) ALL attila ALL=(ALL) ALL #允許attila在任何地方,執行任何命令
授權之后就可以做一些只有root才能做的事情了,如:
# 先切換到attila用戶
su - attila # 原來只有root才能看/root
sudo ls /root # 前邊要寫sudo
三 . 文件與目錄權限
# Linux文件主要有三種身份,每種身份有三種權限 # 身份
u(user), g(group), o(others) # 權限
r(可讀)w(可寫)e(可執行)
# 權限信息三個為一組,如rw-就是一組
# 文件類型的參數與解釋
- 一般文件 d 文件夾 l 軟連接(快捷方式) b 塊設備,存儲媒體文件為主 c 代表鍵盤,鼠標等設備
權限數字轉化
查看用戶權限命令(id)
id指令查看用戶所屬群主 # id root
uid=0(root) gid=0(root) 組=0(root)
修改屬主為attila
# chown (change owner)
chown attila 校花的故事.txt
修改屬組為attila
# chgrp (change group)
chgrp attila 校花的故事.txt
文件權限用數字計算
# chmod
chmod 754 校花的故事.txt # 754對應的位置分別是u g o # 7 = 4+2+1 也就是user 的權限是 r w e
軟連接
# 建立軟連接的格式
ln -s 你要連接的文件的絕對路徑 軟連接的絕對路徑(名字地址隨便給) # 把/tmp/校花的故事.txt軟連接到/home/天龍.txt
ln -s /tmp/校花的故事.txt /home/天龍.txt # 然后cat /home/天龍.txt 就直接可以看到校花的故事.txt里面的內容了, 天龍.txt相當於快捷方式,刪除不影響校花的故事.txt
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 PS1顯示ip地址 export PS1="[\u@\h `/sbin/ifconfig ens33 | sed -nr 's/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'` \w]\$"
四 . 常用命令
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=<范本樣式>:排除符合范本樣式的文件。
示例:
# 將/tmp/下所有內容壓縮成All_log.tar.gz並且放到/home/下
tar -zcvf /home/All_log.tar.gz /tmp/*
# 把Python源碼包Python-3.7.0b3.tgz 解壓到/opt/python3的文件夾下
tar -zxvf Python-3.7.0b3.tgz -C /opt/python3
netstat命令
netstat命令用來打印Linux中網絡系統的狀態信息,可讓你得知整個Linux系統的網絡情況。
參數
netstat [選項] -t或--tcp:顯示TCP傳輸協議的連線狀況; -u或--udp:顯示UDP傳輸協議的連線狀況; -n或--numeric:直接使用ip地址,而不通過域名服務器; -l或--listening:顯示監控中的服務器的Socket; -p或--programs:顯示正在使用Socket的程序識別碼和程序名稱; -a或--all:顯示所有連線中的Socket; # netstat -tunlp
ps命令
ps命令用於查看系統中進程狀態
ps 命令常用參數 -a 顯示所有進程 -u 用戶以及其他詳細信息 -x 顯示沒有控制終端的進程 # 查找進程
ps -ef # 查找python進程
ps -ef | grep python
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
killall命令
# 通常來講,復雜軟件的服務程序會有多個進程協同為用戶提供服務,如果逐個去結束這 些進程會比較麻煩,
此時可以使用 killall 命令來批量結束某個服務程序帶有的全部進程。
# 例如nginx啟動后有2個進程
killall nginx
關閉防火牆命令
centos7默認已經使用firewall作為防火牆了 1.關閉防火牆 systemctl status firewalld #查看防火牆狀態
systemctl stop firewalld #關閉防火牆
systemctl disable firewalld#關閉防火牆開機啟動
systemctl is-enabled firewalld.service#檢查防火牆是否啟動
Linux語言設置
#查看系統當前字符集
echo $LANG locale #檢查xshell crt的字符集 #命令修改字符集 # vim /etc/profile.d/locale.sh
export LC_CTYPE=zh_CN.UTF-8 export LC_ALL=zh_CN.UTF-8
# vim /etc/locale.conf
LANG=zh_CN.UTF-8
# vim /etc/sysconfig/i18n
LANG=zh_CN.UTF-8
# vim /etc/environment
LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 英文版本 # vim /etc/profile.d/locale.sh
export LC_CTYPE=en_US.UTF-8 export LC_ALL=en_US.UTF-8
# vim /etc/locale.conf
LANG=en_US.UTF-8
# vim /etc/sysconfig/i18n
LANG=en_US.UTF-8
# vim /etc/environment
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
# 更改完之后需要保存生效 source /etc/proprofile
2.更改后查看系統語言變量 locale
df命令
df命令用於顯示磁盤分區上的可使用的磁盤空間。默認顯示單位為KB。可以利用該命令來獲取硬盤被占用了多少空間,目前還剩下多少空間等信息。
# 語法
df(選項)(參數) -h或--human-readable:以可讀性較高的方式來顯示信息; -k或--kilobytes:指定區塊大小為1024字節; -T或--print-type:顯示文件系統的類型; --help:顯示幫助; --version:顯示版本信息。
tree命令

1 1 tree命令以樹狀圖列出目錄的內容。 2 2 3 3 -a:顯示所有文件和目錄; 4 4 -A:使用ASNI繪圖字符顯示樹狀圖而非以ASCII字符組合; 5 5 -C:在文件和目錄清單加上色彩,便於區分各種類型; 6 6 -d:先是目錄名稱而非內容; 7 7 -D:列出文件或目錄的更改時間; 8 8 -f:在每個文件或目錄之前,顯示完整的相對路徑名稱; 9 9 -F:在執行文件,目錄,Socket,符號連接,管道名稱名稱,各自加上"*","/","@","|"號; 10 10 -g:列出文件或目錄的所屬群組名稱,沒有對應的名稱時,則顯示群組識別碼; 11 11 -i:不以階梯狀列出文件和目錄名稱; 12 12 -l:<范本樣式> 不顯示符號范本樣式的文件或目錄名稱; 13 13 -l:如遇到性質為符號連接的目錄,直接列出該連接所指向的原始目錄; 14 14 -n:不在文件和目錄清單加上色彩; 15 15 -N:直接列出文件和目錄名稱,包括控制字符; 16 16 -p:列出權限標示; 17 17 -P:<范本樣式> 只顯示符合范本樣式的文件和目錄名稱; 18 18 -q:用“?”號取代控制字符,列出文件和目錄名稱; 19 19 -s:列出文件和目錄大小; 20 20 -t:用文件和目錄的更改時間排序; 21 21 -u:列出文件或目錄的擁有者名稱,沒有對應的名稱時,則顯示用戶識別碼; 22 22 -x:將范圍局限在現行的文件系統中,若指定目錄下的某些子目錄,其存放於另一個文件系統上,則將該目錄予以排除在尋找范圍外。
設置主機名
[root@localhost /tmp]#hostnamectl set-hostname xixixi
[root@xixixi ~ ]#hostname
xixixi
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
# 我們遇到過qq能上去但是百度上不去的情況吧,這就是有dns搞的鬼, 我們需要按照以下做法:
vim /etc/resolv.conf nameserver 114.114.114.114 # 這個是114dns服務器
# 223.5.5.5 和 223.6.6.6 是阿里的dns服務器
nslookup命令
#解析
nslookup www.baidu.com
計划任務crond服務
其實就是定時任務
crontab命令被用來提交和管理用戶的需要周期性執行的任務,與windows下的計划任務類似
參數
crontab (選項)(參數) -e:編輯該用戶的計時器設置; -l:列出該用戶的計時器設置; -r:刪除該用戶的計時器設置; -u<用戶名稱>:指定要設定計時器的用戶名稱。 存放定時任務的文件 /var/spool/cron
注意:
1. 查看計划任務的執行: tail -f /var/log/cron 2.寫計划任務時,命令必須加上絕對路徑,否則會出現 "從日志中看,確實觸發了計划任務的執行,但是命令沒有成功" 的情況 3.計划任務執行的命令是否存在,軟件是否安裝 查看:rpm -qa | grep cron 4.確保crontab服務運行
systemctl status cron
ps -ef | grep crond
5.檢查crontab是否開機
systemctl is-enabled crond
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 # | | | | | # * * * * * command to be executed
分 時 日 月 周
示例:
# 所有命令都要用絕對路徑寫 crontab -e # 進入編輯計時器設置 # 每周一到周五的晚上11點,清空/tmp目錄下的所有文件 00 23 * * 1-5 /user/bin/rm -rf /tmp/* # 清空指令rm也需要找到它的絕對路徑, 然后tmp下的文件也要絕對路徑 # 每周3和周5的凌晨1點,備份/var/log 到 /vmtp/ 00 01 * * 3,5 /usr/bin/cp /var/log /vmtp/ # which cp 找到cp指令的所在位置 # 每隔三分鍾同步一下時間 */3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com - # 表示范圍 3-5 就是3到5 , # 表示和的意思 3,5 就是3和5 / # 表示每多長時間 */3 每3(分,時,日,月,周)
yum 命令
yum解決了依賴關系,提供了查找,安裝,刪除某一個,一組,甚至是全部軟件的命令
yum(選項)(參數) -h:顯示幫助信息; -y:對所有的提問都回答“yes”; -c:指定配置文件; -q:安靜模式; -v:詳細模式; -d:設置調試等級(0-10); -e:設置錯誤等級(0-10); -R:設置yum處理一個命令的最大等待時間; -C:完全從緩存中運行,而不去下載或者更新任何頭文件
實例
部分常用的命令包括: 自動搜索最快鏡像插件 yum install yum-fastestmirror
五 . yum配置
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
yum repolist all # 列出所有倉庫
yum list all # 列出倉庫所有軟件包
yum info 軟件包名 # 查看軟件包信息
yum install 軟件包名 # 安裝軟件包
yum reinstall 軟件包名 # 重新安裝軟件包
yum update 軟件包名 # 升級軟件包
yum remove 軟件包名 # 移除軟件包
yum clean all # 清楚所有倉庫緩存
yum check-update # 檢查可以更新的軟件包
yum grouplist # 查看系統中已安裝的軟件包
yum groupinstall 軟件包組 # 安裝軟件包組
六 . 必須掌握的/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有問題