Linux运维系统工程师系列---14

进程管理

什么是程序?program

程序:完成某个功能的一段代码的集合

什么是进程?

进程是程序运行之后,在内存中的状态

如何产生一个进程?

执行一个程序或者命令就可以产生一个进程

提到进程,不得不说一个目录

/proc:是一个虚拟的文件系统,这个目录下的文件和目录都是保存在内存里的

[[email protected] ~]# ll -d /proc/

dr-xr-xr-x. 157 root root 0 Oct 10 00:33 /proc/

大小是0,根本没有占用磁盘空间,就是假的。

一.进程的查看

进程的查看:

# man ps

ps接受以下三种格式的选项:

1、UNIX格式的,以一个-开始的   ps -a

2、BSD格式的选项,不以-开始    ps aux

3、GNU长格式选项,以--开始   ps --eo

最常用的是ps aux和ps -ef

ps命令:静态的查看进程的状态

ps常用选项:

-e:显示所有进程

-f:全格式显示

a:显示所有进程(包含其他用户的进程)

u:显示有效使用者

x:显示无控制终端的进程,与a一起使用,显示所有进程

[[email protected] ~]# ps -ef | more

UID        PID  PPID  C STIME TTY          TIME CMD

root         1     0   0 Oct18 ?        00:00:04 /sbin/init

UID——进程的拥有者

PID——进程号

PPID——父进程号

C————CPU使用的资源的百分比

STIME——开始时间

TTY——运行进程的终端的名字  tty1:文本终端   pts:伪终端,虚拟终端

?:表示该进程运行不依赖终端

TIME——命令执行时间

CMD——命令的名字

ps aux:

[[email protected] ~]# ps aux | more

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

root         1     0.0  0.1   2900  1228 ?        Ss   Oct18   0:04 /sbin/init

%CPU——占用CPU的百分比

%MEM——占用内存的百分比

VSZ——占用虚拟内存的大小

RSS——驻留内存大小

TTY——运行进程的终端

STAT——进程的状态

START——进程开始时间

TIME——进程执行时间

COMMAND——命令

[[email protected] ~]# ps auxw     #w是宽屏的意思,可以将命令显示全

查看进程树:

[[email protected] ~]# pstree  以树的形式显示正在运行的进程

动态查看进程状态  top

[[email protected] ~]# top

top - 11:27:52 up 3 days,  6:02,  2 users,  load average: 0.00, 0.00, 0.00

系统时间 系统连续运行3天,6小时零2分  当前有2个用户登录 系统的平均负载,最近1分钟,5分钟,15分钟的平均负载

Tasks: 143 total,   1 running, 142 sleeping,   0 stopped,   0 zombie

总共有143个进程,其中一个是正在运行的,142个休眠的,0个停止的,0个僵尸进程

Cpu(s):  2.4%us,  0.3%sy,  0.0%ni, 96.9%id,  0.0%wa,  0.3%hi,  0.0%si,  0.0%st

us:用户空间占用的CPU的百分比;

sy:系统空间占用CPU百分比

ni:改变进程优先级的进程所占用的cpu百分比;

id:空闲进程占用空间百分比  idle

wa:IO等待占用CPU百分比

hi:硬中断占用的CPU的百分比

si:软中断占用的CPU的百分比

st:steal

Mem:   1030680k total,   870564k used,   160116k free,    88228k buffers

总共内存,已使用的,空闲的,缓存的

Swap:  2097144k total,     4244k used,  2092900k free,   543036k cached

交换分区总大小,使用的大小,空闲的大小,缓存的交换分区大小

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

13098 root      20   0 70604  21m 7592 S  3.0  2.1  10:57.93 Xorg

PR:优先级

NI:谦让值

VIRT:进程使用的虚拟内存的大小

RES:驻留内存大小

SHR:共享内存的大小

S:进程状态

TIME+:进程使用的CPU时间

只动态查看某个进程的状态

top -p pid

[[email protected] ~]# top -p 28550

二.前后台

前台运行——命令会占用运行它的终端,其他人无法再使用此终端

后台运行——命令运行之后,不会占用终端,该终端可以被其他用户使用

前台进程怎么形成?

直接在终端执行命令

[[email protected] ~]# firefox http://172.16.254.253/note/bj.ncd

后台进程怎么形成?

1)命令的调用,就是说执行命令时候,直接放到后台运行

[[email protected] ~]# firefox http://172.16.254.253/note/bj.ncd &

[1] 9834

2)如何将一个已经运行的前台进程转到后台运行

[[email protected] ~]# firefox http://172.16.254.253/note/bj.ncd

^Z     按下【ctrl】+z

[1]+  Stopped                 firefox http://172.16.254.253/note/bj.ncd

