Linux運維——系統管理

Linux運維——系統管理

一、進程管理

1、進程簡介

1.1、什麼是進程管理

進程是正在執行的一個程序或命令,每一個進程都是一個運行的實體。都有自己的地址空間,並佔用一定的系統資源。

1.2、進程管理的作用

  • 判斷服務器健康裝填。
  • 查看系統中所有的進程
  • 殺死進程

2、進程的查看

2.1PS命令

用來靜態顯示系統中進程的命令。

  • 查看系統中的所有進程,使用BSD操作系統格式
ps aux
  • 查看系統中所有進程,使用Linux標準命令格式
ps -le
  • 常用選項
a	顯示一個終端所有進程,處理繪畫引線
u	顯示進程的歸屬用戶及內存的使用情況
x	顯示沒有控制終端的進程
  • ps aux命令輸出項
    • USER:該進程是由那個用戶產生的
    • PID:進程的ID號
    • %CPU:該進程佔用的cpu資源的百分比
    • %MEM:該進程佔用的物理內存的百分比
    • VSZ:該進程佔用虛擬內存的大小,單位kb
    • RSS:該進程佔用實際物理內存的大小,單位kb
    • TTY:該進程是在那個終端中運行。
      • 其中tty1-7代表本地控制檯終端(可以通過alt+F1-F7鍵切換不同的終端)tty1-6是本地字符界面終端,tty7是圖形終端。
      • pts/0-255代表虛擬終端,一般是遠程連接的終端,第一個遠程連接佔用的是pts/0終端,依次增長。
    • STAT:進程狀態
      • D:不可被喚醒的睡眠狀態,通常用於I/O情況
      • R:該進程正在運行
      • S:該進程正在睡眠狀態,可以被喚醒
      • T:停止狀態,可能是在後臺暫停或進程在除錯狀態
      • Z:殭屍進程。進程已經終止,但是部分程序還在內存當中
      • <:高優先級
      • N:低優先級
      • L:被鎖入內存
      • s:包含子進程
      • l:多線程
      • +:位於後臺
    • START:該進程的啓動時間
    • TIME:該進程佔用CPU的運算時間
    • COMMAND:產生此進程的命令名

2.2TOP命令

  • 命令格式
top [選項]
  • 選項
-d [秒數]:指定top命令每個幾秒更新。
-b:使用批處理模式輸出。一般和“-n”選項合用,用於把top命令重定向到文件名
-n [次數]:指定top命令執行的次數。
-p:指定PID。只查看某個PID的進程
-s:使top在安全模式運行,避免在交互模式中出現錯誤
-u [用戶名]:只監聽某個用戶的進程
  • 交互模式選項
?或h:顯示交互模式的幫助
P:以CPU使用率排序,默認就是此項
M:以內存的使用率排序
N:以PID排序
T:按照CPU的積累運算時間排序,即TIME項排序

統計信息區:

前五行是當前系統情況整體的統計信息區。下面我們看每一行信息的具體意義。

  • 第一行:任務隊列信息,同 uptime 命令的執行結果

    • 14:06:23:當前系統時間
    • up 1 days, 12:44:系統已運行時間
    • 2 users:已登錄用戶數
    • load average: 1.15, 1.42, 1.44:分別爲1分鐘、5分鐘、15分鐘的負載情況。
  • 第二行:Tasks — 任務(進程)

    • Tasks:95total:系統中的進程總數
    • running:運行進程數
    • sleep:休眠進程數
    • stoped:停止進程數
    • zombie:殭屍狀態進程數
  • 第三行:cpu狀態信息

    • 5.9%us:用戶空間佔用CPU的百分比。

    • 3.4% sy:內核空間佔用CPU的百分比。

    • 0.0% ni:改變過優先級的進程佔用CPU的百分比

    • 90.4% id:空閒CPU百分比

    • 0.0% wa:IO等待佔用CPU的百分比

    • 0.0% hi:硬中斷(Hardware IRQ)佔用CPU的百分比

    • 0.2% si:軟中斷(Software Interrupts)佔用CPU的百分比

  • 第四行:內存狀態

    • 32949016k total:物理內存總量

    • 14411180k used:使用中的內存總量

    • 18537836k free:空閒內存總量

    • 169884k buffers:緩存的內存量

  • 第五行:swap交換分區信息

    • 32764556k total:交換區總量

    • 0k used:使用的交換區總量

    • 32764556k free:空閒交換區總量

    • 3612636k cached:緩衝的交換區總量

  • 七行以下:各進程(任務)的狀態監控

    • PID:進程id
    • USER:進程所有者
    • PR:進程優先級
    • NI:nice值。負值表示高優先級,正值表示低優先級
    • VIRT:進程使用的虛擬內存總量,單位kb。
    • RES:進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
    • SHR:共享內存大小,單位kb
    • S:進程狀態
      • D=不可中斷的睡眠狀態
      • R=運行
      • S=睡眠
      • T=跟蹤/停止
      • Z=殭屍進程
    • %CPU:上次更新到現在的CPU時間佔用百分比
    • %MEM:進程使用的物理內存百分比
    • TIME+:進程使用的CPU時間總計,單位1/100秒
    • COMMAND:進程名稱(命令名/命令行)

