女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深入解析Linux程序與進程

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2024-12-18 11:01 ? 次閱讀

什么是程序

一組計算機能識別和執行的指令,用于指導計算機執行特定任務或解決特定問題。程序通常由代碼、數據和資源文件組成,涉及語法、算法和數據結構。為二進制文件

什么是進程

是一個具有獨立功能的程序關于某個數據集合的一次運行活動。作為系統進行資源分配和調度的基本單位,是操作系統結構的基礎。

程序與進程的關系

262b0ea4-bb90-11ef-8732-92fbcf53809c.png

進程的狀態

26475186-bb90-11ef-8732-92fbcf53809c.png

基礎進程狀態

創建狀態:進程在創建時需要申請一個空白PCB(process control block進程控制塊),向其中填寫控制和管理進程的信息,完成資源分配。如果創建工作無法完成,比如資源無法滿足,就無法被調度運行,把此時進程所處狀態稱為創建狀態

就緒狀態:進程已準備好,已分配到所需資源,只要分配到CPU就能夠立即運行

執行狀態:進程處于就緒狀態被調度后,進程進入執行狀態

阻塞狀態:正在執行的進程由于某些事件(I/O請求,申請緩存區失?。┒鴷簳r無法運行,進程受到阻塞。在滿足請求時進入就緒狀態等待系統調用

終止狀態:進程結束,或出現錯誤,或被系統終止,進入終止狀態。無法再執行

更多的狀態

運行態:running

就緒態:ready

睡眠態:分為兩種,可中斷:interruptable,不可中斷:uninterruptable

停止態:stopped,暫停于內存,但不會被調度,除非手動啟動

僵尸態:zombie,僵尸態,結束進程,父進程結束前,子進程不關閉,殺死父進程可以關閉僵死態 的子進程

如何結束僵尸態

創建僵尸進程

26644a52-bb90-11ef-8732-92fbcf53809c.png

利用top或ps指令查看僵尸態進程(Z)PID號

2678cda6-bb90-11ef-8732-92fbcf53809c.png

利用kill發送指令喚醒僵尸進程的父進程來實現回收僵尸進程

[root@localhost ~]# kill -18 6904

268844ca-bb90-11ef-8732-92fbcf53809c.png

也可以通過殺死僵尸進程的夫進程,但不建議使用。

進程的類型

守護進程: daemon,在系統引導過程中啟動的進程,和終端無關進程

前臺進程:跟終端相關,通過終端啟動的進程

進程的優先級

靜態優先級:100-139

動態優先級:-20 --19

進程管理相關命令

ps

查看靜態的進程統計信息

進程相關信息保存在/proc目錄中

若ps不加選項,查看不到多少信息

[root@localhost ~]# ps
   PID TTY          TIME CMD
  6950 pts/2    0000 bash
  7441 pts/2    0000 ps

一般使用指令:ps aux

選項

a 顯示所以進程信息
u 以用戶為主的格式輸出
x 顯示當前用戶在所有終端下的進程信息
k|--sort 屬性 對屬性排序,屬性前加 - 表示倒序

ps輸出屬性

[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 193700 6852 ? Ss 12:53 0:02 /usr/lib/systemd/systemd
root 2 0.0 0.0 0 0 ? S 12:53 0:00 [kthreadd]

user 進程用戶
PID pid號
%CPU CPU的使用率
%MEM 內存的使用率
VSZ 虛擬內存大小
RSS 真實內存大小
TTY 終端設備
STAT 進程狀態
START 進程啟動時間
TIME 進程運行了多少時間
COMMAND 進程命令名稱

查看進程信息

prstat PID號

[root@localhost ~]# prtstat 6900
Process: sshd          State: S (sleeping)
  CPU#:  1  TTY: 0:0Threads: 1
Process, Group and Session IDs
  Process ID: 6900  Parent ID: 1152
    Group ID: 6900 Session ID: 6900
  T Group ID: -1

Page Faults
  This Process    (minor major):     1741         3
  Child Processes (minor major):     1384         1
CPU Times
  This Process    (user system guest blkio):   0.00   0.18   0.00   0.00
  Child processes (user system guest):         0.01   0.00   0.00
Memory
  Vsize:       151 MB    
  RSS:         5357 kB     RSS Limit: 18446744073709 MB
  Code Start:  0x5644f8c0d000 Code Stop:  0x5644f8cd4a24
  Stack Start: 0x7ffc51c00f00
  Stack Pointer (ESP): 0x7ffc51c003f8 Inst Pointer (EIP): 0x7fb109e23783
Scheduling
  Policy: normal
  Nice:   0  RT Priority: 0 (non RT)

top

實時查看進程統計信息

[root@localhost ~]# top
top - 17:01:45 up  4:08,  4 users,  load average: 0.00, 0.01, 0.05
Tasks: 209 total,   1 running, 208 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1867048 total,    76652 free,   796612 used,   993784 buff/cache
KiB Swap:  2097148 total,  2097004 free,      144 used.   810116 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND             
   430 root      20   0       0      0      0 S   0.3  0.0   0:01.72 xfsaild/dm-0        
     1 root      20   0  193700   6852   4068 S   0.0  0.4   0:02.61 systemd             
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd            
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.02 ksoftirqd/0         
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H        
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 migration/0         
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh              
     9 root      20   0       0      0      0 S   0.0  0.0   0:00.65 rcu_sched           
    10 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 watchdog/0          
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.05 watchdog/1          
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 migration/1         
    13 root      20   0       0      0      0 S   0.0  0.0   0:00.07 ksoftirqd/1         
    15 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H        
    16 root      rt   0       0      0      0 S   0.0  0.0   0:00.05 watchdog/2          
    17 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 migration/2         
    18 root      20   0       0      0      0 S   0.0  0.0   0:00.01 ksoftirqd/2         
    19 root      20   0       0      0      0 S   0.0  0.0   0:00.03 kworker/2:0         
    20 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H        
    21 root      rt   0       0      0      0 S   0.0  0.0   0:00.04 watchdog/3          
    22 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 migration/3         
    23 root      20   0       0      0      0 S   0.0  0.0   0:00.01 ksoftirqd/3         
    25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/3:0H        
    27 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs           
    28 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns               
    29 root      20   0       0      0      0 S   0.0  0.0   0:00.00 khungtaskd          

各個字段的含義如下:

PID:進程的 ID。

USER:該進程所屬的用戶。

PR:優先級,數值越小優先級越高。

NI:優先級,數值越小、優先級越高。

VIRT:該進程使用的虛擬內存的大小,單位為 KB。

RES:該進程使用的物理內存的大小,單位為 KB。

SHR:共享內存大小,單位為 KB。

S:進程狀態。

%CPU:該進程占用 CPU 的百分比。

%MEM:該進程占用內存的百分比。

TIME+:該進程共占用的 CPU 時間。

COMMAND:進程的命令名。

top命令欄位信息簡介
us:用戶空間
sy:內核空間
ni:調整nice時間
id:空閑
wa:等待IO時間
hi:硬中斷
si:軟中斷(模式切換)
st:虛擬機偷走的時間

在top中的命令

q 退出命令
s 修改刷新時間間隔
k 終止指定進程
w 保存文件

pgrep

查看指定的進程

-u 指定用戶
-l 顯示進程命
-a 顯示完整格式的進程名

[root@localhost ~]# pgrep -u asdjkl
9828
9834
9841
9842
9900
9905
9991
10010
10015
10018
10037
[root@localhost ~]# pgrep -u asdjkl -l
9828 gnome-keyring-d
9834 gnome-session-b
9841 dbus-launch
9842 dbus-daemon
9900 gvfsd
9905 gvfsd-fuse
9991 ssh-agent
10010 at-spi-bus-laun
10015 dbus-daemon
[root@localhost ~]# pgrep -u asdjkl -a
9828 /usr/bin/gnome-keyring-daemon --daemonize --login
9834 /usr/libexec/gnome-session-binary --session gnome-classic
9841 dbus-launch --sh-syntax --exit-with-session
9842 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
9900 /usr/libexec/gvfsd
9905 /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
9991 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"

pstree

以樹形結構列出進程信息

常用選項
-a 顯示啟動每個進程對應的完整指令,包括啟動進程的路徑、參數等
-p 顯示PID
-u 顯示用戶切換
-H pid 高亮顯示指定進程及其前輩進程

[root@localhost ~]# pstree -a
systemd --switched-root --system --deserialize 21
  ├─ModemManager
  │   └─2*[{ModemManager}]
  ├─NetworkManager --no-daemon
  │   └─2*[{NetworkManager}]

[root@localhost ~]# pstree -p
systemd(1)─┬─ModemManager(762)─┬─{ModemManager}(785)
           │                   └─{ModemManager}(801)
           ├─NetworkManager(841)─┬─{NetworkManager}(849)
           │                     └─{NetworkManager}(855)
           ├─VGAuthService(750)
           ├─abrt-watch-log(758)
           ├─abrt-watch-log(760)
           ├─abrtd(739)

[root@localhost ~]# pstree -u
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl

26a13520-bb90-11ef-8732-92fbcf53809c.png

free

查看進程占用 內存的詳細信息

[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1867048     1247944      119912       13656      499192      358276
Swap:       2097148        6572     2090576
[root@localhost ~]# 

iostat

iostat 可以提供更豐富的IO性能狀態數據

Total DISK READ :0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:0.00 B/s | Actual DISK WRITE:       0.00 B/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                              
     1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-~tem --deserialize 21
     2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
     3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
     5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
 10246 be/4 asdjkl0.00 B/s    0.00 B/s  0.00 %  0.00 % seapplet
     7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
     8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_bh]
     9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_sched]
    10 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    11 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/1]
    12 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
    13 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]
    15 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/1:0H]
    16 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/2]
    17 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/2]
    18 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/2]
    20 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/2:0H]
    21 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/3]
    22 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/3]

