Linux基礎(chǔ)-系統(tǒng)管理

二、系統(tǒng)管理

1.系統(tǒng)信息、硬件資源

(1).CPU

CPU是操作系統(tǒng)穩(wěn)定運(yùn)行的根本,CPU的速度與性能在很大程度上決定了系統(tǒng)整體的性能,因此,CPU數(shù)量越多、主頻越高,服務(wù)器性能也就相對(duì)越好

# 1,查看物理CPU個(gè)數(shù)
$ cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
# 2,查看邏輯cpu個(gè)數(shù)
$ cat /proc/cpuinfo |grep "processor"|wc -l
# 3,查看CPU多少核
$ cat /proc/cpuinfo 
# 4,動(dòng)態(tài)查看cpu等信息(輸入 top 命令之后再按數(shù)字 1 )
$ top

(2).內(nèi)存

Linux系統(tǒng)采用了物理內(nèi)存虛擬內(nèi)存(SWAP內(nèi)存)兩種方式,虛擬內(nèi)存雖然可以緩解物理內(nèi)存的不足,但是占用過(guò)多的虛擬內(nèi)存,應(yīng)用程序的性能將明顯下降,要保證應(yīng)用程序的高性能運(yùn)行,物理內(nèi)存一定要足夠大;所以我們?cè)诖罱ù髷?shù)據(jù)集群的時(shí)候一般會(huì)禁用SWAP內(nèi)存分區(qū)。

(3).磁盤

1).磁盤信息和網(wǎng)絡(luò)信息的查看

# 檢測(cè)磁盤空間(通過(guò)-h參數(shù)轉(zhuǎn)成帶單位的顯示方式:): 
$ df -h
# 顯示所有文件系統(tǒng)的磁盤使用情況:
$ df -a
# 顯示各指定文件系統(tǒng)的磁盤空間使用情況:
$ df -t
# du命令用于統(tǒng)計(jì)目錄或文件所占磁盤空間的大?。?$ du -h /root
# 查看當(dāng)前網(wǎng)絡(luò)信息: 
$ ifconfig
# 測(cè)試遠(yuǎn)程主機(jī)的連通性: 
$ ping 10.30.59.130

# 查詢指定目錄中文件大小超過(guò)500M的
find /  -type f -size +500M

2).磁盤I/O性能

磁盤的I/O性能會(huì)直接影響應(yīng)用程序的性能,尤其是在一個(gè)頻繁讀寫的應(yīng)用中,如磁盤I/O得不到滿足,就會(huì)導(dǎo)致應(yīng)用停滯。常見(jiàn)的提高磁盤I/O的方式是使用磁盤RAID技術(shù)(廉價(jià)磁盤冗余陣列):

  • RAID 0 : 通過(guò)把多塊硬盤粘合成一個(gè)容量更大的硬盤組,提高了磁盤的性能和吞吐量。這種方式成本低,要求至少兩個(gè)磁盤,但是沒(méi)有容錯(cuò)和數(shù)據(jù)修復(fù)功能,因而只能用在對(duì)數(shù)據(jù)安全性要求不高的環(huán)境中。
  • RAID 1 : 也就是磁盤鏡像,通過(guò)把一個(gè)磁盤的數(shù)據(jù)鏡像到另一個(gè)磁盤上,最大限度地保證磁盤數(shù)據(jù)的可靠性和可修復(fù)性,具有很高的數(shù)據(jù)冗余能力,但磁盤利用率只有50%,因而,成本最高,多用在保存重要數(shù)據(jù)的場(chǎng)合。
  • RAID 5 : 采用了磁盤分段加奇偶校驗(yàn)技術(shù),從而提高了系統(tǒng)可靠性,RAID 5讀出效率很高,寫入效率一般,至少需要3塊盤。允許一塊磁盤故障,而不影響數(shù)據(jù)的可用性。

(4),查看GPU的版本

# 適用于英偉達(dá)的gpu顯卡
nvidia-smi

(5),查看Linux的版本信息

# 方法1:登陸Linux,在終端輸入 
cat /etc/redhat-release 
# 方法2:登陸Linux,在終端輸入 
cat /etc/issue
# 方法3:登陸Linux,在終端輸入
## 此時(shí)需要yum安裝
yum install redhat-lsb -y
## 查看版本等信息
lsb_release -a

2.進(jìn)程信息、主機(jī)管理