2.3pstree命令

  • 格式
pstree [選項]
  • 選項
-p:顯示進程的PID
-u:顯示進程的所屬用戶

3、進程管理

  • 系統中可以識別的型號較多,可以使用命令kill -lman 7 signal來查詢。
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	
  • 常用信號
1)SIGHUP 重啓
9)SIGKILL 強制終止

3.1KILL命令

  • 格式
kill [信號] PID

3.2killall命令

使用進程名結束進程,通常用於殺死一類進程

  • 格式
killall [選項] [信號] 進程名
  • 選項
-i:交互式,詢問是否要殺死某個進程
-I:忽略進程名的大小寫

3.3pkill命令

pkill命令和killall命令賠償類似,也是按照進程名來殺死進程。

  • 語法
pkill [選項] [信號] 進程名
選項:
-t [終端號]:按照終端號踢出用戶

二、工作管理

1、工作管理簡介

  • 前臺是指當前可以操控和執行命令的操作環境,後臺是指工作可以自行運行,但是不能使用ctrl+c來終止,只能使用fg/bg來調用工作
  • 當前的登錄終端,只能管理當前終端的工作,不能管理其他登錄終端的工作。
  • 後臺的命令可以持續運行一段時間,這樣我們才能捕捉和操作這個工作。
  • 放入後臺的命令不能和前臺用戶有交互或需要前臺輸入,否則放入後臺只能暫停,不能執行。

2、如何將命令放入後臺

2.1使用“命令 &”

在命令後加“空格&”,將命令放入後臺執行。

2.2使用ctrl+z快捷鍵

在命令執行過程中按ctrl+z鍵,後臺將會在後臺暫停。

3、後臺命令管理

3.1查看後臺的工作

jobs [選項]
選項:
-l:顯示工作的PID號

3.2將後臺暫停的工作恢復到前臺執行

fg %工作號

注:%號可以省略,但是注意工作號和PID的區別

3.3將後臺暫停的工作恢復到後臺執行

bg %工作號

4、後臺命令脫離登錄終端運行

  • 將要執行的命令加入/etc/rc.local文件中,讓系統在啓動時執行這個後臺程序。
  • 使用系統定時任務,讓系統在指定的時間執行命令。
  • 使用nohup命令
nohup [命令] &

三、系統資源查看

1、vmstat命令監控系統資源

vmstat [刷新延時單位秒] [刷新次數]
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 357072  24492 309140    0    0   198    46  115  104  2  4 92  2  0	
 0  0      0 357188  24492 309168    0    0     0     0   59   92  0  0 100  0  0	
 0  0      0 357188  24492 309168    0    0     0     0   38   57  0  0 100  0  0

輸出信息:

  • procs:進程信息字段

    • r:等待運行的進程數
    • b:不可被喚醒的進程數量
  • memory:內存信息字段,單位KB

    • swpd:虛擬內存的使用情況
    • free:空閒的內存容量
    • buff:緩衝的內存容量
    • cache:緩存的內存容量
  • swap:交換分區的信息字段,單位KB

    • si:從磁盤中交換到內存中數據的數量
    • so:從內存中交換到磁盤中數據的數量
  • io:磁盤讀寫信息字段,單位塊

    • bi:從塊設備讀入數據的總量
    • bo:寫入到塊設備的數據的總量
  • system:系統信息字段

    • in:每秒被中斷的進程次數
    • cs:每秒鐘進行的事件切換次數
  • cpu:cpu信息字段

    • us:非內核進程消耗cpu運算時間的百分比
    • sy:內核進程消耗cpu運算時間的百分比
    • id:空閒cpu的百分比
    • wa:等待io所消耗的cpu百分比
    • st:被虛擬機所盜用的cpu佔比

2、dmesg顯示開機時內核檢測信息

dmesg | grep cpu
dmesg | grep eth0

3、free命令查看內存使用狀態

free [選項]
-b:以字節爲單位顯示
-k:以KB爲單位顯示(默認)
-m:以MB爲單位顯示
-g:以GB爲單位顯示
-h:根據大小添加的單位

              total        used        free      shared  buff/cache   available
Mem:           1.8G        1.1G         77M        1.7M        604M        531M
Swap:            0B          0B          0B

輸出信息

  • total:總內存數
  • used:使用的內存數
  • free:空閒的內存數
  • shared:多個進程共享的內存數
  • buffers:緩衝內存數
  • cached:緩存的內存數

4、查看CPU信息

cpu信息保存在/proc/cpuinfo

processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 85
model name	: Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
stepping	: 4
microcode	: 0x1
cpu MHz		: 2500.008
cache size	: 33792 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 spec_ctrl intel_stibp
bogomips	: 5000.01
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:

5、查看本機登陸用戶信息

5.1、w命令

