Linux进程及作业管理

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/84146465

1、内核

内核的功用有进程管理、文件系统、网络功能、内存管理、驱动程序和安全功能。Linux内核存储进程信息的固定格式为task struct,多个任务的task struct组成的链表为task list。 /proc/目录存放内核中的状态信息。可设置内核参数的值从而调整内核运行特性的参数,内核参数存放于/proc/sys/目录下,状态变量用于输出内核中的统计信息或状态信息,仅用于查看信息。 进程文件存放于/proc/# 文件中,#是PID编号。

2、进程

(1)进程创建过程 init进程是初始化进程,第1个进程,负责一切用户空间管理的进程。init由kernel创造,除了init之外,每一个进程都由其父进程创建,用命令fork(),clone()等。 (2)进程优先级 0-139:共140个优先级,其中1-99的优先级为实时优先级,数字越大,优先级越高,100-139的优先级为静态优先级,数字越小,优先级越高。 (3)Nice值 Nice值为-20-19,对应优先级100-139,-20对应100,19对应139,可以通过调整Nice值来改变优先级,普通用户只可以向Nice值高的方向调整,即向进程优先级大(低)的方向调整,管理员不受限制。 (4)进程类型 Linux内核是抢占式多任务的内核。因此进程类型可分为守护进程和前台进程。守护进程(daemon)为在系统引导过程中启动的进程,是跟终端无关的进程,前台进程是跟终端相关,通过终端启动的进程,也可把在前台启动的进程送往后台,以守护模式运行,例如service命令启动进程就可以以后台方式运行。 (5)进程状态 运行态(running),就绪态(ready),睡眠态分为可中断睡眠态(interruptable)和不可中断睡眠态(uninterruptable)停止态(stopped,暂停于内存中,但不会被调度,除非手动启动之)、僵死态(zombie)。 (6)进程的分类 CPU-Bound,CPU密集型,优化性能需要分配CPU时间多些; IO-Bound,IO密集型,优化性能需要分配优先级高些。 (7)启动进程的方式 系统启动过程中自动启动的进程是与终端无关的进程,用户通过终端启动的进程是与终端相关的进程。

3、进程管理命令

(1)pstree命令 该命令用于显示进程的树状结构。 (2)ps命令 该命令用于显示当前运行进程的快照。 ps [options]:ps命令选项有三种风格: 1 UNIX options, which may be grouped and must be preceded by a dash. 2 BSD options, which may be grouped and must not be used with a dash. 3 GNU long options, which are preceded by two dashes. 选项: a:所有与终端相关的进程; x:所有与终端无关的进程; u:以用户为中心组织进程状态信息显示; ax:查看系统中的所有进程; ps ax命令显示结果:带[]的为内核线程; pstree命令显示结果:大多为进程; 1 常用组合之一:aux VSZ:虚拟内存集,即占用的虚拟内存大小,即进程在虚拟内存空间中真正用来存储数据的大小。 RSS:Resident Size,常驻内存集,坚决不能放在交换内存的内容。 STAT: R:running S:interruptable sleeping D:uninterruptable sleeping T:Stopped Z:zombie +:前台进程 l:多线程进程 N:低优先级进程 <:高优先级进程 s:session leader 会话领导者,如shell进程 -e:显示所有进程,相当于ax -f:显示完整格式的进程信息 2 常用组合之二:-ef 显示结果:PPID父进程ID,init(PID=1)进程的父进程为PID为0的进程 -F:显示完整格式的进程信息;比-f更加完整的信息; C: cpu utilization,CPU利用率; PSR:运行于哪颗CPU之上 -H:以层级结构显示进程的相关信息; 3 常用组合之三:-eFH 4 常用组合之四:-eo, axo o field1, field2,…:自定义要显示的字段列表,以逗号分隔; 常用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio ni:nice值; priority:priority, 优先级; rtprio:real time priority,实时优先级; pcpu:cpu利用率; comm:由哪个程序启动的; (3)kill (4)pgrep [options] pattern 该命令用于实现进程过滤。 -u uid:effective user,显示进程以什么用户的身份运行,可以切换; -U uid:real user,显示以该用户启动的进程,显示指定用户的进程; -t TERMINAL:与指定的终端相关的进程; -l:显示进程名; -a:显示完整格式的进程名;包括进程ID、进程名、参数列表; -P pid:显示此进程的子进程;仅显示直接子进程,不加选项表示命令中有该字符串的进程;

[root@centos7 ~]# pgrep -U postfix
2308
2309
[root@centos7 ~]# ps aux | grep postfix
root       2254  0.0  0.1  93208  1696 ?        Ss   14:04   0:00 /usr/libexec/postfix/master -w
postfix    2308  0.0  0.1  93312  1840 ?        S    14:04   0:00 pickup -l -t unix -u
postfix    2309  0.0  0.1  93380  1876 ?        S    14:04   0:00 qmgr -l -t unix -u
root       4620 11.0  0.0 112648   952 pts/0    R+   15:18   0:00 grep --color=auto postfix

