LINUX:程序和进程

网友投稿 228 2022-11-05

LINUX:程序和进程

程序和进程的关系

程序:保存在硬盘,光盘等介质中可执行代码和数据,文件中静态保存的代码。

进程

在cpu及内存中运行的程序代码,动态执行的代码。进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等。父、子进程:每个程序可以创建一个或多个进程,

ps命令:查看进程信息

查看静态的进程统计信息命令格式:ps auxa: 显示终端上的所有进程,包括其他用户的进程u: 表示列出进程的用户。x: 显示所有终端的进程。统计进程数量:ps aux | wc -l

各列的解释user:进程的用户、PID:进程的ID、%CPU:进程占用的CPU百分比、%MEN:占用内存的百分比、VSZ:该进程使用的虚拟内存量(KB)、RSS:该进程占用的物理内存量(KB)。TTY:启动进程的终端名,不是从终端启动的进程显示为“?”。CentOS中TTY1代表桌面终端,TTY2-6代表是文字界面的终端。用Ctrl+Alt+F(2-6)切换到字符界面的终端,桌面图形终端ctrl+alt+F1切换回来。用who命令来查看登录的用户信息(pts表示远程登录,tty表示服务器自带的终端)。STAT:该进程的状态(D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪调试状态。Z :僵尸进程,进程已经中止,但是部分程序还在内存中)、START:该进程被触发启动时间、TIME:该进程实际使用CPU运行的时间、COMMAND:进程的启动命令

僵尸进程:

一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就有INIT来接管它,成为它的父进程,子进程退出后init会回收占用的相关资源。但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时进程将会称为一个僵尸进程。

ps -elf:查看静态的进程统计信息

-e: 显示系统内所有进程信息-l: 使用长格式显示进程信息-f: 使用完整的格式显示进程信息-a: 显示所有进程pid-T: 查看线程信息ps -aT: 显示所有线程

字段各列的解释F:内核分配给进程的系统标记、S:进程的状态、UID:启动这些进程的用户、PID:进程的进程ID、PPID:父进程的进程号(如果该进程是由另一个进程启动的)、C:进程生命周期中的CPU利用率、PRI:进程的优先级(越大的数字代表越低的优先级)、NI:谦让度值用来参与决定优先级、ADDR:进程的内存地址、SZ:假如进程被换出,所需交换空间的大致大小、WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名、STIME:进程启动时间的系统时间、TTY:进程启动的终端设备、TIME:运行进程需要的累计CPU时间、CMD:进程的启动命令

top命令

查看动态的进程排名信息命令模式:topCtrl+c退出或者q键 第一行是任务队列信息11:06:28 系统时间、up 1:22 系统已运行时长、1 user 当前登录用户数、load average:0.06,0.60,0.48 系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值第二行为进程信息Tasks:总进程数、running:正在运行的进程数、sleeping:休眠的进程数、stopped:中止的进程数、zombie:僵死的进程数第三行 CPU的信息us:用户占用、sy:内核占用、ni:优先级调度占用、id:空闲cpu,要了解空闲的cpu百分比,主要看%ID部分、wa:I/O等待占用、hi:硬件中断占用、si:软件中断占用、st:虚拟化占用第四行为内存的信息total:总内存空间、free:空闲内存、used:已用内存、buff/cache:物理内存和交换内存的缓冲区总和第五行为交换空间的信息total:总交换空间、free:空闲交换空间、used:已用交换空间、avail Mem:可用物理空间进程信息区各列解释:PID:进程ID、USER:进程所有的用户名、PR:优先级、NI:谦让度值,负值表示高优先级,正值表示低优先级、VIRT:进程使用的虚拟内存总量,单位KB、RES:进程使用的物理内存大小,单位KB、SHR:共享内存大小,单位KB、S:进程状态、%CPU:上次更新到现在的CPU时间占用百分比、%MEN:进程使用的物理内存百分比、TIME+:进程使用的CPU时间总计,单位1/100秒、COMMAND:命令名/命令行

top常用命令:P键: 根据CPU使用百分比大小进行排序M键: 根据驻留内存大小进行排序N键: 根据启动时间进行排序c键: 切换显示命令名称和完整命令h键: 可以获得top程序的在线帮助信息k键: 根据提示输入指定进程的PID号并按Enter键终止对应的进程q键: 退出top程序数字1键: 显示cpu个数和状态top -H: 显示所有线程top -H -p : 显示特定进程中的线程

查看CPU的负载情况load average的方法:uptime、w、top

查看进程信息pgrep

查看进程树pstree

进程的启动方式

手工启动:用户输入命令,直接执行程序后台启动:在命令行尾加入“&”符号进程的前后台调度Ctrl+Z组合键:将当前进程挂起,即调入后台并停止执行

jobs命令

jobs[-l]查看处于后台的任务列表

fg命令

将后台进程恢复到前台运行,可指定任务序号,终止进程的运行。Ctrl+C组合键:中断正在执行的命令

kill、killall命令

kill用于终止指定PID号的进程;kill的信号是用-15表示的,是SIGTERM,是要告诉进程你需要被关闭,请自行停止运行并退出killall用于终止指定名称相关的所有进程,使用这个命令时,输入跟关键字有关的所有进程都会被终止,所有这个命令慎用。kill -9选项用于强制终止,代表的信号是SIGKILL,表示强制杀死该进程,这个信号不能被捕获也不能被忽略。

pkill命令

根据特定条件终止相应的进程常用命令选项-U:根据进程所属的用户名终止相应进程-t:根据进程所在的终端终止相应进程

调度启动

使用at命令,设置一次性计划任务命令格式:at [HH:MM] [yyyy-mm-dd]不指定年月日的时候,默认是设置值的是当天时间,用Ctrl+d键提交任务

使用crontab命令,设置周期性计划任务

按照预先设置的时间周期(分钟、小时、天、月、周)重复执行用户指定的命令操作。属于周期性计划任务主要设置文件:全局配置文件,位于文件/etc/crontab系统默认的设置,位于目录:/etc/cron.*/用户定义的设置,位于文件:/var/spool/cron/用户名

管理crontab计划任务

编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]
命令格式画图
字段 说明
分钟 取值为从0到59之间的任意整数
小时 取值为从0到23之间的任意整数
日期 取值为从1到31之间的任意整数
月份 取值为从1到12之间的任意整数
星期 取值为从0到7之间的任意整数0或7代表星期日
命令 要执行的命令或程序脚本

时间数值的特殊表示方法*** 表示该范围内的任意时间, 表示间隔的多个不连续时间点- 表示一个连续的时间范围 /* 指定间隔的时间频率示例:(1) 3 : 每小时执行一次;每小时的第3分钟;(2) 3 4 5:每周执行一次;每周5的4点3分;(3) 5 6 7 :每月执行一次;每月的7号的6点5分;(4) 7 8 9 10 :每年执行一次;每年的10月9号8点7分;(5) 9 8 3,7:每周三和周日的8点9分;(6) 0 8,20 3,7:每周三、日的8点和20点各执行一次。(7) 0 9-18 1-5:周一至周五的9点至18点期间每小时执行一次(8) /5 *:每5分钟执行一次某任务;

系统crond的配置文件:/etc/crontab文件

[root@CentOS6 ~]#cat /etc/crontab ==# 系统cron的配置文件== SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 注意: (1) 每一行定义一个周期性任务,共7个字段; * * * * * : 定义周期性时间 user-name : 运行任务的用户身份 command to be executed:任务 (2) 此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量; (3) 执行结果邮件发送给MAILTO指定的用户

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:信号与传输介质,数值的转换
下一篇:mybatis返回的map结果如何设置有序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~