1.查看進(jìn)程信息(3種):
    (1),查看進(jìn)程的詳細(xì)狀況:ps
    (2),顯示終端上所有的進(jìn)程,包括其他用戶的進(jìn)程:ps -a
    (3),顯示進(jìn)程的詳細(xì)狀態(tài):ps -u
    (4),查看進(jìn)程(查看redis的進(jìn)程):ps -ef | grep redis
    (5),動(dòng)態(tài)顯示進(jìn)程(top命令用來(lái)動(dòng)態(tài)顯示運(yùn)行中的進(jìn)程。top命令能夠在運(yùn)行后,在指定的時(shí)間間隔更新顯示信息。可以在使用top命令時(shí)加上-d 來(lái)指定顯示信息更新的時(shí)間間隔。):top
    (6),在kali中沒(méi)有體現(xiàn),但是也可以查看進(jìn)程的詳細(xì)信息:ntop
    (7).netstat -anp | grep 進(jìn)程號(hào)    # 查看該進(jìn)程網(wǎng)絡(luò)信息
    (8).netstat -nlp | grep 端口號(hào)     # 查看網(wǎng)絡(luò)端口號(hào)占用情況

2.殺死進(jìn)程(根據(jù)查看的進(jìn)程信息中的pid號(hào)(數(shù)字)進(jìn)行刪除):
    普通殺:kill 232
    強(qiáng)制殺:kill -9 232
3.關(guān)機(jī):
    立刻關(guān)機(jī):shutdown -h now
    指定在某個(gè)時(shí)間(20:20)點(diǎn)關(guān)機(jī):shutdown -h 20:20
4.重啟: reboot
ps 選項(xiàng) 含義
-a 顯示終端上的所有進(jìn)程,包括其他用戶的進(jìn)程
-u 顯示進(jìn)程的詳細(xì)狀態(tài)
-x 顯示沒(méi)有控制終端的進(jìn)程
-w 顯示加寬,以便顯示更多的信息
-r 只顯示正在運(yùn)行的進(jìn)程
top命令執(zhí)行后對(duì)應(yīng)的按鍵 含義
M 根據(jù)內(nèi)存使用量來(lái)排序
P 根據(jù)CPU占有率來(lái)排序
T 根據(jù)進(jìn)程運(yùn)行時(shí)間的長(zhǎng)短來(lái)排序
U 可以根據(jù)后面輸入的用戶名來(lái)篩選進(jìn)程
K 可以根據(jù)后面輸入的PID來(lái)殺死進(jìn)程。
q 退出
h 獲得幫助

3,yum源管理

(1),Centos換源(在線)

wget的包

# 0.需要先使用已經(jīng)準(zhǔn)備好的prm包安裝好wget
$ rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm
# 1.首先備份系統(tǒng)自帶yum源配置文件/etc/yum.repos.d/CentOS-Base.repo
$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 2.下載ailiyun的yum源配置文件到/etc/yum.repos.d/
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 3.運(yùn)行yum makecache生成緩存
$ yum makecache
# 4.這時(shí)候再更新系統(tǒng)就會(huì)看到以下mirrors.aliyun.com信息
$ yum -y update

-------------------------分割線------------------------------

# 5.有些時(shí)候失敗的話:
# (1).新添加配置CentOS的DNS:
$ vi   /etc/resolv.conf
$ nameserver   8.8.8.8

# (2).重新執(zhí)行wget命令,然后另外在生成緩存的時(shí)候可以先清除緩存
$ yum clean all

# (3),附另外的參考連接
https://blog.csdn.net/qingfenggege/article/details/80394564

(2),[[6-配置本地鏡像源]]

  • 配置本地文件源(單機(jī))
  • 修改本地文件源為局域網(wǎng)訪問(wèn)http源(聯(lián)機(jī))

(3),查看 yum 命令安裝的包的路徑

# 例如查看使用yum源安裝 XXX 的安裝目錄,此時(shí)會(huì)將所所有與XXX相關(guān)的rpm包顯示出來(lái)
$ rpm -ql XXX

4,rpm包管理

主要介紹 rpm 的相關(guān)命令。

# 1.查看已經(jīng)安裝的rpm包,可以指定只看其中的一個(gè)為XXX的
$ rpm -qa | grep xxx
# 2.安裝rpm包,例如安裝xxx.rpm
$ rpm -ivh xxx.rpm
# 3.刪除rpm包
$ rpm -e xxx.rpm
# 4.在刪除包時(shí)不檢查依賴
$ rpm -e --nodeps XXX.rpm