这样执行完,进程会转到后台,但是是停止的状态

查看后台运行进程的状态:

[[email protected] ~]# jobs

[1]+  Stopped                 firefox http://172.16.254.253/note/bj.ncd

前后台运行相关的命令:

bg:指定任务在后台运行

——激活后台停止的进程

[[email protected] ~]# bg %1

[1]+ firefox http://172.16.254.253/note/bj.ncd &

[[email protected] ~]# jobs

[1]+  Running                 firefox http://172.16.254.253/note/bj.ncd &

fg:激活后台命令,变成前台运行

[[email protected] ~]# fg %1

firefox http://172.16.254.253/note/bj.ncd

disown:将目标任务从列表删除,只是不能用jobs来查看了,但是可以用ps -ef查到该进程

[[email protected] ~]# fg %1

firefox http://172.16.254.253/note/bj.ncd

^Z

[1]+  Stopped                 firefox http://172.16.254.253/note/bj.ncd

[[email protected] ~]# bg %1

[1]+ firefox http://172.16.254.253/note/bj.ncd &

[[email protected]~]# disown %1

[[email protected] ~]# jobs

[[email protected] ~]# ps -ef | grep firefox | grep -v grep

root      9940  9927  0 11:51 pts/0    00:00:00 /usr/lib/firefox/firefox

前后台运行,终端一关闭,进程就终止。

保证关闭终端后,进程依然继续运行呢?

[[email protected] ~]# nohup firefox http://172.16.254.253/note/bj.ncd &

关闭终端,再查看进程,依然在

[[email protected] ~]# ps -ef | grep firefox | grep -v grep

root     10291     1  2 13:38 ?        00:00:01 /usr/lib/firefox/firefox

三.进程的终止

进程间的通信(IPC:Interconnect Progress Communication)

进程间通信方式:

1、信号 signal

2、消息 message

3、共享内存 shared memory

常用的信号的含义:

[[email protected] ~]# kill -l   #显示信号列表

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

1)SIGHUP(1):重新读取配置。不停服务的情况下,重新读取配置

2)SIGINT(2):中断,ctrl+c

3)SIGKILL(9):杀死进程,必死无疑的

4)SIGTERM(15):终止进程,但是进程不一定被终结。

强制结束

1)遇到再说

2)例子:ctrl+c

一个标签:[[email protected] ~]# sleep 300

另一个标签:[[email protected] ~]# ps aux | grep sleep | grep -v grep

root     10378  0.0  0.0   4064   524 pts/0    S+   13:47   0:00 sleep 300

[[email protected] ~]# kill -2 10378

3)kill -9 pid

[[email protected] ~]# ps -ef | grep firefox

root     10291     1  0 13:38 ?        00:00:01 /usr/lib/firefox/firefox http://172.16.254.253/note/bj.ncd

root     10406 10333  0 13:49 pts/0    00:00:00 grep firefox

[[email protected] ~]# kill -9 10291

[[email protected] ~]# ps -ef | grep firefox

root     10410 10333  0 13:49 pts/0    00:00:00 grep firefox

4)不常用,先不说

其他相关命令:

killall:

[[email protected] test]# cat loop.sh

#! /bin/bash

while true

do

echo hello > /dev/null

done

/dev/zero:无穷多个0

/dev/null:不管你扔进去什么都是空,“黑洞”

[[email protected] test]# ps -ef | grep loop

root     10505 10333 98 13:53 pts/0    00:01:10 /bin/bash /test/loop.sh

root     10523 10333  0 13:54 pts/0    00:00:00 grep loop

[[email protected] test]# ps -ef | grep loop

root     10505 10333 94 13:53 pts/0    00:01:21 /bin/bash /test/loop.sh

root     10527 10379 36 13:54 pts/1    00:00:01 /bin/bash /test/loop.sh

root     10529 10333  0 13:54 pts/0    00:00:00 grep loop

[[email protected] test]# killall loop.sh

[2]+  Terminated              /test/loop.sh

[[email protected] test]# ps -ef | grep loop

root     10535 10333  0 13:55 pts/0    00:00:00 grep loop

xkill:杀死图形化资源

运行之后,鼠标会由箭头变成一个“X”,点什么什么死

四.程序运行的nice值

nice:谦让值

作用:

指定或者调整用户进程的nice值

nice值越高,抢占资源的能力就越弱;

nice值越低,抢占资源的能力越强。

1、相关命令

nice:运行程序的时候设置谦让值

格式:

nice -n num command

renice:对已经运行的进程修改谦让值

格式:

renice num pid  或者 renice -n num -p pid

2、举例

1)使用nice直接指定

[[email protected] test]# nice -n 7 ./loop.sh &