w
 19:46:56 up 44 days, 11:17,  1 user,  load average: 0.16, 0.11, 0.13
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    xxx.xxx.xxx.xxx   19:21    0.00s  0.02s  0.00s w
  • 第一行
    • 系統時間
    • 運行時間
    • 用戶登陸數
    • 1分鐘、5分鐘、15分鐘前的平均負載
  • 第二行
    • USER:登陸的用戶名
    • TTY:登陸終端
    • FROM:從哪個IP地址登陸
    • LOGIN@:登陸時間
    • IDLE:用戶閒置時間
    • JCPU:和該終端連接的所有進程佔用的CPU運算時間
    • PCPU:當前進程所佔用的CPU運算時間
    • WHAT:當前正在運行的命令

5.2、who命令

查看系統中已經登錄的用戶

who
root     pts/0        2020-05-08 19:21 (xxx.xxx.xxx.xxx)

6、uptime命令

顯示系統的啓動時間和平均負載,即top命令的第一行

uptime
19:56:01 up 44 days, 11:26,  1 user,  load average: 0.45, 0.15, 0.14

7、查看系統與內核相關信息

uname命令查看

uname [選項]
-a:查看系統所有相關信息
-r:查看內核版本
-s:查看內核名稱

使用file命令判斷當前系統位數

file /bin/ls

[root@localhost ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

使用lsb_release -a查看當前Linux系統的發行版本

lsb_release -a

LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.7.1908 (Core)
Release:	7.7.1908
Codename:	Core

四、系統定時任務

1、一次性執行定時任務

1.1、at服務管理與訪問控制

at命令需要atd服務的支持

  • 查看atd服務狀態
service atd status 

atd服務啓動後,at命令纔可以正常使用。at訪問控制文件爲/etc/at.allow文件(白名單)和/etc/at.deny文件(黑名單)

  • 若系統中存在/etc/at.allow文件,那麼只有寫入/etc/at.allow文件的用戶可以使用at命令,/etc/at.deny文件會被忽略。
  • 若系統中沒有/etc/at.allow文件,只有/etc/at.deny文件,則在黑名單文件中的用戶不可以使用at命令。注:對root用戶不生效。
  • 若系統中兩個文件都不存在,那麼只有root用戶可以使用at命令。

1.2、at命令使用

at [選項] [時間]
-m:當at工作完成後,無論是否命令有輸出,都用email通知執行at命令的用戶
-c [工作號]:顯示該at工作的實際內容
時間:
	HH:MM
	HH:MM YYY-MM-DD
	HH:MM[am|pm] [month] [date]
	HH:MM[am|pm] + [minutes|hours|days|weeks]:在指定的時間基礎上加多久執行
  • 示例
[root@localhost study]# at now + 1 minutes
at> /root/study/hello.sh >> /root/study/hello.txt
at> <EOT>   # 使用ctrl+d保存任務
job 3 at 2020-05-10 12:34
  • 查看at命令任務
at -c [工作號]
......
${SHELL:-/bin/sh} << 'marcinDELIMITER732e1540'
/root/study/hello.sh >> hello.txt

1.3、管理at定時任務

  • 查看任務
atq
2	2020-05-10 12:24 a root
  • 刪除任務
atrm [工作號]

2、循環定時任務

2.1、crond服務管理與訪問控制

crontab命令需要crond服務支持。

  • 查看服務狀態
service crond status

同at命令,/etc/cron.allow白名單,/etc/cron.deny黑名單

2.2、用戶crontab設置

crontab [選項]
-e:編輯定時任務
-l:查詢任務
-r:刪除當前用戶所有任務
-u [用戶名]:修改或刪除其他用戶的任務,只有root用戶可用
  • 示例
crontab -e
* * * * * [需要執行的任務]
“*”分別表示:
	1、一小時當中的第幾分鐘,0~59
	2、一天中的第幾小時,0~23
	3、一個月中的第幾天,1~31
	4、一年中的第幾月,1~12
	5、一週當中的星期幾,0~7,(0和7都表示星期日)
*:表示任意時間
,:表示不連續的時間
-:表示連續的時間範圍
*/n:表示內個多久執行一次
  • 月份的天數需小於29
  • 不要同時設置星期和天數,只要滿足星期或天數中的一個條件任務就會執行

3、anacron

定時任務(cron)不會在關機時執行,anacron就是用來解決這個問題的。anacron會使用一天、七天、一個月作爲檢測週期,用來判斷是否有定時任務在關機時沒有執行。/var/spool/anacron/目錄中保存着anacron上次執行的時間,anacron會去讀取這些文件中的時間,然後和當前時間做比較,若兩個時間的差值超過了anacron的指定時間,就說明定時任務漏掉了沒有執行,這時anacron就會執行漏掉的定時任務。

  • anacron配置文件
vim /etc/anacrontab

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 最大隨機延遲
RANDOM_DELAY=45
# 可以執行的時間範圍
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

執行過程

  • 讀取/var/spool/anacron/cron.daily中的上一次執行anacron執行的時間
  • 和當前時間比較,差值超過一天久智信cron.daily
  • 這個工作只能在指定的時間段執行
  • 強制延遲5分鐘,再次隨機延遲0-45分鐘
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章