首页 > 系统相关 >程序与进程

程序与进程

时间:2024-04-18 14:23:50浏览次数:25  
标签:20 -- 0.0 0.00 程序 进程 root

程序与进程

什么是程序

一组计算机能识别和执行的指令,用于指导计算机执行特定任务或解决特定问题。程序通常由代码、数据和资源文件组成,涉及语法、算法和数据结构。为二进制文件

什么是进程

是一个具有独立功能的程序关于某个数据集合的一次运行活动。作为系统进行资源分配和调度的基本单位,是操作系统结构的基础。

程序与进程的关系

进程的状态

基础进程状态

  • 创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
  • 就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
  • 执行状态:进程处于就绪状态被调度后,进程进入执行状态
  • 阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
  • 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

更多的状态

  • 运行态:running
  • 就绪态:ready
  • 睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable
  • 停止态:stopped,暂停于内存,但不会被调度,除非手动启动
  • 僵尸态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态 的子进程
如何结束僵尸态

创建僵尸进程

利用top或ps指令查看僵尸态进程(Z)PID号

利用kill发送指令唤醒僵尸进程的父进程来实现回收僵尸进程

[root@localhost ~]# kill -18 6904

也可以通过杀死僵尸进程的夫进程,但不建议使用。

进程的类型

  • 守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
  • 前台进程:跟终端相关,通过终端启动的进程

进程的优先级

静态优先级:100-139

动态优先级:-20 --19

进程管理相关命令

ps

查看静态的进程统计信息

进程相关信息保存在/proc目录中

若ps不加选项,查看不到多少信息

[root@localhost ~]# ps
   PID TTY          TIME CMD
  6950 pts/2    00:00:00 bash
  7441 pts/2    00:00:00 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:0	Threads: 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

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 asdjkl	0.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) 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	

计划任务

一次性的计划任务
[root@localhost ~]# at 13:50
at> mkdir kk
at> <EOT>
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 文件时,给确认提示。
* 	 *	  *	  *    *
分	时	日	月	周

标签:20,--,0.0,0.00,程序,进程,root
From: https://www.cnblogs.com/zhj0708/p/18143407

相关文章

  • 实验6循环结构程序设计(for语句的应用)
    实验6循环结构程序设计(for语句的应用)一、实验目的1.熟练掌握三种循环语句并能正确运用;2.能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;3.进一步学习程序调试;4.了解中国算法,百钱买百鸡。二、实验硬、软件环境Windows计算机、Devc6.0三、实验内容及步骤实验内容:项目......
  • c语言程序实验——实验报告六
    c语言程序实验————实验报告六实验项目名称:实验报告6循环结构程序设计(for语句的应用)实验项目类型:验证性实验日期:2024年4月15日一、实验目的1.熟练掌握三种循环语句并能正确运用;2.能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;3.进一步学习程序调试;4.了解......
  • GoldenGate抽取进程extract延迟处理
    前言一套GoldenGate环境,已经运行了很多年,一直比较正常,Extract抽取进程基本上没有出现延迟的情况,但这次突然出现抽取延迟,其中一个抽取进程延迟高达50个小时左右。 处理过程1.当前有两个抽取进程,分别为:E_HXZG、E_SBFSC,目前出现延迟的是第1个抽取进程。检查该进程的当前状态......
  • 软件工程是不是教会不怎么会写程序的人开发软件?你的观点?
    “Softwareengineering,ofcourse,presentsitselfasanotherworthycause,butthatiseyewash:ifyoucarefullyreaditsliteratureandanalysewhatitsdevoteesactuallydo,youwilldiscoverthatsoftwareengineeringhasacceptedasitscharter‘Howto......
  • 贝壳_程序设计实践_银行系统
    问题日期类日期间隔计算的实现distance函数运算符重载的实现类相互包含报错银行系统-5中Account与AccountRecord类类的编写原则例如常函数const运用原则常函数内无对数据修改的操作工程上,设计类的时候,一个原则就是,将对不改变数据的成员函数设计为常函数......
  • 实验5循环结构程序设计(while、do-while语句的应用)
    实验5循环结构程序设计(while、do-while语句的应用)一、实验目的1.熟练掌握三种循环语句并能正确运用;2.能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;3.进一步学习程序调试;4.了解中国算法,百钱买百鸡。二、实验硬、软件环境Windows计算机、Devc6.0三、实验内容及步骤项......
  • c语言程序实验——实验报告五
    c语言程序实验————实验报告五实验项目名称:实验报告5循环结构程序设计(while、dowhile语句的应用)实验项目类型:验证性实验日期:2024年4月11日一、实验目的1.熟练掌握三种循环语句并能正确运用;2.能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;3.进一步学习程......
  • 小程序管理平台建设的想法和见解
    继微信正式推出微信小程序后,各个大厂陆续发布了各自的小程序平台——支付宝小程序、百度小程序、头条小程序,各家不同的小程序标准一度让开发者们激情开骂,虽然目前跨平台的小程序开发可以通过taro、mpvue、kbone等跨平台开发框架来解决,但是不同平台的小程序管还是非常麻烦,每次在......
  • 微信小程序中生命周期钩子函数
    微信小程序App的生命周期钩子函数有以下7个:   onLaunch(options):当小程序初始化完成时,会触发onLaunch(全局只触发一次)。   onShow(options):当小程序启动或从后台进入前台显示时,会触发onShow。   onHide():当小程序从前台进入后台时,会触发onHide。   onError(......
  • 微信小程序 版本更新 强制更新新版本
    在点击小程序发布的时候选择,版本升级选项 之前用户使用过的再打开小程序页面就会弹出升级弹窗modal在utils.js中声明版本更新方法 //static/utils/index.jsexportfunctioncheckUpdateVersion(){//创建UpdateManager实例constupdateManager=uni.getUp......