什么是程序
一組計算機能識別和執(zhí)行的指令,用于指導計算機執(zhí)行特定任務或解決特定問題。程序通常由代碼、數(shù)據(jù)和資源文件組成,涉及語法、算法和數(shù)據(jù)結構。為二進制文件
什么是進程
是一個具有獨立功能的程序關于某個數(shù)據(jù)集合的一次運行活動。作為系統(tǒng)進行資源分配和調度的基本單位,是操作系統(tǒng)結構的基礎。
程序與進程的關系
進程的狀態(tài)
基礎進程狀態(tài)
創(chuàng)建狀態(tài):進程在創(chuàng)建時需要申請一個空白PCB(process control block進程控制塊),向其中填寫控制和管理進程的信息,完成資源分配。如果創(chuàng)建工作無法完成,比如資源無法滿足,就無法被調度運行,把此時進程所處狀態(tài)稱為創(chuàng)建狀態(tài)
就緒狀態(tài):進程已準備好,已分配到所需資源,只要分配到CPU就能夠立即運行
執(zhí)行狀態(tài):進程處于就緒狀態(tài)被調度后,進程進入執(zhí)行狀態(tài)
阻塞狀態(tài):正在執(zhí)行的進程由于某些事件(I/O請求,申請緩存區(qū)失?。┒鴷簳r無法運行,進程受到阻塞。在滿足請求時進入就緒狀態(tài)等待系統(tǒng)調用
終止狀態(tài):進程結束,或出現(xiàn)錯誤,或被系統(tǒng)終止,進入終止狀態(tài)。無法再執(zhí)行
更多的狀態(tài)
運行態(tài):running
就緒態(tài):ready
睡眠態(tài):分為兩種,可中斷:interruptable,不可中斷:uninterruptable
停止態(tài):stopped,暫停于內存,但不會被調度,除非手動啟動
僵尸態(tài):zombie,僵尸態(tài),結束進程,父進程結束前,子進程不關閉,殺死父進程可以關閉僵死態(tài) 的子進程
如何結束僵尸態(tài)
創(chuàng)建僵尸進程
利用top或ps指令查看僵尸態(tài)進程(Z)PID號
利用kill發(fā)送指令喚醒僵尸進程的父進程來實現(xiàn)回收僵尸進程
[root@localhost ~]# kill -18 6904
也可以通過殺死僵尸進程的夫進程,但不建議使用。
進程的類型
守護進程: daemon,在系統(tǒng)引導過程中啟動的進程,和終端無關進程
前臺進程:跟終端相關,通過終端啟動的進程
進程的優(yōu)先級
靜態(tài)優(yōu)先級:100-139
動態(tài)優(yōu)先級:-20 --19
進程管理相關命令
ps
查看靜態(tài)的進程統(tǒng)計信息
進程相關信息保存在/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 | 進程狀態(tài) |
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
實時查看進程統(tǒng)計信息
[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:優(yōu)先級,數(shù)值越小優(yōu)先級越高。
NI:優(yōu)先級,數(shù)值越小、優(yōu)先級越高。
VIRT:該進程使用的虛擬內存的大小,單位為 KB。
RES:該進程使用的物理內存的大小,單位為 KB。
SHR:共享內存大小,單位為 KB。
S:進程狀態(tài)。
%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 顯示啟動每個進程對應的完整指令,包括啟動進程的路徑、參數(shù)等
-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
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性能狀態(tài)數(shù)據(jù)
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
查看網(wǎng)絡流量
進程管理
手動啟動
"命令 &",把命令放入后臺執(zhí)行
運行中的作業(yè): Ctrl+z 放到后臺 但是會停止作業(yè)
尚未啟動的作業(yè): 命令 &
查看后臺任務列表 :jobs
調出后臺任務: fg
繼續(xù)任務:bg
并行執(zhí)行任務:每個命令使用&隔開
結束進程
kill
kill 命令只是用來向進程發(fā)送一個信號,至于這個信號是什么,是用戶指定的
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文章
11509瀏覽量
213748 -
程序
+關注
關注
117文章
3826瀏覽量
82965 -
進程
+關注
關注
0文章
207瀏覽量
14278
原文標題:深入解析Linux程序與進程:你不知道的高效運行秘訣
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
Linux進程狀態(tài)詳解

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

深入探討Linux系統(tǒng)中的動態(tài)鏈接庫機制

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

一文搞懂Linux進程的睡眠和喚醒
Linux用戶身份與進程權限詳解

LSP 2.10 DaVinci Linux驅動程序

Linux設備驅動程序分類有哪些
linux驅動程序如何加載進內核
linux驅動程序的編譯方法是什么
深入探討Linux的進程調度器

評論