iotop

查看網絡流量

進程管理

手動啟動

"命令 &",把命令放入后臺執行

運行中的作業: Ctrl+z 放到后臺 但是會停止作業

尚未啟動的作業: 命令 &

查看后臺任務列表 :jobs

調出后臺任務: fg

繼續任務:bg

并行執行任務:每個命令使用&隔開

結束進程

kill

kill 命令只是用來向進程發送一個信號,至于這個信號是什么,是用戶指定的

kill后面的選項
[root@localhost ~]# trap -l
 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL10) SIGUSR1
11) SIGSEGV12) SIGUSR213) SIGPIPE14) SIGALRM15) SIGTERM
16) SIGSTKFLT17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP
21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU25) SIGXFSZ
26) SIGVTALRM27) SIGPROF28) SIGWINCH29) SIGIO30) SIGPWR
31) SIGSYS34) SIGRTMIN35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+3
38) SIGRTMIN+439) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8
43) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+1146) SIGRTMIN+1247) SIGRTMIN+13
48) SIGRTMIN+1449) SIGRTMIN+1550) SIGRTMAX-1451) SIGRTMAX-1352) SIGRTMAX-12
53) SIGRTMAX-1154) SIGRTMAX-1055) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-7
58) SIGRTMAX-659) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2
63) SIGRTMAX-164) SIGRTMAX