5.網(wǎng)絡(luò)配置管理

(1),設(shè)置靜態(tài)ip

該筆記在整理的時(shí)候都是以虛擬機(jī)自動(dòng)獲取ip地址的方式去獲取的,所以在這單獨(dú)整理手動(dòng)更改ip的步驟。

# 1,打開(kāi)網(wǎng)絡(luò)配置文件(網(wǎng)卡名稱不唯一,在其他機(jī)器中可能不是這個(gè),一般是在那個(gè)目錄下的第一個(gè)文件名稱)
$ vim /etc/sysconfig/network-scripts/ifcfg-ens33

# 2,修改其中的兩個(gè)選項(xiàng)和添加幾個(gè)選項(xiàng)
# (1).修改的選項(xiàng)
BOOTPROTO=static
ONBOOT=yes
# (2).追加的選項(xiàng)(ip,子網(wǎng)掩碼,網(wǎng)關(guān)(在虛擬網(wǎng)絡(luò)編輯器可中可以查看),DNS)
IPADDR=192.168.52.100
NETMASK=255.255.255.0
GATEWAY=192.168.52.1
DNS1=8.8.8.8

# 3,配置完成之后,重啟網(wǎng)卡
service network restart

# 或者使用如下的命令重啟
systemctl restart network  




ZONE=public

(2).CentosMini班安裝之后沒(méi)有ifconfig★

最小化安裝后,可以用 ip addr 命令查看網(wǎng)絡(luò)信息。

那么習(xí)慣ifconfig的用戶,則需要 yum -y install net-tools 即可

6.時(shí)間管理

(1),日期時(shí)間操作

1.查看當(dāng)前日歷:
    查看當(dāng)前月份的日歷: cal
    查看指定年份的日歷: cal -y 2018

2.顯示當(dāng)前時(shí)間: date
# date [MMDDhhmm[[CC]YY][.ss]] +format
CC為年前兩位yy為年的后兩位,前兩位的mm為月,后兩位的mm為分鐘,dd為天,hh為小時(shí),ss為秒。如: date 010203042016.55。
顯示時(shí)間格式(date '+%y,%m,%d,%H,%M,%S'):

3.Linux hwclock命令用于顯示與設(shè)定硬件時(shí)鐘
# 參數(shù):
hwclock # 直接敲命令顯示的當(dāng)前時(shí)間
–hctosys  # 將系統(tǒng)時(shí)鐘調(diào)整為與目前的硬件時(shí)鐘一致。
–set –date=<日期與時(shí)間>  # 設(shè)定硬件時(shí)鐘。
–show  # 顯示硬件時(shí)鐘的時(shí)間與日期。
–version  # 顯示版本信息。
format格式 含義
%Y,%y
%m
%d
%H 時(shí)
%M
%S

(2),時(shí)間同步

通過(guò)網(wǎng)絡(luò)連接外網(wǎng)進(jìn)行時(shí)鐘同步,必須保證虛擬機(jī)連上外網(wǎng)

三臺(tái)機(jī)器都安裝ntpdate

yum -y install ntpdate

阿里云時(shí)鐘同步服務(wù)器

ntpdate ntp4.aliyun.com

三臺(tái)機(jī)器定時(shí)任務(wù)

crontab -e

添加如下內(nèi)容

*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;

7.防火墻管理

(1),firewall-cmd

1),基本命令格式

  • 通用選項(xiàng)
-h, --help    # 顯示幫助信息;
-V, --version # 顯示版本信息. (這個(gè)選項(xiàng)不能與其他選項(xiàng)組合);
-q, --quiet   # 不打印狀態(tài)消息;
  • 狀態(tài)選項(xiàng)
--state                # 顯示firewalld的狀態(tài);
--reload               # 不中斷服務(wù)的重新加載;
--complete-reload      # 中斷所有連接的重新加載;
--runtime-to-permanent # 將當(dāng)前防火墻的規(guī)則永久保存;
--check-config         # 檢查配置正確性;
  • 日志選項(xiàng)
--get-log-denied         # 獲取記錄被拒絕的日志;
--set-log-denied=<value> # 設(shè)置記錄被拒絕的日志,只能為 'all','unicast','broadcast','multicast','off' 其中的一個(gè);

2),實(shí)例

A,裝開(kāi)啟和關(guān)閉防火墻
# 安裝firewalld
yum install firewalld firewall-config

