基本介绍
- 在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
- 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
显示系统执行的进程
基本介绍:
ps命令可以不加任何参数。(英文全拼:process status)命令用于显示当前进程的状态,类似windows 的任务管理器。
语法:ps [选项]
命令选项:
| 选项 | 功能 |
|---|---|
| -A | 列出所有的进程 |
| -w | 显示加宽可以显示较多的资讯 |
| -a | 显示当前终端的所有进程信息 |
| -u | 以用户的格式显示进程信息 |
| -x | 显示后台进程运行的参数 |
ps -aux | more 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 进程拥有者
- PID: pid(进程号)
- %CPU: 进程占用的 CPU 使用率
- %MEM: 进程占用的物理内存的百分比
- VSZ: 进程占用的虚拟内存大小(单位KB)
- RSS: 进程占用的物理内存大小(单位KB)
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除(僵尸进程)
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内
- START: 进程开始时间
- TIME: 执行的时间,即进程使用CPU的总时间
- COMMAND:所执行的指令和参数
ps -ef 以全格式显示当前所有的进程,查看进程的父进程
-e 显示所有进程
-f 全格式
ps -ef | more输出格式:
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低﹔数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
如果想单独查看某个进程,可用 ps -aux | grep 进程名 和 ps -ef | grep 进程名
pstree命令
pstree命令将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的行程。
语法:pstree [选项]
命令选项:
- -a:显示每个进程的完整命令,包含路径、参数或是常驻服务的标识
- -c:不使用精简标识法
- -h:列出树状图时,特别标明现在执行的进程
- -H:此参数的效果和指定-h参数类似,但特别标明指定的进程
- -I:采用长列格式显示树状图
- -n:用进程识别码排序。默认是以进程名称来排序
- -p:显示进程号
- -u:显示用户名称
- -U:使用UTF-8列绘图字符
top 命令
top命令用于实时显示 process 的动态。
语法:top [选项]
命令选项:
- -d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
- -q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
- -c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
- -S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
- -s : 安全模式,将交谈式指令取消, 避免潜在的危机
- -i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
- -n : 更新的次数,完成后将会退出 top
- -b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
输入top指令后的交互操作说明:
P:以CPU使用率排序,默认是此选项
M:以内存使用率排序
N:以PID排序
q:退出top
进程控制
语法:kill [信号代码] PID
功能: kill命令用来终止一个进程。向指定的进程发送信号,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C组合键,但是,对于一个后台进程就须用kill命令来终止,就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进程的。默认信号为SIGTERM(15),可终止指定的进程。如果仍无法终止该进程,可以使用SIGKILL(9)信号强制终止进程。kill 命令的各信号代码及其功能如下:
- -0:给所有在当前进程组中的进程发送信号
- -1:给所有进程号大于1的进程发送信号
- -9:强行终止进程
- -15(默认):终止进程
- -17:将进程挂起
- -19:将挂起的进程激活
- -a:终止所有进程
- -l:kill-l[signal],指定信号的名称列表。若不加选项,则-l参数会列出全部信号名称
- -P:模拟发送信号。显示进程的ID,不发送信号
- -s:指明发送给进程的信号,例如-9(强行终止),默认发送TERM信号
- -u:指定用户
killall [-signal] <进程名> 杀死指定名字的进程
pkill [options] pattern 通过程序的名字,直接杀死所有进程
xkill 杀死桌面上图形界面的程序
进程的优先级
nice
语法:nice [-n ADJUST] [--adjustment= ADJUST] [--help] [--version] [command [arg...]]
功能:进程的优先级,用nice值来表示。nice命令可以调整程序运行的优先级,让使用者在执进程序时,指定一个优先级,称为nice值(ADJUST)
范围从-20~19,数值越小优先级越高,数值越大优先级越低,默认ADJUST是10。
选项 -n ADJUST 或 --adjustment=ADJUST,功能是将原优先级增加ADJUST。
renice
语法:renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]
功能:renice命令允许用户修改一个正在运行的进程的优先权等级。
例如:将进程PID为456及123的进程与进程拥有者为aaa及root的优先权等级分别加1。
renice +1 456 -u aaa root -p 123
系统和服务管理
systemd的主要工具
- systemctl:查询和控制systemd系统和系统服务管理器的状态
- journalctl:查询系统的journal(日志)
- systemd-cgls:以树形列出正在运行的进程,可以递归显示linux控制组内容
1.服务启动与停止
systemctl start [unit type] 启动服务
systemctl stop [unit type] 停止服务
systemctl restart [unit type] 重启服务
systemctl status [unit type] 查看服务状态
应用举例:
启动网络服务
systemctl start network.service
停止网络服务
systemctl stop network.service
重启网络服务
systemctl restart network.service
查看网络服务状态
systemctl status network.serivce
2.设置开机启动/不启动
systemctl enable [unit type] 设置服务开机启动
systemctl disable [unit type] 设备服务禁止开机启动
应用举例:
停止cup电源管理服务
systemctl stop cups.service
禁止cups服务开机启动
systemctl disable cups.service
查看cups服务状态
systemctl status cups.service
重新设置cups服务开机启动
systemctl enable cups.service
3.查看系统上上所有的服务
systemctl 列出所有的系统服务
systemctl list-units 列出所有启动unit
systemctl list-unit-files 列出所有启动文件
systemctl list-units –type=service –all 列出所有service类型的unit
systemctl list-units –type=service –all grep cpu 列出 cpu电源管理机制的服务
systemctl list-units –type=target –all 列出所有target
电源管理
systemctl poweroff 系统关机
systemctl reboot 重新启动
systemctl suspend 进入睡眠模式
systemctl hibernate 进入休眠模式
systemctl rescue 强制进入救援模式
systemctl emergency 强制进入紧急救援模式
服务的运行级别(runlevel)
查看或者修改默认级别:vi /etc/inittab
修改文件里的数字
Linux系统有7种运行级别(runlevel)∶常用的是级别3和5
- 运行级别0∶系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1∶单用户工作状态,root权限,用于系统维护,禁止远程登陆
- 运行级别2∶多用户状态(没有NFS),不支持网络
- 运行级别3∶完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- 运行级别4:系统末使用﹔保留
- 运行级别5:X11控制台,登陆后进入图形GUI模式
- 运行级别6∶系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
chkconfig指令
介绍:
通过chkconfig命令可以给每个服务的各个运行级别设置自启动/关闭
基本语法:
- 查看某个运行级别里的某个服务:
chkconfig --list | grep 服务名或chkconfig 服务名 --list - 开启或关闭某个运行级别里的某个服务,如:
chkconfig --level 5 服务名 on/off