計劃任務

一次性的計劃任務

[root@localhost ~]# at 13:50
at> mkdir kk
at> 
job 1 at Thu Apr 18 13:50:00 2024
[root@localhost ~]# ls
[root@localhost ~]# ls
123  ??  aa   anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  視頻  圖片  文檔  下載  音樂  桌面
[root@localhost ~]# ls
??   aa               initial-setup-ks.cfg  公共  視頻  文檔  音樂
123  anaconda-ks.cfg  kk     模板  圖片  下載  桌面
您在 /var/spool/mail/root 中有新郵件

周期性的計劃任務

crontab [選項] [file]

選項 功能
-u user 用來設定某個用戶的 crontab 服務,例如 "-u demo" 表示設備 demo 用戶的 crontab 服務,此選項一般有 root 用戶來運行。
-e 編輯某個用戶的 crontab 文件內容。如果不指定用戶,則表示編輯當前用戶的 crontab 文件。
-l 顯示某用戶的 crontab 文件內容,如果不指定用戶,則表示顯示當前用戶的 crontab 文件內容。
-r 從 /var/spool/cron 刪除某用戶的 crontab 文件,如果不指定用戶,則默認刪除當前用戶的 crontab 文件。
-i 在刪除用戶的 crontab 文件時,給確認提示。


*  *  *  *    *
分時日月周

鏈接:https://www.cnblogs.com/zhj0708/p/18143407

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11450

    瀏覽量

    212705
  • 程序
    +關注

    關注

    117

    文章

    3819

    瀏覽量

    82352
  • 進程
    +關注

    關注

    0

    文章

    206

    瀏覽量

    14210

