程序管理

进程:触发任何一个时间,系统都会将它定义为一个进程,并给予这个进程一个ID号,成为PID,同时根据出发这个进程的用户于用户组关系,给予这个PID一组有效的权限。
程序:通常为二进制文件存放在储存媒介中,以物理文件的形式存在。

job control
  • 工作所触发的进程必须来自你的shell的子进程(只能管理自己的bash)
  • 前台:可以控制和执行命令的环境(foreground)
  • 后台:自动执行的工作地,无法用Ctrl+c终止,可以使用fg/bg调取
  • 后台中的程序不可输入(input)

直接将命令丢到后台“执行”: &
jobs [-lrs]
-l:除了列出job number与命令之外列出pid号
-r:列出在后台run的程序
-s:列出在后台stop的程序
+代表默认取用的任务,-代表倒数第二个放到后台的任务

kill:管理后台中的任务
格式:
kill -signal %jobnumber
kill -l
参数:
-l:L的小写,列出目前kill能够使用的信号(signal)
signal:代表给予后面接的那个工作什么样的指示
-1:重新读取一次参数的配置文件(类似reload)
-2:和键盘输入Ctrl-C同样的操作
-9:立刻强制删除一个工作
-15:以正常方式终止一项工作

nohug可以彻底放在系统后台而不是中断后台执行
nohug [命令] #在终端机前台工作
nohug [命令] & #在终端后台中工作
不支持bash内部命令,需要接外部命令

ps:将某个时间点的进程运行情况选取下来
格式:
ps aux #查看系统所有的进程数据
ps -lA #同上
ps axjf #连同部分进程数状态
参数:
-A:所有的进程全部显示,和-a一样
-a:不与terminal有关的所有进程
-u:有效用户相关的进程
x:通常与a一起使用,可列出较完整的信息
输出格式规划:
l:较长较详细
j:工作的格式
-f:做一个更为完整的输出

ps-l
  • F:代表这个进程标志,说明这个进程的权限,常见号码有:
    • 4,root权限
    • 1,此程序仅可进行复制(fork)而无法实际执行(exec)
  • S:代表这个进程的状态(STAT),主要的状态有:
    • R,该进程正在运行中
    • S,该进程正在睡眠状态(idle)。但可以被唤醒(signal)
    • D:不可被唤醒的睡眠状态,通常这个进程可能在等待i/o的情况
    • T:停止状态(stop)可能是在工作控制(后台暂停)或除错(traced)状态
    • Z:zombie僵尸状态,进程已经终止但无法被删除至内存外
  • UID/PID/PPID:代表此进程该被UID所拥有/进程的PID号码/此进程的父进程PID号码
  • C:代表CPU的使用率,单位为百分比
  • PRI/NI:Priority/Nice的缩写,代表此进程被CPU所执行的优先级,数值越小代表该进程越快被执行
  • ADDR/SZ/WCHAN:都与内存有关,ADDR是kernel function,指出在内存的哪个部分,如果是个running的进程,一般就会表示为”-“ SZ代表此进程用掉多少内存/WCHAN表示目前进程是否运行中,同样,若为-表示为正在运行中
  • TTY:登陆者的终端机位置,若为远程登录则使用动态终端接口(pst/n)
  • TIME:使用掉的CPU时间,注意,是此进程实际花费CPU运行的时间,而不是系统时间。
  • CMD:就是command的缩写,造成此程序的触发进程的命令为什么

ps aux
top
详情自询

进程管理
kill -l :查看所有signal
1:SIGHUP,启动被禁止的进程,可以让该PID重新读取自己的配置文件,类似重新启动
2:SIGINT,相当于用键盘输入Ctrl—C中断一个进程
9:SIGKILL,强制中断一个进程,如果该进程进行到一半,那么尚未完成的部分可能会“半成品”产生,类似于vim的.filename.swp保留下来
15:SIGTERM,已正常的方式中断进程,但是若此进程已经发生问题,此方法不能正常结束进程
17:SIGSTOP,相当于键盘输入Ctrl-Z暂停一个进程
kill -signal PID
killall [-iIe] [command name]:可以终止一类服务

进程的执行顺序
优先执行序,PRI:值越低,优先级越高,由内核动态调整,用户无法直接调整。
所以要调整进程的优先级,就调整Nice,在进程信息里显示为“NI”,一般来说:PRI(New)=PRI(Old)+nice
注意:
  • nice的值范围一般为:-20~19
  • root可以随意调整他人的nice值,范围为:-20~19
  • 一般用户仅可以调整自己的nice,范围为:0~19(避免一般用户抢占资源)
  • 一般用户只能把进程优先级越调越高
那么如何调整nice呢?
  1. 一开始执行程序的时候就赋予nice值,用nice命令
  2. 调整某个已经存在的PID的nice值,用renice命令

nice命令
格式:nice [-n 数字] command
参数:
-n:后面接要调整的nice量
范例:
用root给一个nice值为-5 ,用于执行vim ,并查看进程
nice -n -5 vim &
ps -l

renice 命令:
格式:renice [number] PID

另外 top 也可以调整nice值。

系统资源查看
free:查看内存使用情况
格式:
free [-b|-k|-m|-g] [-t]
参数:
-b:直接输入free 将以KB为单位显示,这里使用b(bytes),m(MB),g(GB)为单位显示
-t:在结果中显示物理内存与swap的总量

tips:当swap分区被用20%以上则留意是否需要增加物理内存

uname:查看系统与内核的信息
格式:uname [-asrmpi]
参数:
-a:所有系统相关的信息
-s:系统内核名称
-r:内核的版本
-m:本系统的硬件名称
-p:CPU的类型
-i:硬件平台

uptime:查看系统启动时间与工作负载

netstat:跟踪网络
netstat -[atunlp]
-a:将目前系统上所有的链接、监听、socket数据都列出来
-t:列出tcp网络数据包的数据
-u:列出udp网络数据包的数据
-n:不列出进程的服务名,以端口号来显示
-l:列出目前正在网络监听的服务
-p:列出该网络服务的进程PID

常用:netstate -tlnp

dmesg:分析内核产生的信息

vmstat:检测系统资源变化
用法:
vmstat [-a] [延迟[总计检测此时]] CPU、内存等信息
vmstat [-fs] 内存相关
vmstat [-S 单位] 设置显示数据的单位
vmstat [-d] 与磁盘有关
vmstst [-p 分区] 与磁盘有关
参数:
-a:使用inactive/active替代buffer/Cache的内存输出信息
-f:开机到目前为止系统复制的进程数
-s:将一些事件(开机至目前为止)导致的内存变化情况列表说明
-S:后面可以接单位,让显示的数据有单位。例如K/M取代bytes
-d:列出磁盘的读写总量统计表
-P:后面列出分区,可显示该分区的读写总量统计

fuser:找出正在使用某目录或文件的程序

lsof:列出某个程序开启或使用的文件和设备

pidof:找出某个正在执行程序的pid
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值