systemctl start  firewalld # 啟動(dòng)
systemctl stop firewalld  # 停止
systemctl enable firewalld # 啟用自動(dòng)啟動(dòng)
systemctl disable firewalld # 禁用自動(dòng)啟動(dòng)
systemctl status firewalld # 或者 firewall-cmd --state 查看狀態(tài)

# 關(guān)閉服務(wù)的方法
# 你也可以關(guān)閉目前還不熟悉的FirewallD防火墻,而使用iptables,命令如下:
systemctl stop firewalld
systemctl disable firewalld
yum install iptables-services
systemctl start iptables
systemctl enable iptables
B,開(kāi)發(fā)端口示例
# 查看防火墻詳細(xì)信息(只有重新加載防火墻之后才會(huì)生效)
firewall-cmd --list-all

# 設(shè)置開(kāi)放端口號(hào)(ES): 9200
# 指定將當(dāng)前防火墻的規(guī)則永久保存
# 默認(rèn)是是對(duì)所有ip放行的
firewall-cmd --add-port=9200/tcp --permanent

# 關(guān)閉某個(gè)端口的訪問(wèn)權(quán)限
firewall-cmd --remove-port=3000/tcp --permanent

# 設(shè)置開(kāi)發(fā)端口號(hào)(MySQL): 3306
# --zone 指定生效的區(qū)域,默認(rèn)是 public
firewall-cmd --zone=public --add-port=3306/tcp --permanent

# 重新加載防火墻
firewall-cmd --reload

# 驗(yàn)證端口,只查詢防火墻開(kāi)放端口,中間使用空格隔開(kāi)
firewall-cmd --zone=public --list-port
# 查看當(dāng)前區(qū)域信息
firewall-cmd --get-active-zones

# 查看當(dāng)前放行的服務(wù)
# 單獨(dú)測(cè)試是否含有 ssh
firewall-cmd --get-services | grep ssh
C,控制端口 / 服務(wù) (小結(jié))

可以通過(guò)兩種方式控制端口的開(kāi)放,一種是指定端口號(hào)另一種是指定服務(wù)名。雖然開(kāi)放 http 服務(wù)就是開(kāi)放了 80 端口,但是還是不能通過(guò)端口號(hào)來(lái)關(guān)閉,也就是說(shuō)通過(guò)指定服務(wù)名開(kāi)放的就要通過(guò)指定服務(wù)名關(guān)閉;通過(guò)指定端口號(hào)開(kāi)放的就要通過(guò)指定端口號(hào)關(guān)閉。還有一個(gè)要注意的就是指定端口的時(shí)候一定要指定是什么協(xié)議,tcp 還是 udp。知道這個(gè)之后以后就不用每次先關(guān)防火墻了,可以讓防火墻真正的生效。

firewall-cmd --add-service=mysql        # 開(kāi)放mysql端口
firewall-cmd --remove-service=http      # 阻止http端口
firewall-cmd --list-services            # 查看開(kāi)放的服務(wù)
firewall-cmd --add-port=3306/tcp        # 開(kāi)放通過(guò)tcp訪問(wèn)3306
firewall-cmd --remove-port=80tcp        # 阻止通過(guò)tcp訪問(wèn)3306
firewall-cmd --add-port=233/udp         # 開(kāi)放通過(guò)udp訪問(wèn)233
firewall-cmd --list-ports               # 查看開(kāi)放的端口
D,偽裝 IP
firewall-cmd --query-masquerade # 檢查是否允許偽裝IP
firewall-cmd --add-masquerade   # 允許防火墻偽裝IP
firewall-cmd --remove-masquerade # 禁止防火墻偽裝IP
E,端口轉(zhuǎn)發(fā)

