目錄
一.遠程連接管理服務SSH
1.1 了解服務端和客戶端
1.2 了解端口號的設定
1.3 了解ssh服務的作用
1.4 ssh搭建服務
二.netstat
2.1 netstat簡介
2.2 netstat命令參數
2.3 常用命令參考
三.進程的檢測與控制
3.1 管道
3.1.1 什么是管道
3.1.2 管道的分類
3.1.3 xargs命令
3.2 進程
3.2.1 什么是進程
3.2.2 進程有什么特點
3.2.3?進程信息查看
3.1 靜態查看 ps命令
3.2 動態查看 top命令
四.時間同步(NTP服務)
五.計劃任務
5.1?計劃任務簡介
5.1.1 crond 與 crontab 的關系
5.1.2 crond服務的安裝與管理
5.1.3 任務調度的分類
5.2 計劃任務創建
一.遠程連接管理服務SSH
1.1 了解服務端和客戶端
服務端:提供服務
客戶端:享受服務
通過 IP地址 和 Port端口號 去找到相對應的服務
1.2 了解端口號的設定
說明:端口號只有整數,范圍是從0 到65535
-
1~255:一般是知名端口號,如:ftp 21號、web 80、ssh 22、telnet 23號等
-
256~1023:通常都是由Unix系統占用來提供特定的服務
-
1024~5000:客戶端的臨時端口,隨機產生大于5000:為互聯網上的其他服務預留
1.3 了解ssh服務的作用
用于Linux下遠程連接管理服務器的安全協議。
功能:遠程管理Linux服務器
-
SSH服務默認端口22
-
SSH服務是C/S架構
服務器端(開啟ssh服務):安裝軟件(openssh-server)
客戶端(專門的客戶端工具): windows:SecureCRT 、 MobaXterm linux:openssh-clients ssh/scp
1.4 ssh搭建服務
Ⅰ ssh服務設置
systemctl status sshd 查看狀態
systemctl stop sshd 關閉服務
systemctl start sshd 開啟服務
systemctl restart sshd 重啟服務
systemctl disable sshd 不自啟
systemctl enable sshd 自啟
Ⅱ ssh端口設置
netstat -ntap 查看端口
修改ssh服務端口vim /etc/ssh/sshd_config#在文件中添加以下行即可
Port 端口號重啟服務
systemctl restart sshd
二.netstat
2.1 netstat簡介
netstat 命令用于顯示各種網絡相關信息,如網絡連接,路由表,接口狀態(Interface Statistics),masquerade連接,多播成員(Multicast Memberships)等。
命令的輸出有兩部分,第一部分是Active Internet connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指的是接收隊列和發送隊列,這些數字一般都應該是0,如果不是則表示軟件包正在隊列中堆積。
第二部分是Active UNIX domain sockets,稱為有源Unix域套接口(和網絡套接字一樣,但是只能用于本機通信,性能比網絡套接字高一倍)。Proto顯示連接使用的協議,RefCnt表示連接到本套接口上的進程號,Types顯示套接口的類型,State顯示套接口當前的狀態,Path表示連接到套接口的其它進程使用的路徑名。
2.2 netstat命令參數
注:netstat命令默認是不顯示LISTEN狀態的網絡連接和LISTEING狀態的UNIX域連接,只有使用帶-a或者-l參數的命令才能顯示出來。
Tisp:需安裝net-tools工具才可以使用netstat命令,執行下面這條命令進行安裝 # yum install -y net-tools
-a (all)顯示所有狀態的連接
-t (tcp)僅顯示tcp相關連接
-u (udp)僅顯示udp相關連接
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-l 僅列出有在監聽狀態的連接-p 顯示建立相關鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。
2.3 常用命令參考
Ⅰ 列出所有連接(包括監聽和為監聽狀態)
命令:netstat -a;列出所有狀態下的連接命令:netstat -at;列出所有狀態下的tcp連接命令:netstat -au;列出所有狀態下的udp連接 命令:netstat -ax;列出所有狀態下的UNINX域連接
Ⅱ 列出處于LISTEN狀態的連接
命令:netstat -l;列出所有處于LISTEN狀態的連接命令:netstat -lt;列出所有處于LISTEN狀態的tcp連接命令:netstat -lu;列出所有處于LISTEN狀態的udp連接命令:netstat-lx;列出所有處于LISTENING狀態的UNIX域連接
Ⅲ 統計通信協議連接信息
命令:netstat -s;統計所有連接的通信協議連接信息命令:netstat -st;統計基于tcp連接的通信協議連接信息命令:netstat -su;統計基于udp連接的通信協議連接信息
Ⅳ 輸出中顯示進程ID和進程名信息(可搭配其他參數使用)
命令:netstat -p;列出除LISTEN和LISTENING狀態下的連接,包含連接所屬進程的進程ID和進程名命令:netstat -tp;列出除LISTEN和LISTENING狀態下的tcp連接,包含連接所屬進程的進程ID和進程名命令:netstat -up;列出除LISTEN和LISTENING狀態下的udp連接,包含連接所屬進程的進程ID和進程名
Ⅵ 動態輸出連續信息
命令:netstat -c;每間隔一秒輸出當前連接信息
Ⅶ 列出特定的連續
命令:netstat -ap|grep postgres
三.進程的檢測與控制
3.1 管道
3.1.1 什么是管道
管道,指在類UNIX系統中,進程之間通訊的一種方式或機制。管道,也指一種特殊的文件,叫管道文件。
3.1.2 管道的分類
Ⅰ 匿名管道
匿名管道,顧名思義,就是沒有名字的管道,常常用于父子關系的進程之間通訊一種方式。匿名管道,在bash中,用符號"|"來表示。在同一個終端通訊。
匿名管道作用:將上一個命令所執行的結果(標準輸出)作為下一條命令的標準輸入
示列 : rpm -qa | grep openssh grep "password" /var/log/mysqld.log 在指定文件中查詢 password 關鍵字
Ⅱ 命名管道
命名管道,顧名思義,就是有名字的管道,既可以用于任何進程之間通訊。
命名管道,可以使用mk?fo命令創建。
[root@localhost ~]# mkfifo /tmp/p_file //創建一個命名管道文件
[root@localhost ~]# file /tmp/p_file //判斷該文件的類型
/tmp/p_file: fifo (named pipe)
[root@localhost ~]# ll /tmp/p_file
prw-rw-r--. 1 root root 0 Mar 10 15:28 /tmp/p_file
[root@localhost ~]# tty
/dev/pts/1
[root@localhost ~]# echo "hello world" > /tmp/p_file
[root@localhost ~]# tty
/dev/pts/2
[root@localhost ~]# cat /tmp/p_file
hello world
[root@localhost ~]#
3.1.3 xargs命令
xargs: 將上一條命令所執行的結果作為下一條命令的參數
命令 [可選項] 參數
[root@localhost ~]# ls -l /root
命令:整條shell命令的主體
選項:會影響或微調命令的行為
參數:命令作用的對象舉例說明:
cat -n filename
命令 選項 參數常見選項
-n:指定單行顯示的參數個數
-d:定義分割符,默認是以空格和換行符[root@localhost ~]# cat 1.txt
a b c d
10.1.1.254
A B C[root@localhost ~]# cat 1.txt |xargs -n 3
a b c
d 10.1.1.254 A
B C[root@localhost ~]# cat 1.txt |xargs -n 4
a b c d
10.1.1.254 A B C[root@localhost ~]# cat 1.txt |xargs -d'\t' -n 3
a b c d
10.1.1.254
A B C[root@localhost ~]# cat 1.txt |xargs -d'.' -n 3
a b c d
10 1 1
254
A B C
3.2 進程
3.2.1 什么是進程
進程,由程序產生,是正在運行的程序,或者說是已啟動的可執行程序的運行實例。
進程,具有自己的生命周期和各種不同的狀態。?
3.2.2 進程有什么特點
-
獨立性 進程是系統中獨立存在的實體,它可以擁有自己的獨立資源,每一個進程都有自己的私有地址空間; 在沒有經過進程本身允許的情況下,一個用戶進程不可以直接訪問其他進程的地址空間。
-
動態性 進程與程序的區別在于,程序只是一個靜態的指令集合,而進程是一個正在系統中活動的指令集合; 進程具有自己的生命周期和各種不同的狀態。
-
并發性 多個進程可以在單個處理器上并發執行,多個進程之間不會互相影響。
3.2.3?進程信息查看
3.1 靜態查看 ps命令
Ⅰ 常見組合
ps -ef
ps -eF
ps -ely
ps aux
ps auxf
a 顯示當前終端下的所有進程,包括其他用戶的進程
u 顯示進程擁有者、狀態、資源占用等的詳細信息(注意有“-”和無“-”的區別)
x 顯示沒有控制終端的進程。通常與a這個參數一起使用,可列出較完整信息
o 自定義打印內容
-e 顯示所有進程。
-f 完整輸出顯示進程之間的父子關系
-l 較長、較詳細的將該進程的信息列出
Ⅱ 進程信息解釋說明
USER: 運行進程的用戶
PID: 進程ID
%CPU: CPU占用率
%MEM: 內存占用率
VSZ: 占用虛擬內存
RSS: 占用實際內存,駐留內存
TTY: 進程運行的終端
STAT: 進程狀態,man ps獲取幫助(/STATE)
R 運行
S 可中斷睡眠 Sleep
D 不可中斷睡眠
T 停止的進程
Z 僵尸進程
Ss s進程的領導者,父進程
S< <優先級較高的進程
SN N優先級較低的進程
R+ +表示是前臺的進程組
Sl 以線程的方式運行
START 進程的啟動時間
TIME 進程占用CPU的總時間
COMMAND 進程文件,進程名
其他命令查看進行信息
pidof 查看指定進程的PID
pstree 查看進程樹
3.2 動態查看 top命令
第一部分:統計信息
[root@localhost ~]# top
top - 10:55:44 up 3:19, 2 users, load average: 1.03, 0.50, 2.10
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 1004412k total, 331496k used, 672916k free, 58364k buffers
Swap: 2031608k total, 0k used, 2031608k free, 107896k cached
關注load average:系統1分鐘、5分鐘、15分鐘內的平均負載,判斷一個系統負載是否偏高需要計算單核CPU的平均負載,如下圖,一般以1以內為比較合適的值。偏高說明有比較多的進程在等待使用CPU資源。
計算方法: 平均負載 / 邏輯cpu數量
物理CPU(N路):主板上CPU插槽的個數
CPU核數:一塊CPU上面能處理數據的芯片組的數量
邏輯CPU:一般情況,一顆cpu可以有多核,加上intel的超線程技術(HT), 可以在邏輯上再分一倍數量的cpu core出來;
邏輯CPU數量=物理cpu數量 x cpu核數。如果支持HT,還要更多。
查看物理CPU的個數
# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
查看邏輯CPU的個數
# cat /proc/cpuinfo |grep "processor"|wc -l
查看CPU是幾核
# cat /proc/cpuinfo |grep "cores"|uniq
第三行:當前的CPU運行情況
us 用戶進程占用CPU的比率
sy 內核、內核進程占用CPU的比率;
ni 如果一些用戶進程修改過優先級,這里顯示這些進程占用CPU時間的比率;
id CPU空閑比率,如果系統緩慢而這個值很高,說明系統慢的原因不是CPU負載高;
wa CPU等待執行I/O操作的時間比率,該指標可以用來排查磁盤I/O的問題,通常結合wa和id判斷
hi CPU處理硬件中斷所占時間的比率;
si CPU處理軟件中斷所占時間的比率;
st 其他任務所占CPU時間的比率;
說明:
1. 用戶進程占比高,wa低,說明系統緩慢的原因在于進程占用大量CPU,通常還會伴有教低的id,說明CPU空閑時間很少;
2. wa低,id高,可以排除CPU資源瓶頸的可能。
3. wa高,說明I/O占用了大量的CPU時間,需要檢查交換空間的使用;如果內存充足,但wa很高,說明需要檢查哪個進程占用
了大量的I/O資源。
第二部分:進程信息
Ⅰ 常用按鍵命令
h | ? 幫助
M 按內存的使用排序
P 按CPU使用排序
T 按該進程使用的CPU時間累積排序
k 給某個PID一個信號(signal),默認值是信號15
1 顯示所有CPU的負載
s 改變兩次刷新之間的時間。默認是5秒
q 退出程序
N 以PID的大小排序
R 對排序進行反轉
f 自定義顯示字段
r 重新安排一個進程的優先級別
Ⅱ 常用選項
-d 后面可以接秒數,指定每兩次屏幕信息刷新之間的時間間隔;
-p 指定某個進程來進行監控;
-u 指定進程的擁有者
-b -n 以批處理方式執行top命令。通常使用數據流重定向,將處理結果輸出為文件;
[root@MissHou ~]# top
[root@MissHou ~]# top -d 1
[root@MissHou ~]# top -d 1 -p 10126 查看指定進程的動態信
息
[root@MissHou ~]# top -d 1 -u apache 查看指定用戶的進程
[root@MissHou ~]# top -d 1 -b -n 2 > top.txt 將2次top信息寫入到文件
四.時間同步(NTP服務)
Ⅰ 加載ntpyum install -y ntpⅡ ntp服務設置systemctl status ntpd 查看狀態
systemctl enable ntpd 設置自啟
systemctl start ntpd 開啟服務Ⅲ 查看時間date
五.計劃任務
5.1?計劃任務簡介
crontab 是 Unix 類操作系統(如 Linux)中的一種名為cron(周期性任務調度機制)的配置文件。crontab 文件允許用戶定義周期性運行的命令或腳本。
5.1.1 crond 與 crontab 的關系
crond:是一個系統級的后臺進程,負責根據 crontab 文件中的時間表,周期性地運行用戶定義的任務。它始終在后臺運行并每分鐘檢查任務是否需要執行。
crontab:是用戶用于定義計劃任務的配置文件,包含命令和任務執行的時間表。每個用戶,包括系統用戶,都可以擁有一個 crontab 文件。 因此,要執行crontab命令需要crond服務的支持。
5.1.2 crond服務的安裝與管理
在安裝完成操作系統后,默認會安裝 crond 服務工具,且 crond 服務默認就是自啟動的,若需要安裝則執行如下命令:
Ⅰ 安裝yum install -y crontabsⅡ 管理systemctl start crond 開啟服務
systemctl enable crond 設置自啟
systemctl stop crond 停止服務
systemctl disable crond 取消自啟
systemctl status crond 查看狀態
systemctl restart crond 重啟服務
注意:上述命令適用于大多數使用 systemd 作為初始化系統的 Linux 發行版(如 CentOS 7、RHEL 7、Ubuntu 等)。如果使用的是較老的系統(如 CentOS 6、RHEL 6 等),可以使用 service 命令管理 crond 服務。
5.1.3 任務調度的分類
Ⅰ 系統調度
由系統管理員配置和管理,用于執行系統級別的定時任務,通常涉及系統維護和全局管理,通常存儲在 /etc/crontab 或 /etc/cron.d/ 等目錄中。
格式分鐘 小時 日期 月份 星期 用戶 命令
Ⅱ 用戶調度
由普通用戶自行管理,用于個人需求的定時任務,不影響系統全局環境,通常在?/var/spool/cron/<用戶名>
格式分鐘 小時 日期 月份 星期 命令
5.2 計劃任務創建
特殊字符 | 含義 |
* | 任意時刻 |
- | 表示時間范圍 |
,(逗號) | 分隔時段 |
*/n | 指定時間間隔的頻率,如:每3分鐘執行一次,*/3 |
Ⅰ 系統調度
1.創建并編寫一個執行文件
寫入以下代碼
2.創建對應的文件
3.執行文件,進行測試
4.寫入crontab文件中
Ⅱ 用戶調度
① 需要用到crontab命令,格式如下:
crontab [-u user] [-l | -r | -e]crontab命令參數參數 解釋 示例
-l list 查看定時任務 crontab -l
-e edit 編輯定時任務,建議手動編輯 crontab -e
-i 刪除定時任務,提示用戶確認刪除,避免出錯 crontab -i
-r 刪除定時任務,移除/var/spool/cron/username文件 crontab -r
-u user 指定用戶執行任務,root 可以管理普通用戶計劃任務 crontab -u redhat -l執行crontab 命令就是在修改 /var/spool/cron 中的定時任務文件編輯crontab
[root@he ~]# crontab -e* 寫入的命令格式:每一行書寫一個工作,每個工作共有6個字段
* 代表意義 分鐘 小時 日期 月份 星期 命令
* 數字范圍 0-59 0-23 1-31 1-12 0-7(0和7表示周日) 執行的動作* * * * * command
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └─── 一周中的第幾天 (0 - 7) (0 或 7 表示周日)
│ │ │ └─────── 月份 (1 - 12)
│ │ └──────────── 日期 (1 - 31)
│ └───────────────── 小時 (0 - 23)
└────────────────────── 分鐘 (0 - 59)
② 編寫
[root@he ~]# crontab -e# 點 i 鍵進入編輯模式
輸入以下代碼*/1 * * * * /root/hi.sh # 按 esc 鍵退出編輯模式
# 再輸入 :wq 保存并退出
# 這個創建計劃任務就OK了# 需要注意的是,在用crontab方式創建計劃任務是不用加用戶名的,而直接修改crontab文件是需要加用戶名的