CentOS基礎

安裝
  • 阿里CentOS鏡像
  • 使用Virtual Box(免費) 或者 VMWare(註冊碼)
  • 設置IP地址和網關DNS
  1. 新建虛擬機
  2. 自定義(高級)
  3. 選擇虛擬機硬件兼容性——默認下一步
  4. 安裝程序光盤映像文件iso
  5. 處理器配置不用管
  6. 分配內存1GB足矣
  7. 使用橋接網絡(表明你的linux經過主機聯網)
  8. 後兩步默認便可
  9. 磁盤容量20G足夠,拆分多個文件

開始安裝linux

  1. 方向鍵選擇第一個(ctrl+alt可將鼠標切出)
  2. 選擇中文(安裝過程當中使用的語言)
  3. 軟件選擇GNOME桌面
  4. 安裝位置需進入查看點擊完成
  5. 安裝過程當中可設置root密碼及新建用戶

安裝完重啓 15. 進入查看許可證,接受協議 16. 可打開以太網 17. 選擇漢語 18. 時區shanghaiios

安裝以後最好把yum命令對應的安裝源改成國內鏡像,不然安裝軟件很慢,可是最小化安裝CentOS7網絡(非最小化但未打開以太網同理)是沒有配置的,此時ping不通,丟包率1c++

  1. 先檢查網絡是否通暢(ping),是則參考 yum國內鏡像
  2. 不然須要配置 /etc/sysconfig/network-scripts/ifcfg-ens33,(此時能夠順便配置下網卡名,詳見下文:網絡接口命名規則修改)
  3. 先備份 /etc/yum.repos.d/CentOS-Base.repo 文件(用cp命令或者mv),備份以後繼續下一步
  4. 能ping表示能夠聯網了,此時須要curl(或者wget,最小化默認不安裝wget),使用其中的一個工具來下載repo,參考:aliyun CentOS 鏡像
  5. 下載完鏡像的文件以後運行 yum makecache 從新生成緩存(yum clean all 可清空緩存),此時的輸出提示顯示源換成了阿里雲。
  6. 而後使用yum安裝軟件時使用的就是國內的鏡像源了

字符系統改變終端字體,在 /lib/kbd/consolefonts下存有各類字體對應的文件,使用 setfont sun12x22 這樣的命令可臨時設置字體,須要持續設置可執行 echo 'setfont sun12x22' >> /etc/bashrc。sql

bashrc文件中的命令會在登入shell時執行。 yum -y update可升級全部軟件包及內核(生產環境慎用)shell

我ping不通的時候顯示:centos 7 No route to host 和 host unreachable等等,這是由於ifcfg-eth0文件的額配置的值須要加雙引號編程

基礎
init 0 關機
init 1 單用戶模式
init 5 圖形界面
init 3 命令行界面
init 6 重啓

touch xxx 新建文件xxx
mkdir 建立目錄

man 幫助
help 幫助
區分外部和內部複製代碼
文件
pwd 顯示當前目錄名
cd 更改目錄
ls [OPTION]... [FILE]... 查看目錄下文件,可查看多個
ls 加參數 (可合併寫)
-l 長格式顯示文件
-h 顯示文件大小及單位
-r 逆序顯示
-a 顯示隱藏文件
-t 按事件順序顯示
-R 遞歸顯示
/ 表明根目錄
/root root用戶的home目錄
su - xxx 切換爲xxx用戶複製代碼
目錄
cd 
cd - 回到上次目錄
cd /path/to/...      絕對
cd ./path/to/...     相對(當前)
cd ../path/to/...    相對(父級)

rmdir 刪除空目錄
rm -r -f 刪除非空目錄複製代碼
cp 複製目錄、文件

參數 -r 遞歸地拷貝目錄

mv 移動(更名)

通配符 *
單個字符 ?複製代碼
文本查看
cat 文本顯示到終端
head 查看文件開頭
tail 查看文件結尾 -f 文件更新後顯示信息同步更新(用於觀察日誌文件)
wc 統計文件內容信息複製代碼
打包、壓縮

早期linux備份文件(主要備份etc中的文件)的介質時磁帶,使用命令tar
打包後的磁帶文件進行壓縮存儲,壓縮的命令是gzip、bzip2

tar命令集成了gzip、bzip2,打包的時候能夠進行壓縮,
需帶上參數 -z 或者 -j,分別對應gzip、bzip2

tar -c表示壓縮 -x表解包 -f指定操做類型爲文件(而非文件夾)

bzip2壓縮最小

在網絡中可能見到 .tbz2和.tgz的後綴,這是bzip二、gzip的縮寫形式複製代碼
vim編輯器

vi編輯器ubuntu

多模式編輯:正常模式(複製粘貼)、插入模式(文本輸入)、命令模式(保存退出)、可視模式()vim

vim編輯器:在vi基礎上增長了無窮步驟的重作和回退windows

正常模式

通常進入vim最開始的模式就是正常模式,在此輸入 i、I、a、A、o、O 均可進入插入模式centos

i 在光標當前位置進入插入模式
I 在光標當前行首進入插入模式
a 在光標的下一位進入插入模式
A 對應I,在末尾進入插入模式
o 在光標下一行進入插入模式(原有的下一行依次向下移動)
O 在光標上一行進入插入模式(相似小寫o)

: 進入命令模式(末行)

v 可視模式

h 左移動光標
j 下移動光標
k 上移動光標
l 右移動光標
        在圖形界面系統中使用方向鍵也行,但在字符系統中可能只能用hjkl

esc 從其餘模式回到正常模式

y 命令表示複製 
yy 複製(可多行)
y$ 複製光標位置到結尾的內容

d 表示剪切
dd 剪切整行
d$ 剪切光標位置到末尾

p 粘貼

u 撤銷

ctrl + r 重作

x 刪除單個字符(實爲剪切單個字符)

r 替換單個字符

:set nu 顯示行數 以後按數字,而後shift + g可將光標跳轉到指定行

小寫g(按兩次跳轉到第一行)
大寫G 跳轉到最後一行

