精选文章

Android下使用TCPDUMP抓包Wireshark分析数据 如果想分析Android下某个APP的网络数据交互,需要在Android手机上抓包,最常用的抓包工具非tcpdump莫属,用tcpdump生成Wireshark识别的pcap文件,然后将pcap文件下载到电脑上,用电脑上的Wireshark加载pcap文件,通过Wireshark分析tcpdump抓取的数据。...

继续阅读

Mac下部署Android开发环境附加NDK 作为开发者,我们深有体会,不管是进行什么开发,为了部署开发环境,我们往往需要折腾很长时间、查阅很多资料才能完成,而且这次折腾完了,下次到了另一台新电脑上又得重新来过,整个部署过程记得还好,要是不记得又得重新开始,而且遇到Android这种GFW阻隔了开发资源下载链接的环境部署,又尤其浪费时间。所以这也是我写下这篇教程的初衷跟动力源泉,希望大家参考了这篇教程以后可以轻轻松松在Mac系统下将Android环境部署好。...

继续阅读

稍顯嚴肅的台中 坦白說,留在腦海中的台中影像並不多,來台灣之前在Booking上只訂到了台中的一家青旅,第一次住青旅有些不習慣,幹什麼都放不開。 同屋的一個男生是台灣人,不過一年中四分之三的時間在上海跟北京,這麼說來跟我還是比較有共同話題的。得之我準備花15天的時間環島,覺得太倉促了,他們大學時期花一個半月的時間也不見得能將台灣島給逛完。我只能無奈地表示,兩岸允許的簽證時間有限,自己的空閒時間更有限,只能用打卡式的旅行了,我深知正真地旅行應該慢下來,融入當地的環境,感受他們的風土人情,但第一次只能這樣作罷,以後換成民進黨上台,形勢會變成怎樣還不得而知,能否再過來還是個未知數。而我一向信奉的人生格言是秉燭夜遊,活在當下,所以,理解自己吧。...

继续阅读

為之留戀的新竹 來新竹之前本沒有對她有過高的期待,慢慢對她加分要從桃園火車站出發前往新竹開始。 在桃園火車站的候車月台上,有醒目的旅遊資料發放處,這上面的擺放的全是新竹的旅遊宣傳資料,關鍵的是資料做得非常簡潔易懂,而接下來一天的新竹之行就全部是依據這份寶典的指引來完成的。...

继续阅读

從桃園開始台灣之行 初到台灣恰逢華夏銀行系統升級,特意準備的華夏銀聯卡在桃園機場沒能派上用場,只好用建行在機場5000塊,算下來是很不划算的,但是沒辦法,誰叫我出機場就得花錢呢。 從機場打車到桃園的酒店,花了將近六百塊新台幣,到酒店時五點多,天已經漸亮了,洗漱完等到七點吃過早餐就開始補覺囉,一覺醒來已是中午,帶著換下來的衣服外出找自助洗衣店,順便覓食。...

继续阅读

  • Prev
  • Next

Linux下的进程管理命令

文章分类 : Linux, Ubuntu, 应用与编程, 教程

Linux操作系统包括三种不同类型的进程,一般分为交互进程、批处理进程和守护进程三类。交互进程是由一个终端(Shell)启动的进程,它既可以在前台运行,也可以在后台运行。批处理进程和终端没有联系,是一个由脚本启动的进程序列。守护进程总是活跃,在系统启动时通过脚本自动启动,或由root启动,通常在后台运行,直到系统关闭时退出。一个进程可以拥有子进程。当父进程终止时,它的子进程也随之终止;而子进程终止时,父进程通常可以继续运行。Linux系统中,init 进程是内核启动的第一个用户级进程,它有许多很重要的任务,比如象启动getty(用于用户登录)、维护运行级别、处理孤儿进程等,所有进程都是它的子进程。    

Linux系统提供了一系列管理进程的程序及命令,这里选取我们经常会用到的ps、kill、pkill、top、nohup命令跟特殊命令执行符等做简要介绍。

一、ps命令

ps是Linux下最常用的进程查看命令,该命令可以查看哪些进程正在运行、运行状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到。

1、常用参数:

aux:以BSD风格显示进程
-efH:以System V风格显示进程
-e/-A:显示所有进程
a:显示终端上所有用户的进程
x:显示无终端进程
u:显示详细信息
f:树状显示
w:完整显示信息
l:显示长列表

 
2、应用实例:

#ps aux //以BSD风格显示进程,很常用
#ps alx //另一种常用输出格式
#ps aux | less //将输出通过管道,使用 less 查看
#ps aux | grep <关键字> //通过关键字查找进程

 
3、输出字段:

USER 进程所有者
PID 进程ID
PPID 父进程
%CPU CPU占用率
%MEM 内存占用率
NI 进程优先级,数值越大,占用CPU时间越少
VSZ 进程虚拟大小
RSS 页面文件占用
TTY 终端ID
STAT 进程状态

 
4、进程状态:

