rhel进程管理

本节所讲内容:

Linux进程管理

screen 实战后台实时执行命令备份命令

 

进程管理:

pstree

ps

top

nice 修改进程优先级

kill

前台后台进程切换

free 查看内存

screen

 

程序与进程:

程序是静态的(文件),进程是动态的(运行的程序)。

 

进程和线程:

一个程序至少有一个进程,一个进程至少有一个线程.
进程之间内存是独立

线程之间内存共享 ,高并发好一些 。 安全性差一些。

 

查看进程树

显示进程号 -p

systemd(1)-+-ModemManager(1017)-+-{ModemManager}(1027)

  | `-{ModemManager}(1029)

 

 

显示目录树形结构

[root@xuegod61 ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm

[root@xuegod61 ~]# tree /etc/default/

/etc/default/

├── grub

├── nss

└── useradd

 

0 directories, 3 files

 

列出目前所有的正在内存当中的进程

ps -aux

[root@xuegod61 ~]# ps -aux

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

root 1 0.0 0.0 188928 4000 ? Ss 06:57 0:02 /usr/lib/systemd/systemd--switched-root --system --deseri

root 2 0.0 0.0 0 0 ? S 06:57 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S 06:57 0:00 [ksoftirqd/0]

root 5 0.0 0.0 0 0 ? S< 06:57 0:00 [kworker/0:0H]

USER:运行此进程的用户名

• PID :该 process 的号码。

• %CPU:该 process 使用掉的 CPU 资源百分比;

• %MEM:该 process 所占用的物理内存百分比;

• VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

• RSS :该 process 占用的固定的内存量 (Kbytes)

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

 

• STAT:该程序目前的状态,Linux进程有5种基本状态:

R :(正在运行或在运行队列中等待) 

S :该程序目前正在睡眠当中 ,但可被某些讯号 (signal)唤醒。

T :该程序目前暂停

例: vim a.txt 按下: ctrl+z

[root@xuegod61 ~]# ps -aux | grep vim

root 39395 0.3 0.1 151452 5136 pts/0 T 07:50 0:00 vim a.txt

root 39397 0.0 0.0 112644 952 pts/0 S+ 07:50 0:00 grep --color=auto vim

 

ctrl-c 是发送 SIGINT 信号,终止一个进程                            停止

ctrl-z 是发送 SIGSTOP信号,挂起一个进程                            暂停

 

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

D: 不可中断状态.

< 高优先级的

  N 低优先级的

  s 包含子进程

  l 多线程

  + 前台程序

 

START:该 process 被触发启动的时间;

• TIME :该 process 实际使用 CPU 运作的时间。

• COMMAND:该程序的实际指令

 

了解:

ps -ef

ps -aux 是用BSD的格式来显示进程

ps -ef 是用标准的格式显示进程

 

top 动态查看进程

统计信息区前五行是系统整体的统计信息。

 

1、第一行是任务队列信息

 uptime  命令的执行结果:

 

[root@localhost ~]# uptime

 21:13:25 up 52 min, 4 users, load average: 0.06, 0.03, 0.05

 

其内容如下:

21:13:25

当前时间

up 52 min

系统运行时间,格式为时:分

4 users,

当前登录用户数

load average: 0.06, 0.03, 0.05

系统负载,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。

 

一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于4*3=12即表示系统负载不是很严重.

 

2. 第二、三行为进程和CPU的信息

当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total

进程总数

1 running

正在运行的进程数

28 sleeping

睡眠的进程数

1 stopped

停止的进程数

0 zombie

僵尸进程数

Cpu(s):

0.3% us

系统用户进程使用CPU百分比。 不包括调高优先级的进程。 CPU%是由每个核的CPU占用律之和算出来的。如果你是4核CPU,核1,CPU使用率为100%,核2,CPU使用率为100%。 则会出会CPU 高于100%的现象,最终为200%

1.0% sy

内核中的进程占用CPU百分比

0.0% ni

用户进程空间内改变过优先级的进程占用CPU百分比

98.7% id

空闲CPU百分比

 

第四五行为内存信息。内容如下:

Mem: 191272k total

物理内存总量

 

173656k used

使用的物理内存总量

17616k free

空闲内存总量

22052k buff/cache

用作内核缓存的内存量

和free k 一个意思

 

Swap: 192772k total

交换区总量

0k used

使用的交换区总量

192772k free

空闲交换区总量

3123008 avail Mem

总的可利用内存是多少

 

 

二.  进程信息

列名

含义

PID

进程id

USER

进程所有者的用户名

NI

进程优先级。 nice值。负值表示高优先级,正值表示低优先级

RES

实际使用内存大小。

S

进程状态。
            D=不可中断的睡眠状态
            R=运行
            S=睡眠
            T=跟踪/停止
            Z=僵尸进程

%CPU

上次更新到现在的CPU时间占用百分比

%MEM

进程使用的物理内存百分比

TIME+

进程使用的CPU时间总计,单位1/100秒

COMMAND

命令名/命令行

 

 

top快捷键:

默认3s刷新一次

空格 :立即刷新。

q退出

M按内存排序

P按CPU排序

<> 翻页

 

控制(关闭)进程:

kill 给进程发送信号(停止进程)

常用信号:

1 HUP 重新加载配置文件。类似重启。

2 INT 和ctrl+c一样 一般用于通知前台进程组终止进程

9 KILL 强行中断

19 STOP 和ctrl+z一样

 

任务:百度一下常见的信号

例:

语法:kill -9 pid

[root@xuegod61 ~]# ps -aux | grep top

root 39747 0.4 0.0 146512 2428 pts/0 S+ 08:21 0:04 top

[root@xuegod61 ~]# kill -9 39747

 

killall 通过程序的名称,直接杀死所有进程

[root@xuegod61 ~]# yum -y install httpd

[root@xuegod61 ~]# systemctl start httpd

[root@xuegod61 ~]# ps -aux | grep httpd

root 39962 0.0 0.1 226128 5052 ? Ss 08:38 0:00 /usr/sbin/httpd -DFOREGROUND

apache 39974 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND

apache 39975 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND

apache 39976 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND

apache 39977 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND

apache 39978 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND

root 39985 0.0 0.0 112644 956 pts/1 S+ 08:39 0:00 grep --color=auto httpd

[root@xuegod61 ~]# killall httpd

 

或者

pkill httpd

 

扩展

vim a.txt #出现以下情况

E325: ATTENTION

Found a swap file by the name ".a.txt.swp"

  owned by: root dated: Fri Dec 4 20:59:24 2015

 

解决思路:

1)查看一下有没有对应的进程,有的话杀死

[root@xuegod61 ~]# ps -aux | grep vim

root 39395 0.0 0.1 151452 5136 pts/0 T 07:50 0:00 vim a.txt

root 40034 0.0 0.0 112644 956 pts/0 S+ 08:43 0:00 grep --color=auto vim

[root@xuegod61 ~]# kill -9 39395

 

2)如果还不能解决

[root@xuegod61 ~]# rm -rf .a.txt.swp

 

优先级控制:

nice值 -20 ~ 19 越小优先级越高 普通用户0-19

nice

作用:以什么优先级运行进程 。默认优先级是0

语法: nice -n 优先级数字

 

[root@xuegod61 ~]# nice -n -5 vim a.txt

 

[root@xuegod61 ~]# ps -aux | grep vim

root 40128 0.0 0.1 151452 5152 pts/0 S<+ 08:48 0:00 vim a.txt

root 40149 0.0 0.0 112644 956 pts/1 S+ 08:49 0:00 grep --color=auto vim

 

[root@xuegod61 ~]# top -p 40128

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

 40128 root 15 -5 151452 5152 2528 S 0.0 0.1 0:00.05 vim

 

renice #修改正在运行的进程的优先级

[root@xuegod61 ~]# renice -n 5 40168

35281 (process ID) old priority 0, new priority 5

 

了解:

前后台进程切换:

任务:nohup 如何创建一个后台指令

jobs 列出所有的后台进程

[root@xuegod61 ~]# vim b.txt &

[2] 40281

[root@xuegod61 ~]# jobs

[1]- Stopped nice -n -5 vim a.txt

[2]+ Stopped vim b.txt

 

fg把后台进程调到前台

[root@xuegod61 ~]# fg 2

 

free 查看系统内存使用状况

[root@xuegod61 ~]# free -m

  total used free shared buff/cache available

Mem: 3937 613 2606 10 717 2999

Swap: 2047 0 2047

 

buffers #缓存从磁盘读出的内容

cached #缓存需要写入磁盘的内容

[root@xuegod61 ~]# dd if=/dev/zero of=/a.txt count=10 bs=100M

 

清空缓存

reboot

 

[root@xuegod61 ~]# echo 3 > /proc/sys/vm/drop_caches

[root@xuegod61 ~]# free -m

  total used free shared buff/cache available

Mem: 3937 561 3194 10 181 3174

Swap: 2047 0 2047

 

screen 实战后台实时执行命令备份命令。

 

1、安装screen软件包

 

[root@xuegod61 ~]# rpm -ivh /mnt/Packages/screen-4.1.0-0.21.20120314git3c2946.el7.x86_64.rpm

或者

[root@xuegod61 ~]# yum -y install screen

 

2直接在命令行键入screen命令

 

3[root@xuegod61 ~]# vim 1.sh

命令模式按ctrl+a+d,出现[detached] 即可,再关闭pst

 

4、重新打开一个终端执行以下命令

[root@xuegod61 ~]# screen -ls

There is a screen on:

  40510.pts-0.xuegod61 (Detached)

1 Socket in /var/run/screen/S-root.

 

5、调出挂起的程序

[root@xuegod61 ~]# screen -r 40510

 

6、如果你想终止screen则直接把你当前使用的终端关掉就可以了,或者exit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值