端口轉(zhuǎn)發(fā)可以將指定地址訪問(wèn)指定的端口時(shí),將流量轉(zhuǎn)發(fā)至指定地址的指定端口。轉(zhuǎn)發(fā)的目的如果不指定 ip 的話就默認(rèn)為本機(jī),如果指定了 ip 卻沒(méi)指定端口,則默認(rèn)使用來(lái)源端口。 如果配置好端口轉(zhuǎn)發(fā)之后不能用,可以檢查下面兩個(gè)問(wèn)題:

  1. 比如我將 80 端口轉(zhuǎn)發(fā)至 8080 端口,首先檢查本地的 80 端口和目標(biāo)的 8080 端口是否開(kāi)放監(jiān)聽(tīng)了
  2. 其次檢查是否允許偽裝 IP,沒(méi)允許的話要開(kāi)啟偽裝 IP
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 將80端口的流量轉(zhuǎn)發(fā)至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1 # 將80端口的流量轉(zhuǎn)發(fā)至192.168.0.1
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 將80端口的流量轉(zhuǎn)發(fā)至192.168.0.1的8080端口
F:補(bǔ)充
source: 根據(jù)源地址過(guò)濾(優(yōu)先級(jí)最高)
interface: 根據(jù)網(wǎng)卡過(guò)濾(優(yōu)先級(jí)次高)
service: 根據(jù)服務(wù)名過(guò)濾
port: 根據(jù)端口過(guò)濾
icmp-block: icmp 報(bào)文過(guò)濾,按照 icmp 類型配置
masquerade: ip 地址偽裝
forward-port: 端口轉(zhuǎn)發(fā)
rule: 自定義規(guī)則

# 查看是否開(kāi)啟
systemctl status firewalld.service
# 打開(kāi)防火墻
systemctl start firewalld.service
# 停用防火墻
systemctl disable firewalld
# 禁用防火墻
systemctl stop firewalld.service

# 開(kāi)機(jī)啟動(dòng)
systemctl enable firewalld
# 取消開(kāi)機(jī)啟動(dòng)
systemctl disable firewalld

# 查看運(yùn)行狀態(tài)
firewall-cmd --state
# 查看接口信息
firewall-cmd --list-all

# 更新防火墻規(guī)則方法1:無(wú)需斷開(kāi)連接,動(dòng)態(tài)更改規(guī)則
firewall-cmd --reload
# 更新防火墻規(guī)則方法2:斷開(kāi)連接,以重啟的方式更改規(guī)則
firewall-cmd --complete-reload

# 查看幫助
firewall-cmd --help
--zone=NAME # 指定 Zone
--permanent # 為永久生效
--timeout=seconds # 持續(xù)一段時(shí)間,到期后自動(dòng)移除,經(jīng)常用于調(diào)試,且不能與 --permanent 同時(shí)使用

# 追加一個(gè)8181端口,永久有效
firewall-cmd --add-port=8181/tcp --permanent
# 追加一段端口范圍
firewall-cmd --add-port=6000-6600/tcp
# 開(kāi)放 ftp 服務(wù)
firewall-cmd --add-service=ftp
# 添加eth0 接口至 public 信任等級(jí),永久有效
firewall-cmd --zone=public --add-interface=eth0 --permanent

# 配置 public zone 的端口轉(zhuǎn)發(fā)
firewall-cmd --zone=public --add-masquerade
# 然后轉(zhuǎn)發(fā) tcp 22 端口至 9527
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=9527
# 轉(zhuǎn)發(fā) 22 端口數(shù)據(jù)至另一個(gè) ip 的相同端口上
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.123
# 轉(zhuǎn)發(fā) 22 端口數(shù)據(jù)至另一 ip 的 9527 端口上
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=9527:toaddr=192.168.1.100

# IP 封禁
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.123' reject"
# IP 解除封禁
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.123' accept"

# 通過(guò) ipset 來(lái)封禁 ip
firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:ip
firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=192.168.1.123
# 封禁網(wǎng)段
firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:net
firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=192.168.1.0/24
# 倒入 ipset 規(guī)則 blacklist,然后封禁 blacklist
firewall-cmd --permanent --zone=public --new-ipset-from-file=/path/blacklist.xml
firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=blacklist drop'

(2),iptables

iptables服務(wù)會(huì)把配置好的防火墻策略交由內(nèi)核層面的netfilter網(wǎng)絡(luò)過(guò)濾器來(lái)處理;

而firewalld服務(wù)則是把配置好的防火墻策略交由內(nèi)核層面的nftables包過(guò)濾框架來(lái)處理。

換句話說(shuō),當(dāng)前在Linux系統(tǒng)中其實(shí)存在多個(gè)防火墻管理工具,旨在方便運(yùn)維人員管理Linux系統(tǒng)中的防火墻策略,我們只需要配置妥當(dāng)其中的一個(gè)就足夠了。雖然這些工具各有優(yōu)劣,但它們?cè)诜阑饓Σ呗缘呐渲盟悸飞鲜潜3忠恢碌摹?/p>