shift + 6 (^)光標到行首
shift + 4 ($)光標到行尾複製代碼

插入模式

命令模式

Esc 從其餘模式回到正常模式

:w 保存
:q 退出
:w path/file_name 另存
:wq 保存退出vim
:q! 不保存退出
:! 臨時執行shell命令(後接要執行命令)
/ 查找字符(後接要查找的字符) 
    匹配以後按回車,再按n向下一個匹配字符移動光標
        shift + n 向上一個匹配字符移動

:s/old/new 對當前行中的文本中的old字符替換爲new
:%s/old/new 對整個文本進行替換
:%s/old/new 對整個文本內匹配的old進行替換
:x,ys/old/new 再x到y行進行替換
:set 設置命令複製代碼

可視模式

三種進入方法
v 字符可視模式
V 行可視模式
ctrl + v 塊可視模式
    配合d和I可進行塊的便利操做
    d是剪切、I是在光標位置插入

在使用I插入後只是在光標位置插入了,要應用到選中的塊中須要按esc,這樣會應用到選中的塊中複製代碼
用戶管理

管理

useradd 新建用戶
userdel 刪除用戶
    加上-r直接刪除用戶在home下的文件夾 
    好比userdel -r hui
passwd 修改用戶密碼

groupadd 新建用戶組
groupdel 刪除用戶組
    新建用戶組以後可使用usermod -g 組名 用戶名 把已有的用戶加入到用戶組中

也能夠在建立用戶的同時直接加入到用戶組中 useradd -g groupdemo hui2
    groupdemo用戶組是已有的複製代碼

ubuntu root密碼忘記怎麼辦?加入普通用戶具備sudo權限,那麼直接sudo su root改密碼就行了,不然重置或者重裝。su僅僅取得root權限,工做環境不變,仍是在切換以前用戶的工做環境;sudo是徹底取得root的權限和root的工做環境。

新建用戶會建立 /home/username/下面的目錄,可以使用ls -a查看隱藏文件
使用tail -10 /etc/shadow 查看密碼文件
使用tail -10 /etc/passwd 查看密碼??
建立時若沒有指定用戶組,則會建立與用戶名同名的用戶組複製代碼

切換

su 是切換用戶
sudo 是以其餘用戶身份執行命令
visudo 設置須要使用sudo的用戶組,好比要給普通用戶設置某一命令權限,就是用visudo,而後修改文件

好比關機命令,默認只有root用戶纔有,不過可能須要受權給其餘用戶,可是又不能暴露root的密碼,因此可把這條指令受權給普通用戶


在切換用戶是經常臨時切換,否則切回root(可能)須要輸密碼比較麻煩
su - tempUserName複製代碼
文件含義
/etc/passwd
格式:username:切換要不要密碼:userID:user組:註釋:家目錄:user登陸命令解釋器
root:x:0:0:root:/root:/bin/bash
yama:x:1000:1000:yama:/home/yama:/bin/bash

Linux識別用戶不是根據用戶名,而是根據userID,因此當有用戶ID相同,好比yama的ID爲0,則yama會變爲root用戶;加入把命令解釋器設置爲 /sbin/nologin 則表明不讓用戶登陸,好比tcpump用戶。複製代碼
/etc/shadow
保存用戶密碼文件
格式:userName:加密後的密碼:::::

yama:$6$7LKCrS2L5rGfUCbw$rU1BXreBwFPF6To6q1NB7UPkvr2XTvWCh64QmVfgR    Wu.J6yPcUDJZ4GUX1Xjkm0LEnHVy0y5g3AOiLaIrRWAz/::0:99999:7:::複製代碼
/etc/group
格式:組name:是否須要密碼驗證(x表示須要?):組的gid:其餘組設置 
root:x:0:
其中第四個字段表明其餘組設置,好比一個用戶屬於兩個組,那麼能夠在另外一個組的第四個字段處聲明(在第四個字段寫入username便可)複製代碼

/bin是系統的一些指令。bin爲binary的簡寫主要放置一些系統的必備執行檔例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。

/sbin通常是指超級用戶指令。主要放置一些系統管理的必備程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。

/usr/bin 是你在後期安裝的一些軟件的運行腳本。主要放置一些應用軟體工具的必備執行檔例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m四、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。

/usr/sbin   放置一些用戶安裝的系統管理的必備程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。

若是新裝的系統,運行一些很正常的諸如:shutdown,fdisk的命令時,悍然提示:bash:command not found。那麼首先就要考慮root 的$PATH裏是否已經包含了這些環境變量。 能夠查看PATH,若是是:PATH=$PATH:$HOME/bin則須要添加成以下:PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin

使用ls加參數可查看文件的各類信息
好比:
-rw-rw-r--. 1 yama yama 52 12月 20 12:51 de.c
dr-xr-xr-x.  17 root root  224 12月 14 16:29 ..
lrwxrwxrwx.   1 root root    7 5月  11 2019 bin -> usr/bin


文件權限表示方法
-rw-r-xr--. 1 userName groupName mTime fileName
(容易發現左邊的權限和右邊的屬X一一對應,第一個字符-表示文件類型)
rw- 文件屬主的權限
r-x 文件屬組的權限
r-- 其餘用戶的權限

目錄權限表示方法
x 進入目錄
rx 顯示目錄內的文件名
wx 修改目錄內的文件名

建立新文件有默認權限,根據umask值計算,屬主和屬組根據當前進程的用戶來設定複製代碼

vim對文件的修改保存其實是一種對原有文件的替換

類型:
- 普通文件
d 目錄文件(一切皆文件,目錄也是文件)
b 塊特殊文件
c 字符特殊文件
l 符號連接
f 命名管道
s 套接字文件

字符權限:
r 讀
w 寫
x 執行(好比ls、cat等命令其實都是可執行的文件,對於一個文件使用vim打開也須要執行權限)
數字權限表示方法:(八進制)
r = 4
w = 2
x = 1

特殊權限s對應4,t對應1複製代碼
修改權限