D 不可中断 Uninterruptible sleep (usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X 死掉的进程
< 高优先级
N 低优先级
L 有些页被锁进内存
s 包含子进程
+ 位于后台的进程组
l 多线程,克隆线程 multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

 
二、kill命令

kill [-信号代码] <进程PID>

向PID对应的进程发送信号代码所代表的信号,默认信号代码为-15,对应终止信号。其中进程PID可以同过ps命令查得,要杀死其他用户的进程,需要管理员权限。

常用信号代码:

-l [信号数字] 显示、翻译信号代码
-1 / -HUP 挂起
-2 / -INT 从键盘中断,相当于 Ctrl+c
-3 / -QUIT 从键盘退出,相当于 Ctrl+d
-4 / -ILL 非法指令
-6 / -ABRT 发送 abort 信号退出
-9 / -KILL 发送 kill 信号退出
-11 / -SEGV 内存错误
-13 / -PIPE 破坏管道
-14 / -ALRM
-15 / -TERM 发送终止(Termination)信号
-18 / CONT 继续运行已停止的进程
-19 / -STOP 停止进程,但不结束
-9 -1 结束当前用户的所有进程

 
三、pkill命令

pkill [-信号代码] [-u 用户名] [-t 终端号] [进程名]

pkill命令是kill命令的批处理版,不同于kill命令的是,它无须指定进程号,只需要指定进程名,就能批量地处理与指定进程名相同的进程。除此之外,pkill还能批量处理指定用户名或者指定终端号下面的所有进程。如果只想单独删除个别进程,那么就只能选择kill命令了。倘若给pkill命令加上“-v”选项,意思便是反向选择,即处理除了指定条件之外的所有进程。要杀死其他用户的进程,需要管理员权限。

应用实例:演示pkill常见用法。

#pkill -9 sshd //杀死指定进程
#sudo pkill -t tty1 //杀死终端1下的所有进程
#sudo pkill -u mylinux //杀死 mylinux 用户下的所有进程
#sudo pkill -vu root //杀死不属于 root 用户的所有进程

 
四、top命令

top 命令和 ps 命令的基本作用是相同的,显示系统当前的进程及其相关信息,但是 top 命令是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如? 前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供了实时的对系统处理器的状态监视,它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU占用率、内存占用率和执行时间对任务进行排序,而且它的很多特性都可以通过交互式命令或者在定制文件中进行设定。

常用参数:

-c 显示进程启动状态,包括参数、操作对象等,而不只是进程名
-d <秒> 指定刷新频率,即几秒钟刷新一次
-n <次> 指定刷新次数,即刷新几次后退出
-i 禁止显示空闲进程或僵尸进程
-p PID 仅监视指定PID对应的进程
-s 安全模式运行,禁用一些效互指令;
-S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程;

 
交互命令:

<space> 立即刷新
k 交互式杀死进程,提示输入进程 PID (默认发送信号15)
r 设定renice,提示输入PID和renice值
s 改变两次刷新时间间隔,以秒为单位
n 设定显示进程数, 0 为不作限制
i 隐藏空闲进程和僵尸进程
S 切换到累积时间模式
l 开关,在顶部显示 uptime 信息
t 开关,在顶部显示 进程和CPU状态
m 开关,在顶部显示 free 信息
c 显示方式切换(进程名/进程启动状态)
A 按进程启动顺序进行排序(由新到旧)
M 按内存占用排序(由大到小)
N 以进程ID排序(由大到小)
P 按CPU占用排序(由大到小)
T 按时间/累积时间排序
f/F 设定显示字段。设定完成后空格退出
o/O 设定显示字段的排序。大写向前移动,小写向后移动,空格退出
h/? 显示有关安全模式和累积模式的帮助信息
W 把当前的配置写到~/.toprc中

 
五、nohup命令

nohup <命令>

nohup命令将任务提交到后台,输出附加到 ~/nohup.out 文件,即便用户退出登录,提交的命令仍继续执行。

六、特殊命令执行符

<命令> &

后台执行此命令,如果用户退出登录,则命令停止执行。

<命令1> ; <命令2> ; ……

命令队列,从左向右,依次执行以分号分隔的命令。

<命令1> && <命令2> && ……

命令队列,从左向右,依次执行以 && 分隔的命令,前一个命令执行成功,后一个命令才能执行。

<命令> <Ctrl+z>

“Ctrl键+z键”组合用于挂起当前Shell中的任务。

<命令> <Ctrl+c>

“Ctrl键+c键”组合用于终止当前Shell中的任务。

<命令> <Ctrl+d>

“Ctrl键+d键”组合代表输入完成或者注销。

七、进程的挂起(暂停)、后台跟前台操作

(1) CTRL+z 停止进程并放入后台

(2) jobs 显示当前被挂起(暂停)的进程

(3) bg %N 使第N个任务在后台运行(%前有空格)

(4) fg %N 使第N个任务在前台运行

默认bg,fg不带%N时表示对最后一个进程操作。

除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。

本文地址:https://www.cpplive.com/html/1653.html

这里因为你的留言而存在!!!

You must be logged in to post a comment.