一般來(lái)說(shuō),從內(nèi)網(wǎng)向外網(wǎng)發(fā)送的流量一般都是可控且良性的,因此我們使用最多的就是INPUT規(guī)則鏈,該規(guī)則鏈可以增大黑客人員從外網(wǎng)入侵內(nèi)網(wǎng)的難度。

但是,僅有策略規(guī)則還不能保證社區(qū)的安全,保安還應(yīng)該知道采用什么樣的動(dòng)作來(lái)處理這些匹配的流量,比如“允許”、“拒絕”、“登記”、“不理它”。這些動(dòng)作對(duì)應(yīng)到iptables服務(wù)的術(shù)語(yǔ)中分別是ACCEPT(允許流量通過(guò))、REJECT(拒絕流量通過(guò))、LOG(記錄日志信息)、DROP(拒絕流量通過(guò))。

1,參考地址(1)--linux系統(tǒng)中查看己設(shè)置iptables規(guī)則

2,參考地址(2)--第8章 Iptables與Firewalld防火墻

3,參考地址(3)--Centos7修改iptables規(guī)則并開(kāi)機(jī)永久生效兩種方式

(1),iptables中常用的參數(shù)以及作用

參數(shù) 作用
-P 設(shè)置默認(rèn)策略
-F 清空規(guī)則鏈
-L 查看規(guī)則鏈,此時(shí)查詢結(jié)果中會(huì)出現(xiàn)anywhere,用來(lái)表示任意的ip
-n 會(huì)以數(shù)字的方式顯示filter表中的相應(yīng)規(guī)則。如果沒(méi)有-n,規(guī)則中可能會(huì)出現(xiàn)anywhere,有了-n,它會(huì)變成0.0.0.0/0
-A 在規(guī)則鏈的末尾加入新規(guī)則
-I num 在規(guī)則鏈的頭部加入新規(guī)則
-D num 刪除某一條規(guī)則
-s 匹配來(lái)源地址IP/MASK,加嘆號(hào)“!”表示除這個(gè)IP外
-d 匹配目標(biāo)地址
-i 網(wǎng)卡名稱 匹配從這塊網(wǎng)卡流入的數(shù)據(jù)
-o 網(wǎng)卡名稱 匹配從這塊網(wǎng)卡流出的數(shù)據(jù)
-p 匹配協(xié)議,如TCP、UDP、ICMP
--dport num 匹配目標(biāo)端口號(hào)
--sport num 匹配來(lái)源端口號(hào)

(2),通過(guò)刪除規(guī)則關(guān)閉端口(如22端口)

## 查看默認(rèn)表中的規(guī)則
# -n: 是數(shù)字的方式展示
# -L: 是指定查詢時(shí)使用的規(guī)則規(guī)則鏈名稱,默認(rèn)是查詢所有的
# --line-number: 找出該規(guī)則的行號(hào)
[root@zhsq01 ~]# iptables -n -L  --line-number
.....
# 此時(shí)省略一些輸出內(nèi)容
.....

## 1,查看 進(jìn)口規(guī)則鏈中 IN_public_allow 所有的規(guī)則
[root@zhsq01 ~]# iptables -n -L IN_public_allow  --line-number
Chain IN_public_allow (1 references)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 ctstate NEW
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:82 ctstate NEW
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306 ctstate NEW
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 ctstate NEW
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9000 ctstate NEW
6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:19880 ctstate NEW

## 2,刪除 22 端口對(duì)應(yīng)的 num 為 1
[root@zhsq01 ~]# iptables -D IN_public_allow 1

## 3,再查看當(dāng)前開(kāi)放的端口
[root@zhsq01 ~]# iptables -n -L IN_public_allow  --line-number
Chain IN_public_allow (1 references)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:82 ctstate NEW
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306 ctstate NEW
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 ctstate NEW
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9000 ctstate NEW
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:19880 ctstate NEW

############# 注意: ###################
## 4,注意此時(shí)只是會(huì)臨時(shí)生效,在重啟之后會(huì)失效,所以需要我們我們執(zhí)行以下操作,但是Cetnos7中默認(rèn)是使用firewalld-cmd去管理,所以這個(gè)服務(wù)是沒(méi)有開(kāi)啟的,還需要進(jìn)一步操作,此時(shí)整理筆記并沒(méi)有深入研究。因?yàn)榇藭r(shí)已經(jīng)可以滿足客戶的需求了。
[root@k8s-master ~]# service iptables reload