原文標題:深入解析Linux程序與進程:你不知道的高效運行秘訣

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux系統進程管理入門指南

    Linux 系統中,進程是正在運行的程序的實例。理解進程的管理、查看和控制對于系統管理員和開發者來說非常重要
    的頭像 發表于 04-22 14:34 ?275次閱讀
    <b class='flag-5'>Linux</b>系統<b class='flag-5'>進程</b>管理入門指南

    Linux進程狀態詳解

    進程狀態是task_struct內的一個整數;進行:進程在調度隊列中,進程的狀態都是running,阻塞:等待某種設備或者資源就緒。進程是一個隊列,設備也是一個隊列,當我們讀磁盤,讀網
    的頭像 發表于 04-01 09:46 ?255次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>進程</b>狀態詳解

    深入解析:SiP與SoC的技術特點與應用前景

    級芯片)是兩種備受關注的封裝技術。盡管它們都能實現電子系統的小型化、高效化和集成化,但在技術原理、應用場景和未來發展等方面卻存在著顯著的差異。本文將深入解析SiP
    的頭像 發表于 02-14 11:32 ?861次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b>:SiP與SoC的技術特點與應用前景

    深入探討Linux系統中的動態鏈接庫機制

    本文將深入探討Linux系統中的動態鏈接庫機制,這其中包括但不限于全局符號介入、延遲綁定以及地址無關代碼等內容。 引言 在軟件開發過程中,動態庫鏈接問題時常出現,這可能導致符號沖突,從而引起程序運行
    的頭像 發表于 12-18 10:06 ?491次閱讀
    <b class='flag-5'>深入</b>探討<b class='flag-5'>Linux</b>系統中的動態鏈接庫機制

    程序進程的區別

    比如: 開發寫的代碼我們稱為程序,那么將開發的代碼運行起來。我們稱為進程。
    的頭像 發表于 11-25 16:03 ?974次閱讀
    <b class='flag-5'>程序</b>和<b class='flag-5'>進程</b>的區別

    Linux驅動程序程序員指南

    電子發燒友網站提供《Linux驅動程序程序員指南.pdf》資料免費下載
    發表于 11-22 15:53 ?0次下載
    <b class='flag-5'>Linux</b>驅動<b class='flag-5'>程序</b><b class='flag-5'>程序</b>員指南

    深入Linux進程管理:提升效率與穩定性的關鍵方法

    目錄 Linux進程管理 8.1 IO負載 8.2 實時進程監控 5.1 作業與會話 5.2 作業分類 4.1 ps 4.2pstree 4.3pgrep 4.4pidof 4.5 vmstat
    的頭像 發表于 11-22 11:05 ?650次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>Linux</b><b class='flag-5'>進程</b>管理:提升效率與穩定性的關鍵方法

    一文搞懂Linux進程的睡眠和喚醒

    ): 進程在等待某個條件滿足(如I/O操作),可以被信號喚醒。 Linux通過內核提供的系統調用來控制進程的睡眠。常用的系統調用有: sleep(): 使進程暫停指定的秒數。 usl
    發表于 11-04 15:15

    Linux用戶身份與進程權限詳解

    在學習 Linux 系統權限相關的主題時,我們首先關注的基本都是文件的 ugo 權限。ugo 權限信息是文件的屬性,它指明了用戶與文件之間的關系。但是真正操作文件的卻是進程,也就是說用戶所擁有的文件
    的頭像 發表于 10-23 11:41 ?680次閱讀
    <b class='flag-5'>Linux</b>用戶身份與<b class='flag-5'>進程</b>權限詳解

    LSP 2.10 DaVinci Linux驅動程序

    電子發燒友網站提供《LSP 2.10 DaVinci Linux驅動程序.pdf》資料免費下載
    發表于 10-09 09:30 ?0次下載
    LSP 2.10 DaVinci <b class='flag-5'>Linux</b>驅動<b class='flag-5'>程序</b>

    Linux設備驅動程序分類有哪些

    Linux設備驅動程序是操作系統與硬件設備之間的橋梁,負責實現硬件設備與操作系統之間的通信和控制。Linux設備驅動程序的分類繁多,可以根據不同的標準進行分類。 按硬件類型分類
    的頭像 發表于 08-30 15:11 ?1060次閱讀

    linux驅動程序如何加載進內核

    Linux系統中,驅動程序是內核與硬件設備之間的橋梁。它們允許內核與硬件設備進行通信,從而實現對硬件設備的控制和管理。 驅動程序的編寫 驅動程序的編寫是
    的頭像 發表于 08-30 15:02 ?933次閱讀

    linux驅動程序的編譯方法是什么

    Linux驅動程序的編譯方法主要包括兩種: 與內核一起編譯 和 編譯成獨立的內核模塊 。以下是對這兩種方法的介紹: 一、與內核一起編譯 與內核一起編譯意味著將驅動程序的源代碼直接集成到Linu
    的頭像 發表于 08-30 14:46 ?1080次閱讀

    深入解析 MEMS 可編程 LVPECL/LVDS 振蕩器 SiT9120 系列

    深入解析 MEMS 可編程 LVPECL/LVDS 振蕩器 SiT9120 系列
    的頭像 發表于 08-13 16:23 ?715次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b> MEMS 可編程 LVPECL/LVDS 振蕩器 SiT9120 系列

    深入探討Linux進程調度器

    Linux操作系統作為一個開源且廣泛應用的操作系統,其內核設計包含了許多核心功能,而進程調度器(Scheduler)就是其中一個至關重要的模塊。進程調度器負責決定在任何給定的時刻哪個進程
    的頭像 發表于 08-13 13:36 ?1169次閱讀
    <b class='flag-5'>深入</b>探討<b class='flag-5'>Linux</b>的<b class='flag-5'>進程</b>調度器