[1] 10615

[[email protected] test]# nice -n 14 ./loop2.sh &

[2] 10623

[[email protected] test]# top   查看抢占CPU资源的情况

2)使用renice调整运行中的nice值

[[email protected]  test]# renice 19 10615

[[email protected]  test]# top

10615: old priority 7, new priority 19

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

10623 root      34  14  5068 1192 1052 R 70.4  0.1   0:49.70 loop2.sh

10615 root      39  19  5068 1192 1052 R 23.6  0.1   3:34.91 loop.sh

Linux运维系统工程师系列---14,布布扣,bubuko.com

时间: 2024-12-14 05:03:32

Linux运维系统工程师系列---14的相关文章

Linux运维系统工程师系列---15

系统日志 何谓日志? 相当于系统中的账本,会将系统中发生的事情,按照时间先后顺序,分门别类的记录到不通的文件里. 日志的用途? 当系统发生问题,或者查询历史信息的时候,我们会查询日志. 1)解决系统方面的错误 2)解决网络方面的问题 3)记录重要的事件 4)解决安全方面问题,一般分析日志,看看有无风险 日志的种类: 1)系统自带日志 2)文件系统日志  ext3/ext4 3)应用程序自带的日志,比如ssh,dhcp,http都有相应的日志 1.日志简介 Linux系统日志默认存放位置 /var

Linux运维系统工程师系列之shell脚本一则小随笔

shell随笔 一.   学好shell编程的知识储备 前面讲过,给大家留作业Linux系统命令应用: Vi/vim 编辑器的熟练使用,SSH客户端软件的设置: 基础的服务,系统服务ntp,crond,网络服务:nfs,rsync,inotify,sersync,ssh,lanmp. 补充:清空日志的三种方法: echo  " " > filename.log >filename.log cat  /dev/null > filename.log 注:工作中有的时候不

Linux运维系统工程师系列---13

定制安装 定制安装,也叫源码安装,需要自己编译源代码的安装方式 步骤: 1.解压源代码包 2.配置 configure 3.编译 make 4.安装 make install 接下来开始做实验,希望朋友们自己动手实践,有啥不清楚的可以直接提问我,我看到会及时回复. 1.解压源码包 [[email protected] base]# cd /root/Desktop/ [[email protected] Desktop]# ls gnome-terminal.desktop  MPlayer-1

Linux运维系统工程师系列---20

磁盘管理---分区---fdisk命令 查看分区信息: [[email protected] ~]# fdisk -l /dev/sda Disk /dev/sda: 107.4 GB, 107374182400 bytes255 heads, 63 sectors/track, 13054 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 51

Linux运维系统工程师系列---25

磁盘管理---文件系统检测与交换分区 (一)文件系统检测 fsck--检查和修复Linux文件系统错误. 何时用? 通常只有身为root,并且文件系统有问题的时候才使用这个命令.正常情况下不要使用此命令,否则可能会对系统产生危害. 格式:   fsck [-t 文件系统类型] 设备名称 选项: -t fs-type :这个选项可以不加,linux目前可以透过superblock分析出系统类型 [[email protected] ~]# fsck -t ext4 /dev/sdc6 fsck f

Linux运维系统工程师系列---23

磁盘管理---自动挂载 [[email protected] sdb2]# cat /etc/fstab ## /etc/fstab# Created by anaconda on Wed Oct  9 16:14:01 2013## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8)

Linux运维系统工程师系列---21

磁盘管理---分区---parted命令 实验举例: [[email protected] devices]# parted /dev/sdb(parted) help (parted) printModel: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 42.9GBSector size (logical/physical): 512B/512BPartition Table: msdos Number  Start   End    Size 

Linux运维系统工程师系列---18

磁盘管理 简单概述 文件系统             磁盘上组织文件的方法,称为文件系统. ext3   ext4区别:            ext3最大可以支持的是16TB的文件系统,最大2TB文件,支持最多32000个子目录        ext4支持1EB的文件系统,1EB=1024PB,1PB=1024TB,1TB=1024GB        最大16TB的文件.            inode相关的特性,ext4支持更大的inode,较ext3 的128字节,ext4默认256字节

Linux运维系统工程师系列---22

磁盘管理---创建文件系统与挂载 创建文件系统 格式化[[email protected] devices]# mkfs.ext4 /dev/sdb1或者[[email protected] devices]# mkfs -t ext4 /dev/sdb1 mkfs.ext4格式化时候的选项: -b--指定文件系统块的大小 -g--指定每个块组的大小 -i--指定每个i节点占用多少字节磁盘空间 -I--指定文件系统i节点所占用空间大小 -N--指定i节点的数量,近似值 -L--指定磁盘分区的标签