(3),更改ssh端口22為其他端口

1,有兩種更改策略,一種是保持SeLinux和防火墻開(kāi)著的情況下去進(jìn)一步做修改

2,另外一種是將SeLinux和防火墻直接關(guān)閉,然后去修改對(duì)應(yīng)的端口即可,此時(shí)就在重啟sshd服務(wù)的時(shí)候就不會(huì)報(bào)錯(cuò)了。

1),備份ssh配置文件

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

2),修改配置文件

sudo vi /etc/ssh/sshd_config

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#Port 22
Port 19880
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

3),通過(guò) SELinux 啟用新創(chuàng)建的端口

默認(rèn)情況下,SELinux 只允許端口 22 用于 SSH,現(xiàn)在需要做的是通過(guò) SELinux 啟用新創(chuàng)建的端口;

其實(shí)最簡(jiǎn)答的方式是直接將SeLinux關(guān)閉,然后去更換端口,從而實(shí)現(xiàn)不安裝依賴的方式實(shí)現(xiàn)端口的轉(zhuǎn)換。

## 先安裝依賴
## 防止出現(xiàn)報(bào)錯(cuò):如果執(zhí)行以上命令后報(bào)錯(cuò):semanage command not found,執(zhí)行這條命令來(lái)安裝 semanage
sudo yum -y install policycoreutils-python
# 通過(guò)SeLinux放行19880端口
sudo semanage port -a -t ssh_port_t -p tcp 19880

4),通過(guò)防火墻開(kāi)啟端口號(hào)

## 添加防火墻規(guī)則--端口
sudo firewall-cmd --permanent --zone=public --add-port=19880/tcp

## 重新加載防火墻
sudo firewall-cmd --reload

## 查看當(dāng)前開(kāi)放的端口
firewall-cmd --list-ports

5),重啟ssh服務(wù)

sudo systemctl restart sshd.service

## 驗(yàn)證端口是否生效
systemctl status sshd.service

6),驗(yàn)證服務(wù)是否在新端口上運(yùn)行

ss -tnlp | grep ssh

7),測(cè)試使用指定端口登錄

ssh root@192.168.0.1 -p 19880

8),補(bǔ)充:

此時(shí)是直接在配置文件中將22端口關(guān)閉了,也可以再單獨(dú)配置關(guān)閉22端口;

其他參考地址:

1,更改 CentOS 7 默認(rèn)的 SSH 端口

2,修改Centos7 SSH 端口

8.其他命令整理

1.nohup命令詳解

nohup command > /dev/null 2>&1 &

  • 1.nohup命令:如果你正在運(yùn)行一個(gè)進(jìn)程,而且你覺(jué)得在退出帳戶時(shí)該進(jìn)程還不會(huì)結(jié)束,那么可以使用nohup命令。該命令可以在你退出帳戶/關(guān)閉終端之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程。nohup就是不掛起的意思( nohang up)。
  • 2."& 1" 更準(zhǔn)確的說(shuō)應(yīng)該是文件描述符 1,而 1 一般代表的就是STDOUT_FILENO,實(shí)際上這個(gè)操作就是一個(gè)dup2(2)調(diào)用.他標(biāo)準(zhǔn)輸出到all_result ,然后復(fù)制標(biāo)準(zhǔn)輸出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一個(gè)文件表項(xiàng),也可以說(shuō)錯(cuò)誤的輸出被合并了。
  • 3.STDOUT_FILENO:對(duì)應(yīng)的數(shù)字代表其中:0 表示鍵盤輸入; 1表示屏幕輸出; 2表示錯(cuò)誤輸出.
  • 4."2>&1 &" 是將標(biāo)準(zhǔn)出錯(cuò)重定向到標(biāo)準(zhǔn)輸出,這里的標(biāo)準(zhǔn)輸出已經(jīng)重定向到了/dev/null文件(黑洞文件),即將標(biāo)準(zhǔn)出錯(cuò)也輸出到/dev/null文件中。另外最后一個(gè)& ,是讓該命令在后臺(tái)執(zhí)行。

2.curl的使用

curl 是常用的命令行工具,用來(lái)請(qǐng)求 Web 服務(wù)器。它的名字就是客戶端(client)的 URL 工具的意思。

#### 常用參數(shù)的使用案例
# 1,不帶有任何參數(shù)時(shí),curl 就是發(fā)出 GET 請(qǐng)求。
curl https://www.example.com

