Linux--進程和計劃任務管理

一:程序,進程,線程之間的關係
1.1:進程概述:
進程(Process)是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。在早期面向進程設計的計算機結構中,進程是程序的基本執行實體;在當代面向線程設計的計算機結構中,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體。
二:查看進程:
ps命令,查看靜態的進程統計信息(Processes Statistic):

ps命令基本格式
ps [選項]  注意:有一些選項時不帶“-”前綴的(添加“-”前綴後含義可能會有出入)
a  顯示當前終端下的所有進程信息,包括其他用戶的進程、與“x”選項結合時將顯示系統中所有的進程信息
u  使用以用戶爲主的格式輸出進程信息
x  顯示當前用戶在所有終端下的進程信息
-e 顯示系統內的所有進程信息
-l 使用長(Long)格式顯示進程信息
-f 使用完整的(Full)格式顯示進程信息

ps aux命令 以簡單列表的形式顯示出進程信息:

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.2  0.3 193700  6836 ?        Ss   22:38   0:01 /usr/lib/systemd/syst
root          2  0.0  0.0      0     0 ?        S    22:38   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    22:38   0:00 [ksoftirqd/0]
root          4  0.0  0.0      0     0 ?        S    22:38   0:00 [kworker/0:0]
root          5  0.0  0.0      0     0 ?        S<   22:38   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    22:38   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    22:38   0:00 [rcu_bh]
..以下省略部分內容


ps -elf 命令:以長格式顯示系統中的進程信息:

[root@localhost ~]# ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 - 32041 ep_pol 23:04 ?        00:00:00 /usr/l
1 S root          2      0  0  80   0 -     0 kthrea 23:04 ?        00:00:00 [kthre
1 S root          3      2  0  80   0 -     0 smpboo 23:04 ?        00:00:00 [ksoft
1 S root          4      2  0  80   0 -     0 worker 23:04 ?        00:00:00 [kwork
1 S root          5      2  0  60 -20 -     0 worker 23:04 ?        00:00:00 [kwork
1 S root          6      2  0  80   0 -     0 worker 23:04 ?        00:00:00 [kwork
1 S root          7      2  0 -40   - -     0 smpboo 23:04 ?        00:00:00 [migra
1 S root          8      2  0  80   0 -     0 rcu_gp 23:04 ?        00:00:00 [rcu_b
1 R root          9      2  0  80   0 -     0 -      23:04 ?        00:00:00 [rcu_s
..此處省略部分信息

ps aux | grep "bash"命令:

[root@localhost ~]# ps aux | grep "bash"
root        655  0.0  0.0 115256   924 ?        S    23:04   0:00 /bin/bash /usr/sbin/ksmtuned
root       1791  0.0  0.0  51332   580 ?        Ss   23:05   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
root       2422  0.0  0.1 116300  2864 pts/0    Ss+  23:05   0:00 bash
root       2482  0.0  0.1 116044  2776 pts/1    Ss   23:06   0:00 -bash
root       2536  0.0  0.0 112680   984 pts/1    S+   23:07   0:00 grep --color=auto bash


動態查看 top命令:

top - 23:17:10 up 12 min,  3 users,  load average: 0.00, 0.04, 0.06
Tasks: 185 total,   1 running, 184 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.7 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1867024 total,   670880 free,   669584 used,   526560 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.   986308 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND       
  1833 root      20   0 1624108 168500  51624 S  0.0  9.0   0:02.26 gnome-shell   
  1983 root      20   0 1100816  63532  20704 S  0.0  3.4   0:00.10 evolution-cal+
  2083 root      20   0 1202856  59344  19216 S  0.0  3.2   0:00.08 evolution-cal+
  2040 root      20   0 1040248  59132  19108 S  0.0  3.2   0:00.06 evolution-cal+
  1994 root      20   0  884268  32724  14160 S  0.0  1.8   0:00.31 gnome-software
  1392 root      20   0  288368  30804  10276 S  0.0  1.6   0:00.40 X             
  1965 root      20   0 1026108  30296  18916 S  0.0  1.6   0:00.20 nautilus-desk+

查看進程信息 pgrep 和 pstree:

“-l”選項顯示進程名
[root@localhost ~]# pgrep -l "log"		'//查詢進程名中包含“log”的進程及其PID號'
282 xfs-log/sda2
444 xfs-log/sda5
445 xfs-log/sda1
555 systemd-logind
561 abrt-watch-log
580 abrt-watch-log
597 rsyslogd
640 mcelog


pstree命令:

[root@localhost ~]# pstree -aup		'//查看當前系統的進程樹(包括各進程對應的PID號,用戶名,完整命令等信息)'
systemd,1 --switched-root --system --deserialize 21
  ├─ModemManager,601
  │   ├─{ModemManager},631
  │   └─{ModemManager},635
  ├─NetworkManager,667 --no-daemon
  │   ├─dhclient,791 -d -q -sf /usr/libexec/nm-dhcp-helper -pf...
  │   ├─{NetworkManager},676
  │   └─{NetworkManager},678
..省略部分信息

三:控制進程:
手工啓動:

[root@localhost ~]# cp /dev/cdrom mycd.iso&		'//在後臺運行復制鏡像文件進程'
[1] 3227		'//輸出信息中心包括後臺任務序號,PID號'


改變進程的運行方式:
掛起當前進程 Ctrl+Z 組合鍵:
將當前進程掛起,即調入後臺並停止執行(對於速度緩慢,會耽誤其他操作的進程使用
查看後臺進程 jobs 命令:

查看處於後臺的任務列表。
結合“-l”選項可以同時顯示出該進程對應的PID號
輸出結果中,每一行記錄對應一個後臺進程的狀態信息,行首的數字代表該進程在後臺的任務編號。
若當前終端沒有後臺進程,將不會顯示任何信息

將後臺的進程恢復運行 fg 命令:

將後臺進程恢復到前臺運行,可以指定任務序號
bg(BackGround)命令可以將後臺中暫停執行的任務恢復運行,繼續在後臺執行操作
fg(ForeGround)命令可以將後臺任務恢復到前臺運行
除非後臺任務只有一個,否則bg和fg命令都需要指定後臺進程的任務編號作爲參數

at一次性任務設置:
at命令使用順序

查看時間–>設置時間–>輸入命令–>Ctrl + D提交任務

date:查看當前時間。設置任務,時間不可在當前時間之前

命令輸入完成後按 Ctrl + D組合鍵提交任務即可

[root@localhost ~]# date		'//查看當前時間'
2019年 11月 13日 星期三 00:45:58 CST
[root@localhost ~]# at 00:48 2019-11-13 		'//設置任務執行時間'
at> pgrep -U root |wc -l > /tmp/ps.root			'//輸入命令(統計該時間點系統中由root用戶運行的進程數量,並將數值保存到/tmp/ps.root文件中)'
at> <EOT>		'//按Ctrl + D組合鍵提交任務'
job 1 at Wed Nov 13 00:48:00 2019
[root@localhost ~]# cat /tmp/ps.root		'//查看任務完成情況'
175


crontab週期性任務設置:

5.1.1: /etc/crontab 全局配置文件

全局配置文件

/etc/crontab 文件中設置的是維護Linux系統所需的任務

Linux系統及相關程序在安裝時自動設置

不建議用戶手動修改此文
[root@localhost ~]# cat /etc/crontab		'//查看系統任務配置文件'
SHELL=/bin/bash				'//設置執行計劃任務的Shell環境'
PATH=/sbin:/bin:/usr/sbin:/usr/bin			'//定義可執行命令及程序的路徑'
MAILTO=root				'//將任務輸出信息發送到指定用戶的郵箱'
HOME=/ 			'//執行計劃任務時使用的主目錄'

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)		'//分鐘範圍:0-59'
# |  .------------- hour (0 - 23)		'//小時範圍:0-23'
# |  |  .---------- day of month (1 - 31)		'//一個月的天數範圍:1-31'
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...		'//月數範圍:1-12'
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat		'//一週的天數範圍: 0-6(週日用0或者7表示)'
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed


本章實驗:
在這裏插入圖片描述一、使用kill命令終止postfix服務的運行:
在這裏插入圖片描述二、查找系統中CPU佔用率超過80%的進程,並強行終止該進程:
在這裏插入圖片描述有超過80%的用“kill-9+進程號”即可刪除》
三、每週一早上7:50自動清空FTP服務器“/var/ftp/pub”中數據:
在這裏插入圖片描述四、每天晚上的10:30自動執行任務,完成以下操作
顯示當前的系統時間並查看已掛載磁盤分區的磁盤使用情況
將輸出結果追加到文件/var/log/df.log中,持續觀察硬盤空間變
在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章