`

企鹅日记(十六):linux程序管理

阅读更多

在linux当中,触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个PID,同时依据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置,从此以后,这个PID就够在系统上进行的操作就与这个PID的权限有关了。进程衍生出来的其他进程在一般状态下,也会沿用这个进程的相关权限,比如登录bash这个进程,在bash中执行其他程序,产生的进程的权限就是这个bash的权限。

父子进程,可通过PPID找到该进程的父进程

====工作管理 job control====

主要指的是在一个bash环境下同时执行多个任务,多个工作。

# tar -zpcf /tmp/etc.tar.gz /etc &

# tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &

将目前的工作丢到后台中“暂停”:CTRL + Z

# jobs [-lrs]

-l:除了列出job number与命令串外,同时列出PID

-r:仅列出正在后台run的工作

-s:仅列出正在后台stop的工作

+ 代表最近被放到后台的工作号码

- 代表最后第二个被放到后台中的工作号码,其他神马都不显示

# fg %jobnumber <==将后台工作拿到前台来处理

# bg %jobnumber <==将后台工作变成run状态,让它运行起来

# kill -signal %jobnumber

# kill -l

-l:列出目前kill能够使用的signal有哪些

-2:代表由键盘输入 CTRL + C同样的操作

-9:立刻强制删除一个工作

-15:以正常的程序方式终止一项工作

====脱机管理问题====

job管理中程序与终端机有关(因为是bash的子进程),如果远程连接后断开,后台的jobs都消失了。于是:

# nohup [命令与参数] <== 在终端机前台中工作

# nohup [命令与参数] <== 在终端机后台中工作

nohup并不知道bash内部命令,所以你的命令全部都应该是外部命令(因为bash命令和终端机会绑定啊。。)

====进程的查看====

# ps aux <===查看系统所有进程数据

# ps -lA <==也是查看系统所有进程数据

# ps axjf <==联通部分进程树状态

-A:所有进程均显示,与-e有相同的作用

-a:不与terminal相关的所有进程

-u:有效用户相关的进程

x:通常与a参数一起使用,可列出较完整的信息

输出格式规划:

l:较长,较详细的将该PID信息列出

j:工作的格式

-f:做一个更完整的输出,包含父子树结构

其实只需要记住两个就行:

ps -l : 查看自己bash程序相关的进程

[yidao@localhost ~]$ ps -l

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

0 S 1000 2220 2218 0 80 0 – 34449 wait pts/0 00:00:00 bash

0 R 1000 3006 2220 0 80 0 – 33916 – pts/0 00:00:00 ps

# ps -lA显示的格式与上面的ps -l一样,数据相跟下面的ps aux一样,显示系统上所有进程数据

ps aux:查看所有系统运行的进程

[yidao@localhost ~]$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.1 45852 4484 ? Ss 20:47 0:01 /usr/lib/systemd/systemd

root 2 0.0 0.0 0 0 ? S 20:47 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S 20:47 0:00 [ksoftirqd/0]

解释下ps aux的各个字段含义:

USER:该进程属于哪个用户帐号,即由哪个用户触发

PID:不解释

%CPU:不解释

%MEM:不解释

VSZ:该进程使用掉的虚拟内存量(KB)

RSS:该进程占用的固定的内存量(KB)

TTY:该进程是在哪个终端机上运行,若与终端机无关则显示? 另外,tty1~tty6是本机上面登陆者程序,若为pts/0等,则表示为由网络连接进主机的进程。

STAT:该进程目前状态,主要有:

* R(Running):该进程正在运行中

* S(Sleeping):正在睡眠,可以被唤醒

* D:不可被唤醒状态

* T:停止状态

* Z:Zombie,僵尸状态,进程已终止但无法将其从内存中删除

START:进程被触发的时间

TIME:进程实际使用了CPU运行的时间

COMMAND:该进程的实际命令

# ps axjf <==显示进程树,你懂的

动态查看进程变化:

# top [-d 数字]

# top [-bnp]

-d:后面接数字,就是整个界面刷新的秒数,默认5秒

-b:以批次方式执行top,还可数据流重导向。。。

-n:与-b搭配,意思是几次top输出结果

-p:指定PID进行专门查看特定进程状态

top执行过程中常用按键:

?:显示top中可以输入的按键

P:以CPU使用排序

M:以内存使用排序

N:以PID排序

T:该进程使用CPU累计时间(TIME+)排序

k:给予某个PID一个信号signal

r:给予某个PID重新定制一个Nice值

q:离开quit

# top -d 2

top – 21:51:51 up 1:04, 2 users, load average: 0.29, 0.30, 0.34

Tasks: 168 total, 2 running, 166 sleeping, 0 stopped, 0 zombie

Cpu(s): 3.6%us, 1.5%sy, 0.0%ni, 94.1%id, 0.4%wa, 0.3%hi, 0.1%si, 0.0%st

Mem: 3950684k total, 1224448k used, 2726236k free, 97148k buffers

Swap: 2097148k total, 0k used, 2097148k free, 577636k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

2358 yidao 20 0 655m 58m 20m S 15.4 1.5 9:48.58 plugin-containe

1660 yidao 9 -11 539m 7692 5476 S 5.0 0.2 2:26.63 pulseaudio

763 root 20 0 147m 18m 8632 S 1.5 0.5 2:23.29 Xorg

2128 yidao 20 0 998m 159m 36m S 0.5 4.1 4:49.91 firefox

2218 yidao 20 0 434m 15m 11m S 0.5 0.4 0:02.98 Terminal

…..下面省略

解释下:

第一行的信息分别为:

* 目前的时间:21:51:51

* 开机到目前为止所经历的时间:up 1:04,说明我开机了1个小时4分钟

* 系统在1,5,15分钟的平均工作负载。若高于1得要注意了

第二行Tasks显示目前进程总量与个别进程在神马状态(running,sleeping,stopped,zombie)比较需要注意的是那个zombie,如果不是0,好好看看到底哪个进程变成了僵尸进程。

第三行Cpus显示的是Cpu整体负载,每个选项可使用?查阅。特别需要注意的是那个%wa,代表的是IO wait,如果是多核CPU,可以按1切换不同CPU负载率。

第四行与第五行:目前物理内存与虚拟内存的使用情况。要注意的是那个swap内存使用要尽量少。

第六行“这个是当在top进程中输入命令时显示的地方。

top的下面,也解释下:

PID:不解释

USER:该进程所属的用户

PR:Priority的简写,进程的优先级,越小优先级越高,越早被执行。

NI:Nice的简写,与Priority有关,越小越早被执行。

%CPU:不解释

%MEM:不解释

TIME+:CPU累计使用时间

注意:top默认以CPU使用率排序,可以按M按内存排序,恢复就按P,再次按CPU排序

批次显示方式示例:

# top -b -n 2 > /tmp/top.txt

进程树显示:

# pstree [-A|U] [-up]

-A:各进程树的连接以ASCII字符连接

-U:各进程树连接以UTF-8字符连接

-p:同时列出进程的PID

-u:同时列出每个进程的所属帐号名称

# ps -Aup

====进程的管理====

常见的signal:

1:SIGHUP,启动被终止的进程,类似于重启程序

2:SIGINT,相当于键盘输入CTRL+C中断一个进程

9:SIGKILL,强制终止

15:SIGTERM,正常结束,类似文件的叉叉关闭等

17:SIGSTOP,相当于键盘输入CTRL+Z暂停一个进程运行

# killall -iIe command

-i:互动模式,询问

-e:exact,后面接的command要完全一致

-I:命令忽略大小写

和kill相比,killall是根据命令名控制,而kill是根据PID控制。了解否

进程的优先级:

由于PRI是内核动态调整,用户无法干涉PRI,只能调整Nice值了。

因为 PRI(new) = PRI(old)+ nice

还有一点,nice只能越调越高,不能下降,囧。。

新执行的命令给予初始nice值:

# nice -n 数值 command

已经存在的进程调整nice值:

# renice number PID

====系统资源查看====

利用free查看内存使用情况:

# free [-b|-k|-m|-g] [-t]

-b:单位是字节,其他几个不解释

-t:在输出的结果中显示物理内存与swap总量

查看与内核相关信息uname:

# uname [-asrmpi]

-a:所有系统相关的信息,包括下面的所有数据都列出来

-s:系统内核名

-r:内核版本

-m:本系统硬件名,如i686或x86_64等

-p:CPU类型

-i:硬件平台(ix86)

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

# uptime

跟踪网络netstat:

# netstat -[atunlp]

-a:将目前系统上所有的连接、监听、socket数据都列出来

-t:列出tcp网络数据包的数据

-u:列出udp网络数据包的数据

-n:不列出进程服务名,以端口号port number来显示

-l:列出目前正在监听listen的服务

-p:列出该网络服务的进程PID

[yidao@localhost ~]$ netstat

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 1 0 localhost.localdo:38354 220.181.124.7:http CLOSE_WAIT

tcp 1 0 localhost.localdo:50608 220.181.124.6:http CLOSE_WAIT

tcp 0 0 localhost.localdo:39539 shell.cjb.net:ssh ESTABLISHED

tcp 0 0 localhost.localdo:53722 113.105.146.67:http TIME_WAIT

tcp 1 0 localhost.localdo:43610 220.181.124.4:http CLOSE_WAIT

tcp 0 0 localhost.localdo:42858 118.186.66.51:http TIME_WAIT

Active UNIX domain sockets (w/o servers)

Proto RefCnt Flags Type State I-Node Path

unix 2 [ ] DGRAM 10302 /run/systemd/notify

unix 2 [ ] DGRAM 9310 /run/systemd/journal/syslog

…下面省略

解释下:

Proto:网络数据包协议,主要TCP 和 UDP

Recv-Q:非由用户进程连接到此的socket的复制的总字节数

Send-Q:非由远程主机传过来的acknowledged总字节数

LocalAddress:本地IP端口

ForeignAddress:远程主机IP端口

State:连接状态,主要有建立ESTABLISED以及监听LISTEN

除了上面的网络上的连接外,linux系统下进程间通过socket通信,进程间的数据有传送,下面一长串就是进程间通信数据。

Proto:一般就是Unix

RefCnt:连接到此socket的进程数量

Flags:连接标识

Type:socket访问类型。主要有确认连接STREAM与不需要确认的DGRAM两种

State:若为CONNECTED表示已连接

Path:连接到此socket的相关程序路径

范例二:找出目前系统上已在监听的网络连接及其PID:

[yidao@localhost ~]$ netstat -tlnp

(Not all processes could be identified, non-owned process info

will not be shown, you would have to be root to see it all.)

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -

tcp 0 0 127.0.0.1:7070 0.0.0.0:* LISTEN 2292/ssh

dmesg:分析内核产生的信息

vmstat:检测系统资源变化

fuser:通过文件或文件系统找出正在使用该文件的程序

# fuser [-umv] [-k [i] [-signal]] file/dir

-u:除了进程PID外,同时列出该进程的所有者

-m:对umount不成功很有效

-v:列出每个文件与程序还有命令的完整相关性

-k:找出使用该文件/目录的PID,并试图以SIGKILL这个信号给予该PID

-i:必须与-k结合使用,先询问用户再干掉这个进程

-signal:默认-9,强制终止

$ fuser -uv .

# lsof:列出被进程所打开的文件名

# lsof [-aUu] [+d]

-a:多项数据需要同时成立才显示结果

-U:仅列出Unix Like 系统的socket文件类型

-u:后接username,列出该用户相关进程所打开的文件

+d:后接目录,即找出某个目录下面已经被打开的文件

# lsof +d .

# lsof -u root | grep “bash”

=====================END======================

 

本人博客已搬家,新地址为:http://yidao620c.github.io/

分享到:
评论

相关推荐

    企鹅形象与Linux.pdf

    企鹅形象与Linux.pdf 本文主要介绍 Linux 操作系统的相关知识点,并结合企鹅形象的标识,探讨 Linux 在IT行业中的发展和应用。 Linux 操作系统是基于 Unix 的免费开源操作系统,由芬兰程序员 Linus Torvalds 于 ...

    企鹅与怪兽:互联时代的合作共享与创新模式

    企鹅与怪兽:互联时代的合作共享与创新模式

    Linux透明企鹅图像

    Linux的企鹅图标,可以用来作为头像。Linux的企鹅图标,可以用来作为头像。Linux的企鹅图标,可以用来作为头像。Linux的企鹅图标,可以用来作为头像。Linux的企鹅图标,可以用来作为头像。

    企鹅与Linux.pdf

    "企鹅与Linux.pdf" 从标题"企鹅与Linux.pdf"、描述"企鹅与Linux.pdf"、标签"Linux 操作系统 系统开发 参考文献 专业指导"和部分内容中,我们可以提炼出以下几个重要的知识点: 1. 开源软件发展的重要性:文章中...

    可爱的小企鹅-屏幕保护小程序

    在Linux环境中,屏幕保护程序的设置和管理通常通过桌面环境的控制面板或者命令行工具实现。例如,GNOME、KDE等桌面环境都有内置的屏幕保护设置,用户可以在这里选择启用或禁用屏幕保护,以及选择不同的屏幕保护程序...

    linux小企鹅输入法4.0.0版

    Linux小企鹅输入法,全称为Fcitx输入框架,是一款专门为Linux操作系统设计的开源输入法引擎。在Linux世界中,Fcitx以其轻量级、高效和高度可定制性而受到用户喜爱。版本4.0.0是该输入法框架的最新迭代,带来了诸多...

    漫画赏析:Linux 内核到底长啥样?

    Linux内核是操作系统的核心部分,负责系统资源的管理,例如CPU、内存、设备驱动程序等。它为用户空间提供程序运行的基础服务,同时管理进程和硬件之间的交互。在程序员和系统管理员的世界里,Linux内核的重要性...

    linux企鹅

    linux企鹅

    Linux操作系统:Linux的前世今生.pptx

    Linux的前世今生 UNIX操作系统的出现: 20世纪60年代。当时麻省理工学院、美国通用电气、贝尔实验室 三家著名的机构联合起来,开发Multics项目。这个项目最后并没有成 功。不过却在这基础之上诞生了UNIX操作系统。 ...

    企鹅与Linux (1).pdf

    1. **Linux的普及与企鹅形象**:Linux的知名度随着其发展逐渐提升,企鹅作为Linux的代表形象也越来越广泛地出现在各种媒体上,成为了Linux的标志。 2. **Linux培训**:文档可能提到了一些提供Linux培训的网站,例如...

    企鹅智酷:互联网+九大传统行业转型报告

    企鹅智酷:互联网+九大传统行业转型报告

    linux企鹅图标全集

    在Linux操作系统中,企鹅是其著名的吉祥物,象征着开放源码的精神和社区的热情。这个"linux企鹅图标全集"很可能包含了不同设计、不同风格的企鹅图标,供用户自定义系统界面或者用于各种创意项目。这些图标可能包括...

    字符组成的Linux企鹅标志

    Linux源代码组成的企鹅图像,建议用Firefox观看,用[CTRL]+[-] 缩小观看

    计算机病毒与防护:Linux介绍.ppt

    Linux的吉祥物是企鹅Tux,象征着其在技术界的冷静与智慧。Linux内核由林纳斯·托瓦兹(Linus Torvalds)于1991年创建,至今已经发展到多个主要版本,如标题中提及的内核版本号由三部分组成:主版本号、次版本号和...

    Linux系统公司培训内部资料

    - **多任务和多用户支持**:Linux支持多个用户同时登录,并允许多个应用程序在同一时间运行,各个应用程序之间相互独立。 - **用户界面友好**:通过X Window System提供了类似于Windows的图形用户界面,使操作更加...

    《Linux网络操作系统配置和管理》补充习试题库完整.doc

    4. **Linux吉祥物**:Linux的吉祥物是一只名为Tux的企鹅。 5. **Linux的特性**:Linux是开放资源的操作系统,源代码可供公众自由查看、修改和分发。 6. **Linux内核版本分类**:内核版本分为开发版和稳定版。稳定...

    《帝企鹅日记》观后感字.doc

    而纪录片《帝企鹅日记》如同一股清泉,为我们带来了自然界的另一种声音——关于生命的坚韧、爱情的纯粹和亲情的伟大。 《帝企鹅日记》以其独特的视角,记录了南极洲帝企鹅在极端恶劣环境下的生存状态。南极大陆的...

    企鹅智酷:2019-2020中国互联网趋势报告.pdf

    企鹅智酷:2019-2020中国互联网趋势报告.pdf

    Linux系统教程

    - 优秀的内存管理和文件系统:Linux提供了高效的内存管理和灵活的文件系统,使得资源管理更为高效。 3. Linux相关职业: - Linux系统管理员负责维护和配置Linux系统,确保其稳定运行。 - Linux程序员使用C/C++、...

    linux学习1

    - **程序兼容性**:Linux与Windows程序不兼容,Linux使用不同的软件包管理器(如rpm或deb)进行安装。 6. **虚拟机安装** 在学习Linux时,通常会在虚拟机上先进行实践,例如使用VMware Workstation和CentOS。...

Global site tag (gtag.js) - Google Analytics