# 2,-X參數(shù)指定 HTTP 請(qǐng)求的方法,比如此時(shí)可以發(fā)起post請(qǐng)求
# 注意此時(shí)的協(xié)議名是嚴(yán)格區(qū)分大小寫的
curl -X POST https://www.example.com

# 如果是 http 協(xié)議,可以直接使用 curl www.example.com 發(fā)起 GET 請(qǐng)求

9.linux的零拷貝

詳細(xì)參考鏈接

總結(jié):(kafka面試中常問(wèn))

“零拷貝” 描述的是CPU不執(zhí)行拷貝數(shù)據(jù)從一塊內(nèi)存區(qū)域到另一塊區(qū)域的任務(wù)的計(jì)算機(jī)操作。它通常用于在網(wǎng)絡(luò)上傳輸文件時(shí)節(jié)省CPU周期和內(nèi)存帶寬。簡(jiǎn)單來(lái)說(shuō),零拷貝就是一種避免 CPU 將數(shù)據(jù)從一塊存儲(chǔ)拷貝到另外一塊存儲(chǔ)的技術(shù)

“零拷貝”正是通過(guò)消除這些多余的拷貝來(lái)提升性能的。在數(shù)據(jù)傳輸?shù)倪^(guò)程中,避免數(shù)據(jù)在內(nèi)核空間緩沖區(qū)和用戶空間緩沖區(qū)之間進(jìn)行拷貝,以及數(shù)據(jù)在內(nèi)核空間緩沖區(qū)內(nèi)的CPU拷貝

10.安裝字體

  • 查看已安裝的中文字體
[root@test_basic-jietiao ~]# fc-list :lang=zh
[root@test_basic-jietiao ~]# 

  • 在/usr/fonts目錄下新建文件夾,存放字體文件
[root@test_basic-jietiao fonts]# cd /usr/share/fonts
[root@test_basic-jietiao fonts]# ls
default  dejavu
[root@test_basic-jietiao fonts]# mkdir chinese
[root@test_basic-jietiao fonts]# ls
chinese  default  dejavu

  • 拷貝相關(guān)字體到當(dāng)前新建的目錄中
[root@test_basic-jietiao fonts]# ls chinese
arial unicode ms.ttf  arialuni.ttf  CG Times.ttf  simkai.ttf  simsun.ttc
  • 再次查看
[root@test_basic-jietiao fonts]# fc-list :lang=zh
KaiTi_GB2312,楷體_GB2312:style=Regular
NSimSun,新宋體:style=Regular
SimSun,宋體:style=Regular
Arial Unicode MS:style=Regular,Normal,oby?ejné,Standard,Κανονικ?,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
  • 掃描字體目錄并生成字體信息的緩存
[root@test_basic-jietiao fonts]# fc-cache
[root@test_basic-jietiao fonts]# 

11.幫助文檔

(1).--help

# 一般是linux命令自帶的幫助信息
如:ls --help

(2)man(有問(wèn)題找男人,manual)

# man是linux提供的一個(gè)手冊(cè),包含了絕大部分的命令、函數(shù)使用說(shuō)明
# 該手冊(cè)分成很多章節(jié)(section),使用man時(shí)可以指定不同的章節(jié)來(lái)瀏覽,也可以直接使用"man ? 命令"的形式

例:man ls ; man 2 printf

# man中各個(gè)section意義如下:
Standard commands(標(biāo)準(zhǔn)命令)
System calls(系統(tǒng)調(diào)用,如open,write)
Library functions(庫(kù)函數(shù),如printf,fopen)
Special devices(設(shè)備文件的說(shuō)明,/dev下各種設(shè)備)
File formats(文件格式,如passwd)
Games and toys(游戲和娛樂(lè))
Miscellaneous(雜項(xiàng)、慣例與協(xié)定等,例如Linux檔案系統(tǒng)、網(wǎng)絡(luò)協(xié)定、ASCII 碼;environ全局變量)
Administrative Commands(管理員命令,如ifconfig)
man是按照手冊(cè)的章節(jié)號(hào)的順序進(jìn)行搜索的。
# man設(shè)置了如下的功能鍵:
功能鍵 功能
空格鍵 顯示手冊(cè)頁(yè)的下一屏
Enter鍵 一次滾動(dòng)手冊(cè)頁(yè)的一行
b 回滾一屏
f 前滾一屏
q 退出man命令
h 列出所有功能鍵
/word 搜索word字符串
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容