进程
进程是已启动的可执行程序的运行实例,进程有以下组成部分
已分配内存的地址空间 ,安全属性包括所有权凭证和特权,程序代码的一个或多个执行线程,进程状态
程序:二进制文件 静态的存储在磁盘上
进程:是程序执行的过程,动态,有生命周期及运行状态
进程的生命周期
父进程复制自己的地址空间(fork)创建一个新的子进程结构。每个新进程分配一个唯一的进程ID(PID),满足跟踪安全性之需 PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程
子进程继承父进程的安全身份,文件描述符,端口,环境变量以及程序代码
在多任务处理操作系统中 每个CPU在同一个时间点只能处理一个进程,在程序运行时,它对CPU时间和资源分配的要求会不断变化
查看进程 ps top
了解当前进程的PID,PPID 当前的进程状态 内存的分配情况 cup情况花费的时间 用户UID决定进程的权利
静态查看进程PS
ps 参数 l:长格式输出 U:按照用户名和启动时间顺序显示 j:任务格式显示 f:用树结构显示 a显示所有的进程包括其他用户的
x:显示无控制终端的进程 r:显示运行中的进程
root@kali:/home/wuwei/test# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
user:运行进程的用户 pid:进程ID % cpu:cpu占用率 %mem:内存占用率 VSZ 占用虚拟内存 RSS 占用的实际内存 TTY 运行的终端 STAT 进程状态 START 进程的启动时间 TIME 进程占用CPU的总时间 COMMAND 进程文件
ps -ef 查看PPID PID
自定义显示字段
root@kali:/home/wuwei/test# ps axo user,pid,ppid
USER PID PPID
root 1 0
--sort %cpu 根据cpu顺序排序 --sort -%cpu 根据cpu逆序排序
查看进程树 pstree
动态查看进程 top
root@kali:/home/wuwei/test# top
top - 23:10:24 up 1 day, 1:08, 3 users, load average: 0.00, 0.01, 0.00
Tasks: 196 total, 1 running, 152 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2039660 total, 231448 free, 1008028 used, 800184 buff/cache
KiB Swap: 2094076 total, 2094076 free, 0 used. 833184 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
top -d 间隔时间 -p 指定进程pid -u 指定用户 -n 更新次数
使用信号量控制进程 kill killall pkill top
给进程发送信号
1 SIGHUP 重新加载配置文件 2SIGINT 键盘终端ctr+c 3SIGQUIT 键盘退出 9SIGKILL 强制退出
15SIGTERM 终止(正常结束)默认 18SIGCONT 继续 19SIGSTOP 停止 20SIGTSTP 暂停ctr+z
kill 15 478 kill 1 478
killall vim 通过程序的名字直接杀死所有进程
pkill -u 用户 踢出一个当前链接的用户 pkill -t pts/1 结束终端1上的所有进程
进程优先级
Linux进程调度及多任务
每个cpu在一个时间点上只能处理一个进程,通过时间片技术实际能够运行的进程可以超过可用的cpu及核心数量.Linux 内核进程调度程序将多个进程在cpu上快速切换
相对优先级nice
由于不是每个进程与其他进程一样重要 可告知进程调度程序为不同的进程使用不同的调度策略 系统上运行的大多数进程所使用的调度策略为SCHED_OTHER (SCHED_NORMAL)
SCHED_OTHER调度策略运行进程的相对优先级称为进程的nice值,可以有40中不同的nice值
nice值越高 :表示优先级越低例如+19
nice值越低:表示优先级越高例如-20
使用top查看nice级别 NI nice级别-20 -- 19 PR 将nice映射到更大的优先级队列 0--39
root@kali:/home/wuwei/test# ps axo pid,nice,priority
调整进程的nice值 renice -20 10090 修改nice值
作业控制 jobs
作业控制是一个命令行功能,允许一个shell实例来运行和管理多个命令
如果没有作业控制,父进程fock()一个子进程后,将sleeping直到子进程退出
使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让shell可以再子进程运行期间执行其他指令
foreground 前台进程是在终端中运行的命令 接收键盘的输入
background 后台进程没有控制终端,不需要与终端交互
sleep 3000 & --后台运行
jobs 查看所有的后台
bg 2 调到后台
fg 1 调到前台
kill %1 终止进程