(5)pidof命令 该命令用于根据进程名,取其pid,一个进程名对应的pid可能不止一个。 (6)top命令 该命令用于显示Linux进程。 排序方式: P:以占据CPU百分比排序; M:以占据内存百分比排序; T:累积占用CPU时间排序; 首部信息: uptime信息:l命令开启或关闭,top命令的第一行; tasks及cpu信息:t命令开启或关闭; 内存信息:m命令开启或关闭; 退出命令:q; 修改刷新时间间隔:s; 终止指定的进程:k; 选项: -d #:指定刷新时间间隔,默认为3秒; -b:以批次方式显示; -n #:显示多少批次; (7)uptime命令 该命令用于显示系统时间、运行时长及平均负载(过去1分钟、5分钟和15分钟的平均负载)和等待运行的进程队列的长度。 (8)htop命令 安装htop:yum install htop -y 选项: -d #:指定延迟时间间隔; -u UserName:仅显示指定用户的进程; -s COLUME:以指定字段进行排序; 子命令: l:显示选定的进程打开的文件列表; s:跟踪选定的进程的系统调用; t:以层级关系显示各进程状态; a:将选定的进程绑定至某指定的CPU核心; (9)vmstat命令 该命令用于显示虚拟内存统计信息。 vmstat [options] [delay [count]] procs: r:等待运行的进程的个数;CPU上等待运行的任务的队列长度; b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度; memory: swpd:交换内存使用总量; free:空闲的物理内存总量; buffer:用于buffer的内存总量; cache:用于cache的内存总量; swap: si:数据进入swap中的数据速率(kb/s); so:数据离开swap的速率(kb/s); io: bi:从块设备读入数据到系统的速度(kb/s); bo:保存数据至块设备的速率(kb/s); system: in:interrupts,中断速率; cs:context switch, 上下文切换的速率; cpu: us:user space; sy:system; id:idle; wa:wait; st: stolen; 选项: -s:显示内存统计数据; (10)pmap命令 该命令用于查看进程的内存映射。 pmap [options] pid [...] -x:显示详细格式的信息; 另一种查看方式:cat /proc/PID/maps。 (11)glances命令 该命令是一个跨平台的基于光标的监控管理工具,是bash shell内建命令。 常用选项: -b:以Byte为单位显示网卡数据速率; -d:关闭磁盘I/O模块; -m:关闭mount模块; -n:关闭network模块; -t #:刷新时间间隔; -1:每个cpu的相关数据单独显示; -o {HTML|CSV}:输出格式; -f /PATH/TO/SOMEDIR:设定输出文件的位置;只需指到文件所在目录; C/S模式下运行glances命令: 服务模式:glances -s -B IPADDR IPADDR:本机的某地址,用于监听; 客户端模式:glances -c IPADDR IPADDR:是远程服务器的地址; (12)dstat命令 该命令是一个精巧的系统资源统计工具。 dstat [-afv] [options..] [delay [count]] 常用选项: -c, --cpu:显示cpu相关信息; -C #,#,…,total -d, --disk:显示磁盘的相关信息 -D sda,sdb,…,total -g:显示page相关的速率数据; -m:Memory的相关统计数据; -n:Interface的相关统计数据; -p:显示process的相关统计数据; -r:显示io请求的相关的统计数据; -s:显示swapped的相关统计数据; –top-cpu:显示最占用CPU的进程; –top-io:最占用io的进程; –top-mem:最占用内存的进程; –top-lantency:延迟最大的进程; (13)kill命令 该命令用于向进程发送信号,以实现对进程管理的功能。 显示当前系统的可用信号:kill -l [signal] 每个信号的标识方法有三种: 1)信号的数字标识; 2)信号的完整名称; 3)信号的简写名称; 向进程发信号:kill [-s signal|-SIGNAL] pid... 常用信号: 1)SIGHUP:无须关闭进程而让其重读配置文件; 2)SIGINT:终止正在运行的进程,相当于Ctrl+c; 9)SIGKILL:杀死运行中的进程;进程强行杀死,正在写未关闭的文件可能会损坏; 15)SIGTERM:终止运行中的进程; 18)SIGCONT:继续;kill -18 49266 将停止的进程继续运行,可以是在后台; 19)SIGSTOP:停止,将进程送入后台运行;相当于Ctrl+Z。 (14)killall命令 该命令用于通过进程名杀死进程。 killall [-SIGNAL] program

例:killall httpd

(15)调整进程优先级 可通过nice值调整的优先级范围:100-139,分别对应于:-20-19。 进程启动时,其nice值默认为0,其优先级是120,仅管理员可调低nice值。 nice命令:以指定的nice值启动并运行命令。 # nice [OPTION] [COMMAND [ARGU]...] 选项: -n NICE renice命令:调整运行中的指定进程的NICE值。 # renice [-n] NICE PID... 查看Nice值和优先级命令:ps axo,pid,ni,priority,comm。

4、作业管理

(1)作业 前台作业(foregroud):通过终端启动,且启动后会一直占据终端; 后台作业(backgroud):可以通过终端启动,但启动后即转入后台运行(释放终端)。 (2)如何让作业运行于后台? 1)运行中的作业,Ctrl+z可送往后台。 注意:送往后台后,作业会转为停止态; 2)尚未启动的作业,# COMMAND &,可在运行时在后台运行。 注意:此类作业虽然被送往后台,但其依然与终端相关,如果终端进程终止,与终端相关的进程也会终止,如果希望把送往后台的作业剥离与终端的关系,则把作业转为与终端无关的方式:# nohup COMMAND &

5、作业管理命令

(1)查看所有的作业 # jobs (2)可实现作业控制的常用命令 # fg [[%]JOB_NUM]:把指定的作业调回前台; # bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行; # kill %JOB_NUM:终止指定的作业;作业加%,进程不加%;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券