Linux教程

[linux] linux进程指令

本文主要是介绍[linux] linux进程指令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. linux有哪些进程

linux下的主要进程状态有:

  • R(TASK_RUNNING) -- 可执行状态
  • S(TASK_INTERRUPTIBLE)  -- 可中断的睡眠状态
  • D(TASK_UNINTERRUPTIBLE) -- 不可中断的睡眠状态
  • T(TASK_STOPPED or TASK_TRACED) -- 暂停状态或跟踪状态
  • Z(TASK_DEAD) -- 退出状态,也称僵尸状态

 

2.1 R(TASK_RUNNING) -- 可执行状态

通过将进程的task_struct结构放到CPU的可执行队列中,使进程变成R态。只有处在该状态的进程才有可能被进程调度器选中在CPU上执行

 

2.2 S(TASK_INTERRUPTIBLE)  -- 可中断的睡眠状态

当进程需要等待某件事的发生,比如socket连接等待对方输入时,进程的task_struct结构被放入相应事件的等待队列中。当事件被触发时,相应事件的等待队列中的某些进程就会被唤醒

 

2.3 D(TASK_UNINTERRUPTIBLE) -- 不可中断的睡眠状态

进程此时也是处于睡眠状态,但是不可以被kill掉。为什么要设置一种不可中断的睡眠状态呢?原来是为了保护内核状态下的某些流程不被打断

 

2.4 T(TASK_STOPPED or TASK_TRACED) -- 暂停状态或跟踪状态

TASK_STOPPED 和TASK_TRACED都表示进程被暂停下来,但不同的是TASK_STOPPED状态下,进程可以被SIGCONT信号唤醒,而TASK_TRACED下进程不能被该信号唤醒。TASK_TRACED状态通常发生在调试时,进程在断电处停下来,此时即被跟踪,只有当完成调试时,才能返回TASK_RUNNING状态   2.5 Z(TASK_DEAD) -- 退出状态,也称僵尸状态 在这个退出过程中,进程占有的所有资源将被回收,除了task_struct结构(以及少数资源)以外。于是进程就只剩下task_struct这么个空壳,故称为僵尸。如果父进程不退出,那么僵尸状态的子进程就一直存在    

2. linux进程管理指令

2.1 ps

ps能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等。下述选项可以得到更多有用的消息。

#列出所有运行中的进程
ps -a 

# 列出xxx进程信息
ps -ef | grep xxx

# 显示进程信息,包括无终端(x)和针对用户(u)的进程:如USER, PID, %CPU, %MEM
ps -aux

 

2.2 pstree

Linux中,每个进程都是由其父进程创建的。此命令以可视化的方式显示进程,通过进程的树状图来展示进程之间的关系

如果指定了pid,那么树的根是该pid,不指定pid=1

pstree

 

 

2.3 top

top可以监视系统中不同的进程所使用的资源。它提供实时的系统状态信息,显示进程的数据包括了:

  • PID
  • 进程属主
  • 优先级
  • %CPU
  • %MEM等
top

 

 

2.4 htop

htop和top很类似,但是htop是交互式的文本模式的进程查看器,它通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。

使用上下光标选择进程,F7和F8改变优先级,F9杀死进程。

 

 

2.5 nice

nice可以设置和改变进程的优先级

默认情况下,进程以0优先级启动,进程优先级可以通过top显示的NI列查看

进程优先级从-20到19,值越低,优先级越高

nice <优先级> <进程名> 

 

2.6 renice

renice命令类似于nice命令

使用renice可以改变正在运行的进程优先级

注意,用户只能改变属于他们自己的进程的优先级

# 改变3806进程的优先级为4
renice -n 4 -p 3806

# 用户为mint的所有进程优先级变为-3
renice -3 -u mint

 

2.7 kill 

# 杀死某个进程
kill <pid>

# 强制杀死某个进程
kill -9 <pid>

# 杀死拥有相同名字的进程
killall -9 

# 使用进程名杀死进程
pkill <进程名>

 

2.8 ulimit

该命令用于控制系统资源在shell和进程上的分配量。

可以管理重度使用和存在性能问题的系统,限制资源大小可以确保重要进程持续运行,该进程不会占用过多资源

# 显示当前用户关联的资源限制
ulimit -a

# -f: 最大文件尺寸大小
# -v: 最大虚拟内存大小(KB)
# -n: 增加最大文件描述符的数量
# -H:改变和报告硬限制
# -s:改变和报告软限制

 

2.9 w

w提供当前登录用户及其正在执行的进程信息。

显示的信息头包含当前时间、系统运行时长、登录用户数、过去的1,5,15分钟内的负载均衡数

 

2.10 pgrep

pgrep的意思是"进程号全局正则匹配输出"

该命令扫描当前运行进程,然后按照命令匹配条件列出匹配结果到标准输出。对于通过名字检索进程号是很有用

# 显示用户为‘mint’和进程名为‘sh’的进程ID
pgrep -u mint sh

 

2.11 fg, bg

有时,命令需要很长的时间才能执行完成。对于这种情况,我们使用‘bg’命令可以将任务放在后台执行,而用‘fg’可以调到前台来使用

# 使用&开启一个后台进程
find . -name *iso > /tmp/res.txt &

# 查看所有后台进程
jobs

# 将后台程序调到前台执行
fg <pid>

 

2.12 ipcs

ipcs命令报告进程间通信设施状态。(共享内存,信号量和消息队列)

# 列出最近访问了共享内存段的进程的创建者的ID和进程ID
ipcs -p -m

 

 

参考:

https://www.jianshu.com/p/eb221bf59c54

http://www.cnblogs.com/vamei

https://www.linuxprobe.com/12linux-process-commands.html

 

这篇关于[linux] linux进程指令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!