chmod 修改文件、目錄權限 因爲權限可用字符、數字表示,因此修改方法也有兩種chmod u+x fileNamechmod 755 fileName

u、g、o、a分別表明修改上圖中粉色、藍色、綠色、所有

chmod u+ 增長權限
chmod u- 減小權限
chmod u= 直接設置權限複製代碼

以下更改de.c文件的權限:

  • u-w減小屬主的寫權限
  • g+x增長屬組的執行權限
  • o=rwx設置其餘用戶的讀寫執行權限
[root@localhost]# ls -ld de.c
-rw-rw-r--. 1 yama yama 52 12月 20 12:51 de.c

[root@localhost]# chmod u-w,g+x,o=rwx de.c
[root@localhost]# ls -ld de.c
-r--rwxrwx. 1 yama yama 52 12月 20 12:51 de.c複製代碼
還有一種方法是使用數字來表示,數字467分別表明讀、讀寫、讀寫執行,也就是權限值相加
好比 chmod 446 de.c 表明給de.c文件設置屬主讀權限,屬組讀權限,其餘用戶讀寫權限
[root@localhost]# ls -ld de.c
-rw-rw-r--. 1 yama yama 52 12月 20 12:51 de.c
[root@localhost]# chmod 446 de.c
[root@localhost]# ls -ld de.c
-r--r--rw-. 1 yama yama 52 12月 20 12:51 de.c
[root@localhost]# chmod 664 de.c
[root@localhost]# ls -ld de.c
-rw-rw-r--. 1 yama yama 52 12月 20 12:51 de.c複製代碼

在Linux裏面建立文件默認是666權限,可是會減去umask文件掩碼(0022),也就是022,因此新建文件默認權限是644,也就是 rw-r--r--。

chown 更改屬組、屬主

經本身的centos8測試,屬主及屬組爲yama的文件不能被yama用戶更改屬組和屬主,這可能和本身的配置有關,root用戶不受限制

chown yama ./de.c 表示更改de.c文件的屬主爲yama, 若是要更改屬組須要使用 chown :groupName fileName

chgrp 能夠單獨更改屬組(不經常使用)

在terminal使用 ctrl + r 能夠搜索以前使用過的命令

儘可能不要使用root用戶作權限的修改,由於它是不受任何限制的,即使一個文件只有屬主纔有讀權限,root用戶也能對其進行寫入等等操做。 在教程中都是用root用戶,這是爲了減小練習環境不一致致使的錯誤解讀,並且只是練習環境,因此可使用root,在生產環境中不要這麼作。

修改權限注意

echo 顯示(對比編程語言中的print)
echo huidt > fileA 表示把本來的輸出‘huidt’ 重定向至fileA文件中
> 這個符號會把本來文件中的內容所有清空

當文件權限出現衝突,好比:
user1用戶屬於group1用戶組,文件fileA的權限是----w----,也就是說只有用戶組李的用戶對其纔有寫權限
而屬主user1並無任何權限,可是user1又屬於group1,
此時user1對文件fileA是沒有任何權限的,這時候衝突的權限要以屬主爲準,而不是屬組複製代碼
對於目錄文件,通常的權限組合是x、rx、wx

對於系統目錄,下面的目錄權限可能不同,文件確是同樣的
對於這樣的權限叫作特殊權限,有如下幾種

SUID:用於二進制可執行文件,執行命令時取得文件屬主權限。如 /usr/bin.passwd
SGID:用於目錄,在改目錄下建立新的文件和目錄,權限自動改成該目錄的屬組
SBIT:用於目錄,該目錄下新建的文件和目錄,僅root和本身能夠刪除。如 /tmp

以下:有一個特殊的s權限,指的是SUID,表明無論是root用戶仍是普通用戶在執行這個文件時都會以文件的屬主進行操做
[yama@localhost demo]$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 33600 4月   7 2020 /usr/bin/passwd複製代碼

SUID的意思是 set user id,好比普通用戶執行 passwd 命令的時候,對應的密碼文件保存在/etc/shadow 下 ----------. 1 root root 1489 12月 20 13:52 /etc/shadow 這個文件任何用戶都是沒有權限的(root除外,它的屬主也是root),因此 s 表明當普通用戶,好比 yama 執行的時候,會自動取得屬主root的權限,這使得普通用戶也有了操做系統文件的部分權限

還有SBIT,能夠看到末尾的其餘用戶有一個t權限,由於/tmp是臨時目錄,任何用戶均可以在此操做,但爲了防止其餘用戶刪掉當前的文件,因此設置t權限

[root@localhost demo]# ls -ld /tmp
drwxrwxrwt. 31 root root 4096 12月 21 15:59 /tmp複製代碼

在修改特殊權限的時候再也不使用權限數字相加,而是將特殊權限單獨列在數字開頭,好比s對應4,t對應1,那麼 /usr/bin/passwd 文件的權限就是4755,/tmp 權限就是1777,就是在原有數字的前面加上特殊權限數字。

網絡管理

網絡狀態查看

net-tools VS iproute2

net_tools

ifconfig

ifconfig 

    eth0 第一塊網卡(網絡接口)
    第一個網絡接口也可能叫其餘名字:
        eno1 板載網卡
        ens33 PCI-E網卡
        enp0s3 沒法獲取物理信息的PCI-E網卡
    
    CentOS 7使用了一致性網絡設備命名,以上不匹配則使用eth0複製代碼

以下爲 ifconfig 的結果 ens33即爲個人設備網卡名,inet 表IP地址,netmask 表子網掩碼,inet6 表MAC地址,RX、TX表發送和接受的數據。其中還有一個 lo 網卡表示本地環回,IP地址永遠是127.0.0.1,用來開發測試,virbr0 網卡通常是Linux虛擬化出來的一些網關

