以靜態保存在硬盤、光盤等介質中能被計算機識別的可執行代碼和數據。vim
進程是程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操做系統結構的基礎,是在CPU及內存中運行的動態車程序代碼,一個進程能夠建立一個或多個子進程,而這個進程就是它子進程的父進程,每一個進程還包含多個線程。
進程是程序的一次執行過程,是臨時的,有生命期的,是動態產生,動態消亡的;任何進程均可以同其餘進行一塊兒併發執行;進程是系統進行資源分配和調度的一個獨立單位;進程由程序,數據和進程控制塊三部分組成。緩存
在早期的操做系統中並無線程的概念,進程是擁有資源和獨立運行的最小單位,也是程序執行的最小單位。可是,因爲計算機的發展,對CPU的要求愈來愈高,進程之間的切換開銷較大,已經沒法知足愈來愈複雜的程序的要求了。因而就發明了線程,線程是程序執行中一個單一的順序控制流程,是程序執行流的最小單元,是處理器調度和分派的基本單位。併發
- 線程是程序執行的最小單位,而進程是操做系統分配資源的最小單位;
- 一個進程由一個或多個線程組成,線程是一個進程中代碼的不一樣執行路線
- 進程之間相互獨立,但同一進程下的各個線程之間共享程序的內存空間(包括代碼段,數據集,堆等)及一些進程級的資源(如打開文件和信號等),某進程內的線程在其餘進程不可見;
- 線程上下文切換比進程上下文切換要快得多。
咱們能夠看到下圖,首先我們的電腦是由硬件組成,如:主板、CPU、內存、硬盤、顯卡等;而後咱們會在硬件的基礎上給電腦裝上一個系統,它至關於計算機的管理者,它負責任務的調度,資源的分配和管理,統領整個計算機硬件;有了系統咱們才能在電腦上安裝一些不一樣功能的應用程序。而咱們用的VMware虛擬機就是一個運行程序,當咱們運行虛擬機時系統就會建立相關的多個進程,而進程中又分爲多個不一樣的線程。如圖中的VIO、VPU、VMEM的即是不一樣的線程,而這些線程一塊兒組成了一個進程。編輯器
咱們使用不一樣的查看命令所查看到的進程狀態也不一樣。ide
ps命令:----------查看靜態的進程統計信息操作系統
經常使用的命令選項組合:命令行
1.ps aux 命令。線程
a:----------顯示當前終端下的全部進程信息,包括其餘用戶的進程。 u:----------使用以用戶爲主的格式輸出進程信息。 x:----------顯示當前用戶在全部終端下的進程,tty本地終端,ps/0遠程終端。
下面我來解釋一下輸出的進程信息的含義:3d
USER:啓動該進程的用戶帳號名稱 PID:該進程的ID號,在當前系統中是惟一的 TTY:該進程在哪一個終端上運行。「?」表示未知,通常當前終端都是「?」 %CPU:該進程佔用CPU的百分比 %MEM:該進程佔用內存的百分比 VSZ:佔用虛擬內存(swap空間)的大小 RSS:佔用常駐內存(物理內存)的大小 STAT:顯示了進程當前的狀態,如S(可中斷休眠)、s(父進程)、D(不可中斷休眠)、R(運行)、l(多線性進程)Z(殭屍進程)、<(高優先級)、N(低優先級)、+(前臺進程)。 START:該進程啓動的時間 TIME:該進程佔用CPU時間 COMMAND:啓動該進程的命令的名稱
2.ps -elf命令。code
-e:---------顯示系統內的全部進程信息。 -l:----------使用長(long)格式顯示進程信息。 -f:----------使用完整的(full)格式顯示進程信息。
下面我來解釋一下輸出的進程信息的含義:
UID:該進程用戶ID PID:該進程的ID號 PPID:該進程的父進程的ID號 C:該進程的CPU佔用率,以整數表示 PIR:該進程用戶態的優先級 NI:該進程的內核態的優先級(數值範圍-20到19) ADDR:「-」表示進程正在運行 SZ:該進程佔用swap交換分區的總量 WCHAN:該進程在內核中的名稱 STIME:進程的啓動時間 TTY:與進程關聯的終端 TIME:進程佔用CPU的累計時間 CMD:啓動該進程的命令的名稱
3.ps aux | grep login,ps命令用管道操做加上「grep」過濾命令能夠查看指定進程的信息。
top命令:----------查看動態的進程排名信息(3s刷新一次)
下面我解釋一下輸出進程信息所表明的含義:
Tasks(系統任務)信息:total(總進程數),running(正在運行進程數),sleeping(休眠進程數),stopped(停止進程數),zombie(殭屍進程數)。
%CPU信息:us(用戶佔用),sy(內核佔用),ni(優先級調度佔用),id(空閒CPU),wa(I/O等待佔用),hi(硬件中斷佔用),si(軟件中斷佔用),st(虛擬化佔用)。
KiB(單位) Mem(內存)信息:total(總內存空間),free(可以使用內存),used(已用內存),buff/cache(緩存區域)
KiB(單位)Swap(交換空間)信息:total(總交換空間),free(可以使用交換空間),used(已用交換空間),avail Mem(內存使用量)。
在top命令的全屏操做界面中,按[C]鍵根據CPU佔用狀況對進程列表進行排列,或按[M]鍵根據內存佔用狀況進行排列,按[N]鍵根據啓動時間進行排序,按[h]鍵得到top程序的在線幫助信息,按[q]鍵能夠退出top程序。按[k]鍵,而後在列表上方將會出現「PID to kill」的提示信息,根據提示輸入指定進程的PID號可終止對應的進程。
pgrep命令:----------根據特定條件查詢進程PID
經常使用選項:
-l:------------顯示進程名 -U:----------指定特定用戶 -t:-----------指定終端
pstree命令:----------以樹形結構列出進程信息
經常使用選項:
-a:----------顯示詳細信息 -u:----------顯示進程對應的用戶名 -p:----------顯示進程的PID
查看指定用戶進程「樹」,直接用命令「pstree -ap 用戶名」便可。
1.當咱們用前臺啓動複製一個較大的文件時,咱們須要等待操做完成才能進行其它命令的輸入。
2.當咱們後臺啓動時任然能夠進行命令輸入。
at命令:----------設置一次性計劃任務
格式:at ...[HH:MM]...[yyyy-mm-dd] 例如:at 18:00 2019-08-24
[Ctrl+D]鍵:----------------提交計劃任務 atq命令:-------------------查看全部等待執行計劃任務 atrm命令:-----------------刪除等待執行的計劃任務
1.設置一條計劃任務,而後等待執行,時間到達後自動執行成功。
2.設置兩個計劃任務,而後用「atq」命令查看,再用「atrm」命令刪除一個任務。
crontab命令:----------設置週期性計劃任務
經常使用選項:
-e [-u 用戶名] ----------編輯某個用戶的cron服務 -l [-u 用戶名]-----------列出某個用戶cron服務的詳細內容 -r [-u 用戶名]-----------刪除某個用戶的全部cron服務
crontab任務配置的格式:
每一個字段的取值範圍:
時間數值的特殊表示方法:
「 * 」 :表示該範圍內的任意時間 「 ,」:表示間隔的多個不連續時間點 「 - 」 :表示一個連續的時間範圍 「 / 」 :指定間隔的時間頻率
例子:
1.編輯root用戶的cron服務,不指定用戶則是當前用戶。
2.進入cron服務編輯界面,用法與vim編輯器相似。添加一條cron任務後,「wq」保存退出。
3.等到時間到了後,查看/opt/目錄,zhangsan目錄已經複製到/opt/目錄下了。
4.用「-l」選項查看cron任務列表,再用「-r」選項刪除全部cron任務。
(1)[Ctrl+Z]組合鍵:將當前進程掛起,即調入後臺並中止執行。
(2)jobs命令:查看處於後臺的任務列表,結合「-l」選項能夠顯示PID。
(3)fg命令:將後臺進程恢復到前臺運行,可指定任務序號。
(4)bg命令:將後臺中止的任務恢復運行,且繼續在後臺運行。
(1)[Ctrl+C]組合鍵:強制中斷正在執行的命令
(2)kill命令:用於終止指定PID號的進程,須要使用進程的PID號做爲參數,結合「-9」選項能夠強制終止進程。慎用,可能會致使數據丟失。
(3)killall命令:用於終止指定名稱的全部進程,killall命令也有「-9」選項
(4)pkill命令:根據特定條件終止相應的進程
經常使用選項:(大部分選項與pgrep命令基本相似)
-U:-------------根據進程所屬的用戶名終止相應進程 -t:--------------根據進程所在的終端終止相應進程 -9:-------------強制終止進程
1.能夠看到咱們再終端用zhangsan用戶登陸。
2.此時咱們在遠程終端用pkill命令強制關閉zhangsan用戶的全部進程。
3.而此時終端上的zhangsan用戶已經被強制註銷了。