[yama@localhost demo]$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.127  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::1744:b082:b9d8:f881  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:f4:9f:76  txqueuelen 1000  (Ethernet)
        RX packets 47  bytes 9571 (9.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 81  bytes 9273 (9.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 48  bytes 4080 (3.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 48  bytes 4080 (3.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:02:6f:c5  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0複製代碼

查看網線鏈接

查看網線鏈接
[root@localhost yama]# mii-tool eth0
eth0: negotiated 1000baseT-FD flow-control, link ok複製代碼

查看網關

當網絡通訊時須要鏈接其餘網絡地址範圍時就須要配置網關,也可稱做配置路由。 網關Gateway又叫網間鏈接器、協議轉換器,在網絡層以上實現網絡互連。 網關實質上是一個網絡通向其餘網絡的IP地址,訪問某個網站時把包首先發送到哪一個IP地址(這個IP地址是網關), 而後由這個IP地址上的設備負責分發數據包。

route命令,使用n參數不解析主機名

[root@localhost yama]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.43.1    0.0.0.0         UG    100    0        0 eth0
192.168.43.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

[root@localhost yama]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 eth0
192.168.43.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0複製代碼

上面的default表示默認網關192.168.43.1,除默認網關以外還可配置器明細路由,也叫靜態路由

網絡配置命令

ifconfig <接口> <IP地址> [netmask]
表修改網絡配置

ifup <接口>
啓用網卡,好比ifup eth0

ifdown <接口>
禁用網卡

添加網關
添加默認網關
route add default gw <Gateway IP>

添加指定網關
route add -host <指定IP> gw <Gateway IP>
在訪問特定主機ip時走指定的網關

添加指定網段的網關
route add -net <指定網段> netmask <子網掩碼> gw <Gateway IP>
在訪問指定網段時的路由

刪除網關
route del default gw <Gateway IP>複製代碼

修改網關通常是刪除舊的再增長新的

iproute2

網絡命令集合:ip命令

ip addr lsxxxx
......對應:ifconfig

ip link set dev eth0 up
設置網卡啓停對應:ifup eth0 和 ifdown eth0

ip addr add 10.0.0.1/24 dev eth1
    對應:ifconfig eth1 10.0.0.1 netmask 255.255.255.0(設置ip和子網掩碼)

ip route add 10.0.0.1/24 via 192.168.0.1
    對應:route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.0.1複製代碼

網絡接口命名規則修改

在對大量網絡設備進行操做時若是設備網卡名不一樣,則批量化操做起來就會比較麻煩,因此須要修改成一致的網卡名。

網卡命名規則受兩個參數的影響:biosdevname 和 net.ifnames

以下是CentOS_8的grub文件的內容,其中GRUB_CMDLINE_LINUX表示系統啓動時linux須要作的一些內容(引導內核kernel),相似於啓動菜單,在quiet以後設置參數便可,設置後不會當即生效,由於這個文件只是用來用戶讀取的

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd    .lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true複製代碼

步驟總結:

  • 編輯 /etc/default/grub 文件,增長 biosdevname=0、net.ifnames=0
  • 修改原網卡文件:將 /etc/sysconfig/network-scripts/ifcfg-ens33 文件中 NAME 和 DEVICE 名稱的值改成eth0
  • 重命名原網卡文件:將/etc/sysconfig/network-scripts/ifcfg-ens33文件名改成ifcfg-eth0
  • 更新grub:執行#grub2-mkconfig -o /boot/grub2/grub.cfg
  • 重啓:執行#reboot

biosdevname net.ifnames NIC name
default 0 1 ens33
Combination 1 1 0 em1
Combination 2 0 0 eth0
複製代碼

網絡配置

見網絡配置命令

路由命令

見iproute2

網絡故障排除

ping
traceroute
mtr
nslookup
telnet
tcpdump
netstat
ss複製代碼

traceroute可加參數w,好比 traceroute -w 1 www.baidu.com ,表示若是其中的一個ip長時間超時,則只等待最多1s

[yama@localhost ~]$ traceroute -w 1 yama.thdong.top
traceroute to yama.thdong.top (47.103.10.22), 30 hops max, 60 byte packets
 1  _gateway (192.168.43.1)  6.442 ms  6.479 ms  7.087 ms
 2  * * *
 3  10.138.76.213 (10.138.76.213)  57.145 ms  57.087 ms  57.167 ms
 4  * * *

其中的*號表示主機不支持traceroute追蹤複製代碼

mtr直接執行,當主機間通訊時會顯示比traceroute更加詳細的信息。

nslookup可從域名獲得ip

[yama@localhost ~]$ nslookup yama.thdong.top
Server:		192.168.43.1
Address:	192.168.43.1#53

Non-authoritative answer:
Name:	yama.thdong.top
Address: 47.103.10.22

server默認是DNS
[root@centos8 demo]#  nslookup
> server
Default server: 172.18.6.89
Address: 172.18.6.89#53
Default server: 114.114.114.114
Address: 114.114.114.114#53
Default server: 172.18.6.88
Address: 172.18.6.88#53複製代碼
telnet可用於檢測與目標主機的某端口是否暢通,是常見的控制遠程服務器的方法,ctrl + ] 中止,quit退出telnet

[yama@localhost ~]$ telnet www.baidu.com 80
Trying 36.152.44.95...
Connected to www.baidu.com.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
[yama@localhost ~]$ 
複製代碼
tcpdump通常做爲網絡抓包工具

[root@localhost demo]# tcpdump -i any -n port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel

-i any表示抓取任意網卡,-n表示不解析成域名(以IP顯示),port 80表示80端口

還能夠捕獲某一主機,使用host參數
tcpdump -i any -n host 10.0.0.1

若是向指定某一ip的端口,則同時使用host和port
tcpdump -i any -n host 10.0.0.1 and port 80

可以使用-w 以及文件路徑及文件名把捕獲到的結果保存下來複制代碼
netstat用於顯示各類網絡相關信息,如網絡鏈接,路由表,接口狀態 (Interface Statistics),masquerade 鏈接,多播成員 (Multicast Memberships) 等等

[root@localhost demo]# netstat -ntpl
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 192.168.122.1:53        0.0.0.0:*               LISTEN      1705/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1118/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1115/cupsd          
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      1118/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1115/cupsd    

n顯示ip t表以tcp方式 p表進程 l表tcp狀態(listen)複製代碼
ss命令使用與netstat基本相同,顯示格式不一樣

[root@localhost demo]# ss -ntpl
State   Recv-Q   Send-Q     Local Address:Port     Peer Address:Port                                                                        
LISTEN  0        128              0.0.0.0:111           0.0.0.0:*      users:(("rpcbind",pid=879,fd=4),("systemd",pid=1,fd=37))             
LISTEN  0        32         192.168.122.1:53            0.0.0.0:*      users:(("dnsmasq",pid=1705,fd=6))                                    
LISTEN  0        128              0.0.0.0:22            0.0.0.0:*      users:(("sshd",pid=1118,fd=5))                                       
LISTEN  0        5              127.0.0.1:631           0.0.0.0:*      users:(("cupsd",pid=1115,fd=10))                                     
LISTEN  0        128                 [::]:111              [::]:*      users:(("rpcbind",pid=879,fd=6),("systemd",pid=1,fd=39))             
LISTEN  0        128                 [::]:22               [::]:*      users:(("sshd",pid=1118,fd=7))                                       
LISTEN  0        5                  [::1]:631              [::]:*      users:(("cupsd",pid=1115,fd=9))   
複製代碼

網絡服務管理

網絡服務管理程序分爲兩種:Sysv和systemd

  • service network start|stop|restart (比較老,我在centos8中使用的時候已經不行了)
  • chkconfig -list network
  • systemctl list-unit-files NetworkManager.service (如下爲systemd ,比較新)
  • systemctl start|stop|restart NetworkManager
  • systemctl enable|disable NetworkManager

有關配置文件爲/etc/sysconfig/network-scripts/ifcfg-eth0 和 /etc/hosts

在centos7中使用 service network status 查看網絡狀態,其實已經使用了systemctl來進行控制,在7中處理network,還有NetworkManager這樣一個服務,而centos8 已經用NetworkManager替換了network,使用 systemctl status  NetworkManager查看網絡狀態,不過NetworkManager服務徹底是由systemctl來警醒控制的。

以下查看網絡狀態

[root@localhost demo]# systemctl status  NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor pr>
   Active: active (running) since Fri 2020-12-25 16:56:47 CST; 35min ago
     Docs: man:NetworkManager(8)
 Main PID: 5109 (NetworkManager)
    Tasks: 3 (limit: 11154)
   Memory: 4.5M
   CGroup: /system.slice/NetworkManager.service
           └─5109 /usr/sbin/NetworkManager --no-daemon

12月 25 17:26:49 centos8.yama101 NetworkManager[5109]: <info>  [1608888409.6276] dhcp>
12月 25 17:26:49 centos8.yama101 NetworkManager[5109]: <info>  [1608888409.6276] dhcp>
12月 25 17:26:49 centos8.yama101 NetworkManager[5109]: <info>  [1608888409.6276] dhcp>
12月 25 17:26:49 centos8.yama101 NetworkManager[5109]: <info>  [1608888409.6276] dhcp>
12月 25 17:26:49 centos8.yama101 NetworkManager[5109]: <info>  [1608888409.6276] dhcp>
12月 25 17:26:49 centos8.yama101 NetworkManager[5109]: <info>  [1608888409.6276] dhcp>
12月 25 17:26:49 centos8.yama101 NetworkManager[5109]: <info>  [1608888409.6276] dhcp>
12月 25 17:26:49 centos8.yama101 NetworkManager[5109]: <info>  [1608888409.6276] dhcp>
12月 25 17:26:50 centos8.yama101 NetworkManager[5109]: <info>  [1608888410.7571] agen>
12月 25 17:30:49 centos8.yama101 NetworkManager[5109]: <info>  [1608888649.6596] audi>
[root@localhost demo]# 
複製代碼

查看NetworkManager服務

[yama@centos8 demo]$ systemctl list-unit-files NetworkManager.service
UNIT FILE              STATE  
NetworkManager.service enabled

1 unit files listed.複製代碼

這樣理解network服務,NetworkManager服務,network服務是centos6的網絡默認管理工具, centos7重寫了一遍就是NetworkManage服務,由於network只能支持service來管理, 而centos7默認的服務管理工具換成了systemctl(centos7中的network和NetworkManager都是用它實現的)

在centos7中若是須要沿用之前的控制方式就須要禁用新的方式(NetworkManager),反之在使用新的方式進行控制的時候建議禁用舊的方式;不要兩套一塊兒用。

在centos7中使用 chkconfig --list network 能夠查看network在不一樣運行級別中的使用狀況(在centos8中已經查不到),
而後可以使用 chkconfig --level xxxx(數字級別) network off|on 進行啓用或禁用

使用 systemctl enable|disable  NetworkManager 啓用或禁用NetworkManager服務複製代碼

ifconfig 和 ip 是一樣的狀況,他們均可以查詢網絡狀態,均可以設置ip,可是設置了以後只能保存在內存中,重啓以後配置就沒有了。要想重啓以後還須要保持配置須要寫入配置文件, 經過service network restart 從新加載配置文件來讓網絡配置生效,記住在centos8中只有systemctl restart NetworkManager了

經常使用網絡配置文件

/etc/sysconfig/network-scripts/ifcfg-* 以及 /etc/hosts,前者是各個網卡的配置文件

[root@localhost demo]# hostname centos8-101.yama
臨時修改主機名
[root@localhost demo]# hostnamectl set-hostname centos8.yama101
永久修改,永久修改記得同時更改 /etc/hosts 文件 中本機地址127.0.0.1的對應關係,以下
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   centos8.yama101複製代碼
軟件安裝

軟件包管理器

CentOS、RedHat、Fedora使用yum包管理器,軟件安裝包格式爲rpm,(RedHat Package Manager) Debian、Ubuntu使用apt包管理器,軟件安裝格式爲deb

rpm包和rpm命令

rpm命令經常使用參數
    -q 查村軟件包
    -i 安裝軟件包
    -e 卸載軟件包
查詢時可以使用 -a | more 進行分屏,例如 rpm -qa | more 分屏後空格看下一屏,q退出複製代碼

能夠下載到光盤中,插入光驅,而後在Linux中識別,/dev/ 文件夾下的塊設備(指b開頭的文件,沒法使用cat、cp等命令操做,詳見文件含義),而後執行

把真的光盤作成光盤鏡像
dd if=/dev/file of=/xxx/xxx.iso

可以使用mount(掛載)命令對這種塊特殊文件進行操做,特別是在字符界面不會有像windows那樣插入U盤彈出盤符的提示,因此必須手動操做。

mount /dev/sr0 /mnt 

rpm包在複製代碼

yum倉庫

源代碼編譯安裝

內核升級

grub配置文件

虛擬機軟件可以使用VirtualBox,免費,輕量

新建用戶
[root@centos8 yama]# useradd 2017218049
useradd:無效的用戶名「2017218049」
[root@centos8 yama]# useradd thd2017218049
[root@centos8 yama]# passwd thd2017218049
更改用戶 thd2017218049 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字符
從新輸入新的 密碼:
passwd:全部的身份驗證令牌已經成功更新。
[root@centos8 yama]# su thd2017218049
[thd2017218049@centos8 yama]$ 


經常使用指令
[thd2017218049@centos8 ~]$ cd /home/thd2017218049
[thd2017218049@centos8 ~]$ mkdir 2017218049
[thd2017218049@centos8 ~]$ touch index.c
[thd2017218049@centos8 ~]$ man vim
[thd2017218049@centos8 ~]$ vim index.c
[thd2017218049@centos8 ~]$ mv ./index.c ./buble.c
[thd2017218049@centos8 ~]$ ls
2017218049  buble.c
[thd2017218049@centos8 ~]$ ls -lhd ./*
drwxrwxr-x. 2 thd2017218049 thd2017218049   6 12月 28 12:14 ./2017218049
-rw-rw-r--. 1 thd2017218049 thd2017218049 566 12月 28 12:20 ./buble.c
[thd2017218049@centos8 ~]$ mv ./buble.c ./2017218049/buble.c
[thd2017218049@centos8 ~]$ cd 2017218049
[thd2017218049@centos8 2017218049]$ ls
buble.c
[thd2017218049@centos8 2017218049]$ chmod 754 buble.c
[thd2017218049@centos8 2017218049]$ ls -lh *
-rwxr-xr--. 1 thd2017218049 thd2017218049 566 12月 28 12:20 buble.c
[thd2017218049@centos8 2017218049]$ mii-tool ens33
SIOCGMIIPHY on 'ens33' failed: Operation not permitted
[thd2017218049@centos8 2017218049]$ su - root
密碼:
上一次登陸:一 12月 28 12:08:13 CST 2020pts/0 上
[root@centos8 ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok
[root@centos8 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.43.1    0.0.0.0         UG    100    0        0 ens33
192.168.43.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[root@centos8 ~]# vim /etc/default/grub
[root@centos8 ~]# cd /etc/default
[root@centos8 default]# ls
grub  nss  useradd
[root@centos8 default]# cd /etc/sysconfig/network-scripts
[root@centos8 network-scripts]# ls
ifcfg-ens33  ifdown-ppp       ifup-ib      ifup-Team
ifcfg-lo     ifdown-routes    ifup-ippp    ifup-TeamPort
ifdown       ifdown-sit       ifup-ipv6    ifup-tunnel
ifdown-bnep  ifdown-Team      ifup-isdn    ifup-wireless
ifdown-eth   ifdown-TeamPort  ifup-plip    init.ipv6-global
ifdown-ib    ifdown-tunnel    ifup-plusb   network-functions
ifdown-ippp  ifup             ifup-post    network-functions-ipv6
ifdown-ipv6  ifup-aliases     ifup-ppp
ifdown-isdn  ifup-bnep        ifup-routes
ifdown-post  ifup-eth         ifup-sit
[root@centos8 network-scripts]# mv ./ifcfg-ens33 ./ifcfg-eth0
[root@centos8 network-scripts]# ls
ifcfg-eth0   ifdown-ppp       ifup-ib      ifup-Team
ifcfg-lo     ifdown-routes    ifup-ippp    ifup-TeamPort
ifdown       ifdown-sit       ifup-ipv6    ifup-tunnel
ifdown-bnep  ifdown-Team      ifup-isdn    ifup-wireless
ifdown-eth   ifdown-TeamPort  ifup-plip    init.ipv6-global
ifdown-ib    ifdown-tunnel    ifup-plusb   network-functions
ifdown-ippp  ifup             ifup-post    network-functions-ipv6
ifdown-ipv6  ifup-aliases     ifup-ppp
ifdown-isdn  ifup-bnep        ifup-routes
ifdown-post  ifup-eth         ifup-sit
[root@centos8 network-scripts]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-d7a82457455c4d0798c57d3f4632b8e8
Found initrd image: /boot/initramfs-0-rescue-d7a82457455c4d0798c57d3f4632b8e8.img
done
[root@centos8 network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.235  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::33fb:dc46:4fc0:7864  prefixlen 64  scopeid 0x20<link>
        inet6 2409:8930:b4d3:228b:b373:3115:8bc6:d393  prefixlen 64  scopeid 0x0<global>
        ether 00:0c:29:6b:6f:d6  txqueuelen 1000  (Ethernet)
        RX packets 2261  bytes 1891625 (1.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1041  bytes 81817 (79.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 323  bytes 28152 (27.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 323  bytes 28152 (27.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:2e:20:25  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@centos8 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@centos8 network-scripts]# ls
ifcfg-eth0   ifdown-ppp       ifup-ib      ifup-Team
ifcfg-lo     ifdown-routes    ifup-ippp    ifup-TeamPort
ifdown       ifdown-sit       ifup-ipv6    ifup-tunnel
ifdown-bnep  ifdown-Team      ifup-isdn    ifup-wireless
ifdown-eth   ifdown-TeamPort  ifup-plip    init.ipv6-global
ifdown-ib    ifdown-tunnel    ifup-plusb   network-functions
ifdown-ippp  ifup             ifup-post    network-functions-ipv6
ifdown-ipv6  ifup-aliases     ifup-ppp
ifdown-isdn  ifup-bnep        ifup-routes
ifdown-post  ifup-eth         ifup-sit
[root@centos8 network-scripts]# vim ifcfg-eth0
[root@centos8 network-scripts]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-d7a82457455c4d0798c57d3f4632b8e8
Found initrd image: /boot/initramfs-0-rescue-d7a82457455c4d0798c57d3f4632b8e8.img
done
[root@centos8 network-scripts]# hostname
centos8.yama102
[root@centos8 network-scripts]# hostnamectl set-hostname centos7.yama102
[root@centos8 network-scripts]# hostname
centos7.yama102
[root@centos8 network-scripts]# cd /home/thd2017218049/2017218049
[root@centos8 2017218049]# ls
buble.c
[root@centos8 2017218049]# mv ./buble.c ./2017218049.c
[root@centos8 2017218049]# ls
2017218049.c
[root@centos8 2017218049]# gcc -v
bash: gcc: 未找到命令...
[root@centos8 2017218049]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
[root@centos8 2017218049]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
--2020-12-28 12:47:21--  http://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主機 mirrors.aliyun.com (mirrors.aliyun.com)... 112.29.211.20, 112.28.200.242, 112.30.160.147, ...
正在鏈接 mirrors.aliyun.com (mirrors.aliyun.com)|112.29.211.20|:80... 已鏈接。
已發出 HTTP 請求,正在等待迴應... 200 OK
長度:2523 (2.5K) [application/octet-stream]
正在保存至: 「/etc/yum.repos.d/CentOS-Base.repo」

100%[======================================>] 2,523       --.-K/s 用時 0s      

2020-12-28 12:47:22 (5.94 MB/s) - 已保存 「/etc/yum.repos.d/CentOS-Base.repo」 [2523/2523])

[root@centos8 2017218049]# yum makecache
已加載插件:fastestmirror, langpacks
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                     | 3.6 kB     00:00     
extras                                                   | 2.9 kB     00:00     
updates                                                  | 2.9 kB     00:00     
(1/10): extras/7/x86_64/filelists_db                       | 224 kB   00:01     
base/7/x86_64/primary_db       FAILED                                          
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/repodata/6d0c3a488c282fe537794b5946b01e28c7f44db79097bb06826e1c0c88bad5ef-primary.sqlite.bz2: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
正在嘗試其它鏡像。
(2/10): extras/7/x86_64/primary_db                         | 222 kB   00:00     
(3/10): base/7/x86_64/group_gz                             | 153 kB   00:02     
(4/10): base/7/x86_64/other_db                             | 2.6 MB   00:02     
(5/10): updates/7/x86_64/other_db                          | 334 kB   00:00     
(6/10): updates/7/x86_64/filelists_db                      | 2.7 MB   00:01     
(7/10): base/7/x86_64/primary_db                           | 6.1 MB   00:03     
base/7/x86_64/filelists_db     FAILED                                          
http://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/d6d94c7d406fe7ad4902a97104b39a0d8299451832a97f31d71653ba982c955b-filelists.sqlite.bz2: [Errno 12] Timeout on http://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/d6d94c7d406fe7ad4902a97104b39a0d8299451832a97f31d71653ba982c955b-filelists.sqlite.bz2: (28, 'Connection timed out after 30000 milliseconds')
正在嘗試其它鏡像。
extras/7/x86_64/other_db       FAILED                                           
http://mirrors.aliyuncs.com/centos/7/extras/x86_64/repodata/2e9fd48ed164af0d6a80c2a07dc67c09d733ea94fbde75f81cc7076405c90124-other.sqlite.bz2: [Errno 12] Timeout on http://mirrors.aliyuncs.com/centos/7/extras/x86_64/repodata/2e9fd48ed164af0d6a80c2a07dc67c09d733ea94fbde75f81cc7076405c90124-other.sqlite.bz2: (28, 'Connection timed out after 30000 milliseconds')
正在嘗試其它鏡像。
(8/10): base/7/x86_64/filelists_db                         | 7.2 MB   00:03     
(9/10): extras/7/x86_64/other_db                           | 134 kB   00:01     
updates/7/x86_64/primary_db    FAILED                                          
http://mirrors.aliyuncs.com/centos/7/updates/x86_64/repodata/54834ed57c7c2b0259f68aa900001055256475f9349907045268aacc586f0875-primary.sqlite.bz2: [Errno 12] Timeout on http://mirrors.aliyuncs.com/centos/7/updates/x86_64/repodata/54834ed57c7c2b0259f68aa900001055256475f9349907045268aacc586f0875-primary.sqlite.bz2: (28, 'Connection timed out after 30002 milliseconds')
正在嘗試其它鏡像。
(10/10): updates/7/x86_64/primary_db                       | 4.7 MB   00:01     
元數據緩存已創建
[root@centos8 2017218049]# rpm -q gcc
未安裝軟件包 gcc 
[root@centos8 2017218049]# yum install gcc -y
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
正在解決依賴關係
--> 正在檢查事務
---> 軟件包 gcc.x86_64.0.4.8.5-44.el7 將被 安裝
--> 正在處理依賴關係 cpp = 4.8.5-44.el7,它被軟件包 gcc-4.8.5-44.el7.x86_64 須要
--> 正在處理依賴關係 glibc-devel >= 2.2.90-12,它被軟件包 gcc-4.8.5-44.el7.x86_64 須要
--> 正在檢查事務
---> 軟件包 cpp.x86_64.0.4.8.5-44.el7 將被 安裝
---> 軟件包 glibc-devel.x86_64.0.2.17-317.el7 將被 安裝
--> 正在處理依賴關係 glibc-headers = 2.17-317.el7,它被軟件包 glibc-devel-2.17-317.el7.x86_64 須要
--> 正在處理依賴關係 glibc-headers,它被軟件包 glibc-devel-2.17-317.el7.x86_64 須要
--> 正在檢查事務
---> 軟件包 glibc-headers.x86_64.0.2.17-317.el7 將被 安裝
--> 正在處理依賴關係 kernel-headers >= 2.2.1,它被軟件包 glibc-headers-2.17-317.el7.x86_64 須要
--> 正在處理依賴關係 kernel-headers,它被軟件包 glibc-headers-2.17-317.el7.x86_64 須要
--> 正在檢查事務
---> 軟件包 kernel-headers.x86_64.0.3.10.0-1160.11.1.el7 將被 安裝
--> 解決依賴關係完成

依賴關係解決

================================================================================
 Package             架構        版本                        源            大小
================================================================================
正在安裝:
 gcc                 x86_64      4.8.5-44.el7                base          16 M
爲依賴而安裝:
 cpp                 x86_64      4.8.5-44.el7                base         5.9 M
 glibc-devel         x86_64      2.17-317.el7                base         1.1 M
 glibc-headers       x86_64      2.17-317.el7                base         690 k
 kernel-headers      x86_64      3.10.0-1160.11.1.el7        updates      9.0 M

事務概要
================================================================================
安裝  1 軟件包 (+4 依賴軟件包)

總下載量:33 M
安裝大小:59 M
Downloading packages:
警告:/var/cache/yum/x86_64/7/base/packages/cpp-4.8.5-44.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY
cpp-4.8.5-44.el7.x86_64.rpm 的公鑰還沒有安裝
(1/5): cpp-4.8.5-44.el7.x86_64.rpm                         | 5.9 MB   00:03     
(2/5): glibc-devel-2.17-317.el7.x86_64.rpm                 | 1.1 MB   00:00     
(3/5): glibc-headers-2.17-317.el7.x86_64.rpm               | 690 kB   00:00     
(4/5): gcc-4.8.5-44.el7.x86_64.rpm                         |  16 MB   00:08     
kernel-headers-3.10.0-1160.11.1.el7.x86_64.rpm 的公鑰還沒有安裝 32 MB   00:00 ETA 
(5/5): kernel-headers-3.10.0-1160.11.1.el7.x86_64.rpm      | 9.0 MB   00:04     
--------------------------------------------------------------------------------
總計                                               3.5 MB/s |  33 MB  00:09     
從 http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 檢索密鑰
導入 GPG key 0xF4A80EB5:
 用戶ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 指紋       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 來自       : http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安裝    : cpp-4.8.5-44.el7.x86_64                                     1/5 
  正在安裝    : kernel-headers-3.10.0-1160.11.1.el7.x86_64                  2/5 
  正在安裝    : glibc-headers-2.17-317.el7.x86_64                           3/5 
  正在安裝    : glibc-devel-2.17-317.el7.x86_64                             4/5 
  正在安裝    : gcc-4.8.5-44.el7.x86_64                                     5/5 
  驗證中      : glibc-devel-2.17-317.el7.x86_64                             1/5 
  驗證中      : gcc-4.8.5-44.el7.x86_64                                     2/5 
  驗證中      : kernel-headers-3.10.0-1160.11.1.el7.x86_64                  3/5 
  驗證中      : glibc-headers-2.17-317.el7.x86_64                           4/5 
  驗證中      : cpp-4.8.5-44.el7.x86_64                                     5/5 

已安裝:
  gcc.x86_64 0:4.8.5-44.el7                                                     

做爲依賴被安裝:
  cpp.x86_64 0:4.8.5-44.el7                                                     
  glibc-devel.x86_64 0:2.17-317.el7                                             
  glibc-headers.x86_64 0:2.17-317.el7                                           
  kernel-headers.x86_64 0:3.10.0-1160.11.1.el7                                  

完畢!
[root@centos8 2017218049]# rpm -q gcc
gcc-4.8.5-44.el7.x86_64
[root@centos8 2017218049]# pwd
/home/thd2017218049/2017218049
[root@centos8 2017218049]# ls
2017218049.c
[root@centos8 2017218049]# touch Makefile
[root@centos8 2017218049]# vim Makefile
[root@centos8 2017218049]# vim Makefile
[root@centos8 2017218049]# make clean
rm -rf hello *.elf *.gdb *.o
[root@centos8 2017218049]# make
make: *** 沒有規則能夠建立「hello」須要的目標「hello.o」。 中止。
[root@centos8 2017218049]# vim Makefile
[root@centos8 2017218049]# make clean
Makefile:1: *** 遺漏分隔符 。 中止。
[root@centos8 2017218049]# vim Makefile
[root@centos8 2017218049]# make clean
Makefile:1: *** 遺漏分隔符 。 中止。
[root@centos8 2017218049]# gcc -o 2017218049 2017218049.c
2017218049.c: 在函數‘main’中:
2017218049.c:14:5: 錯誤:只容許在 C99 模式下使用‘for’循環初始化聲明
     for(int i = 0;i < 10;i++){
     ^
2017218049.c:14:5: 附註:使用 -std=c99 或 -std=gnu99 來編譯您的代碼
2017218049.c:19:9: 錯誤:‘i’重聲明爲沒有外部連接
     int i;
         ^
2017218049.c:14:13: 附註:‘i’的上一個定義在此
     for(int i = 0;i < 10;i++){
             ^
[root@centos8 2017218049]# vim 2017219049.c
[root@centos8 2017218049]# ls
2017218049.c  Makefile
[root@centos8 2017218049]# vim 2017218049.c
[root@centos8 2017218049]# vim 2017218049.c
[root@centos8 2017218049]# gcc -o 2017218049 2017218049.c
[root@centos8 2017218049]# ls
2017218049  2017218049.c  Makefile
[root@centos8 2017218049]# ./2017218049
3
4
5
2
6
8
78
34
12
9
2 3 4 5 6 8 9 12 34 78 [root@centos8 2017218049]# 

複製代碼
Makefile參考
  • 如何調試MAKEFILE變量
  • 跟我一塊兒寫 Makefile
待續
相關文章
相關標籤/搜索