ps
top
nice
free
screen
程序与进程
程序是静态的(文件),进程是动态的(运行的程序)
进程和线程:
一个程序至少有一个进程,一个进程至少有一个线程。
进程之间内存是独立的
线程之间内存共享。高并发好一些 安全性差一些。
查看进程树:
pstree 树形结构显示系统进程信息
[[email protected] ~]# pstree
init-+-NetworkManager
|-abrtd
|-acpid
|-atd
|-auditd---{auditd}
|-automount---4*[{automount}]
-p 显示进程号
[[email protected] ~]# pstree-p |more
init(1)-+-NetworkManager(1321)
|-abrtd(1618)
|-acpid(1412)
|-atd(1637)
|-auditd(1227)---{auditd}(1228)
|-automount(1489)-+-{automount}(1490)
| |-{automount}(1491)
| |-{automount}(1494)
| `-{automount}(1497)
显示目录树形结构 tree
[[email protected] ~]# rpm-ivh /mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm
warning:/mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, keyID c105b9de: NOKEY
Preparing... ########################################### [100%]
[[email protected] ~]# tree/boot
/boot
├── config-2.6.32-431.el6.x86_64
├── efi
│ └── EFI
│ └── redhat
│ └── grub.efi
├── grub
│ ├──device.map
│ ├──e2fs_stage1_5
│ ├──fat_stage1_5
│ ├──ffs_stage1_5
│ ├── grub.conf
│ ├──iso9660_stage1_5
│ ├──jfs_stage1_5
│ ├── menu.lst-> ./grub.conf
列出目前所有正在内存当中的进程
ps
1)ps a显示现行终端机下的所有程序,包括其他用户的程序。
2)ps-A 显示所有程序。
3)psc 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)pse 列出程序时,显示每个程序所使用的环境变量。
6)psf 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps-H 显示树状结构,表示程序间的相互关系。
8)ps-N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)pss 采用程序信号的格式显示程序状况。
10)psS 列出程序时,包括已中断的子程序资料。
11)ps -t <终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u以用户为主的格式来显示程序状况。
13)ps x显示所有程序,不以终端机来区分。
manps
ps - report a snapshot of the currentprocesses. 报告当前进程的快照
[[email protected]~]# ps -aux
Warning:bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19356 1536 ? Ss 11:08 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 11:08 0:00 [kthreadd]
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 (将进程转到后台,并使之挂起)
ctrl-c是发送 SIGINT信号,终止一个进程
ctrl-z是发送SIGSTOP信号,挂起一个进程
ps-aux | grep vim
[[email protected]~]# ps -aux | grep vim
Warning:bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ
root 3460 0.2 0.3 143660 3340 pts/1 T 14:41 0:00 vim a.txt
root 3462 0.0 0.0 103252 824 pts/1 S+ 14:42 0:00 grep vim
Z :该程序应该已经终止,但是其父程序却无法正常的终止它。造成zombie(僵尸)程序的状态
D 不可中断状态 了解
< 高优先级的
N低优先级的
L有内存分页但是带锁
s包含子进程
l多线程
+前台程序()
START: 该 process 被触发启动的时间
TIME:该process 实际使用CPU运作的时间
COMMAND:该程序的实际指令
了解 : ps -ef
ps -aux 是用BSD的格式来显示进程。
ps -ef 是用标准的格式显示进程
top 动态查看进程
统计信息区前五行是系统整体的统计信息
1 第一行是任务队列信息
同uptime命令的执行结果
[[email protected]~]# uptime
14:30:44 up 1:13, 2 users, load average: 0.05, 0.01, 0.00
14:30:44 当前时间
up 1:13 系统运行时间,格式为时:分
2users 当前登录用户数
loadaverage: 0.05, 0.01, 0.00 系统负载,即任务队列的平均长度。三个数值分别为1分 钟、5分钟、15分钟前到现在的平均值。
一般来说,每个CPU内核当前活动进程数不大于3,则系统运行良好。如果主机时四核cpu的话,那么只要uptime最后输出的一串字符数值小于4*3=12 即表示系统负载不是很严重
2 第二、三行为进程和CPU信息
[[email protected]~]# top
top- 15:10:10 up 1:52, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 136total, 1 running, 136 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%
Mem: 1004412k total, 324160k used, 680252k free, 40040k buffers
Swap: 204792k total, 0k used, 204792k free, 151096k cached
当有多个CPU时,这些内容可能会超过两行。内容如下
Tasks:136 total 进程总数
1running 正在运行的进程数
136 sleeping 睡眠的进程数
0stopped 停止的进程数
0zombie 僵尸进程数
Cpu(s): 0.0%us 系统用户进程使用CPU百分比。不包括调高优先级的进程。CPU% 是 由每个核的CPU占用率之和算出来的。如果你是4核CPU核1 cpu使用 率为100% 核2 cpu使用率为100% ,则会出现cpu高于100%的象 最 终为200%
0.3%sy 内核中进程占用cpu百分比
0.0%ni 用户进程空间内改变过优先级的进程占用的cpu百分比
99.7%id 空闲cpu百分比
第四五行 为内存信息
Mem: 1004412k total 物理内存总量
324160kused 使用的物理内存总量
680252kfree 空闲的内存总量
40040kbuffers 用做内核缓存的内存量和 free -k 一个意思
Swap: 204792k total 交换分区总量
0kused 使用的交换分区总量
204792kfree 空闲交换分区总量
151096kcached 缓冲的交换分区总量。内存中的内容被换出到交换区,而后又被还 如到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已 存在于内存中的交换区大小。相应的内存再次被换出时可不必再对 交换区写入。
进程信息
PID 进程id
USER 进程所有者的用户名
NI nice值(进程优先级)。负值表示高优先级,正值小时低优先级
RES 实际使用内存大小
进程状态
D=不可中断的睡眠状态
S R=运行 T=跟踪/停止 Z=僵尸进程
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行
top 快捷键
q 退出
M 按内存排序
P 按cpu 排序
默认3s刷新一次 按空格立即刷新
<> 上下翻页
控制(关闭)进程
kill 向进程发送信号(停止进程)
1 HUP 重新加载配置文件。类似重启
2 INT 和ctrl+c 一样 一般用于通知前台进程组终止进程
9 KILL 强行终端
19 STOP 和 ctrl +Z 一样
[[email protected] ~]# ps -aux | grep top
Warning: bad syntax, perhaps a bogus ‘-‘? See/usr/share/doc/procps-3.2.8/FAQ
root 2530 0.5 0.1 15036 1216 tty1 S+ 09:36 0:00 top
root 2555 0.0 0.0 103252 820 pts/0 S+ 09:37 0:00 grep top
[[email protected] ~]# kill -9 2530
[[email protected] ~]# ps -aux | grep top pgerp -l httpd
Warning: bad syntax, perhaps a bogus ‘-‘? See/usr/share/doc/procps-3.2.8/FAQ
root 2559 0.0 0.0 103252 820 pts/0 S+ 09:38 0:00 grep top
[[email protected] ~]# ps aux | grep httpd 多进程时
root 2609 0.0 0.3 184284 3832 ? Ss 09:42 0:00 /usr/sbin/httpd
apache 2612 0.0 0.2 184284 2436 ? S 09:42 0:00 /usr/sbin/httpd
apache 2613 0.0 0.2 184284 2436 ? S 09:42 0:00 /usr/sbin/httpd
apache 2614 0.0 0.2 184284 2436 ? S 09:42 0:00 /usr/sbin/httpd
apache 2615 0.0 0.2 184284 2436 ? S 09:42 0:00 /usr/sbin/httpd
[[email protected] ~]# pkill httpd 或 killall httpd
[[email protected] ~]# ps -aux | grep httpd
Warning: bad syntax, perhaps a bogus ‘-‘? See/usr/share/doc/procps-3.2.8/FAQ
pkill killall 通过程序名字 直接杀死所有进程
或者 杀掉父进程 kill 2609
优先级控制
nice 值 -20 ~19 越小优先级越高 普通用户 0 - 19
作用: 以什么优先级运行进程。 默认优先级是0
# 当 vim a.txt 出现
Found a swap file by name".a.txt.swp"
时 rm -rf .a.txt.swp kill 进程是不管用的
[[email protected] ~]# vim a.txt top NI 值 是0
nice -n -5 vim a.txt
[[email protected] ~]# ps -aux | grep vim
Warning: bad syntax, perhaps a bogus ‘-‘? See/usr/share/doc/procps-3.2.8/FAQ
root 3177 0.0 0.3 143660 3336 pts/1 T< 10:29 0:00 vim a.txt
root 3184 0.0 0.0 103252 820 pts/1 S+ 10:29 0:00 grep vim
[[email protected] ~]# top -p 3177
PIDUSER PR NI VIRT RES SHR S %CPU %MEM TIME+
3177root 15 -5 140m 3336 2188 T 0.0 0.3 0:00.03
renice #修改正在运行的进程的优先级
renice -n 5 PID 修改进程优先级
nice -n -5 vim a.txt
[[email protected] ~]# ps -aux | grep vim
Warning: bad syntax, perhaps a bogus ‘-‘? See/usr/share/doc/procps-3.2.8/FAQ
root 3230 0.5 0.3 143660 3336 pts/1 T< 10:37 0:00 vim a.txt
root 3232 0.0 0.0 103252 820 pts/1 S+ 10:37 0:00 grep vim
[[email protected] ~]# top -p 3230
PIDUSER PR NI VIRT RES SHR S %CPU %MEM TIME+
3230root 25 -5 140m 3336 2188 T 0.0 0.3 0:00.03
[[email protected] ~]# renice -n 5 3230
3230: old priority -5, new priority 5
[[email protected] ~]# top -p 3230
PIDUSER PR NI VIRT RES SHR S %CPU %MEM TIME+
3230root 25 5 140m 3336 2188 T 0.0 0.3 0:00.03
了解
前后台进程切换
jobs 列出所有后台进程
[[email protected] ~]# vim a.txt &
[1] 3282
[[email protected] ~]# jobs
[1]+ Stopped vim a.txt #[1] 后台进程 序列号
fg 后台程序改到前台
用法 :fg 后台进程 id
fg 1
查看内存
free 与 /proc
free 查看系统内存量
-m 按 MB 显示
buffers #缓存从磁盘读出来的内容
cached #缓存需要写入磁盘的内容
例:
[[email protected] ~]# free -m
total used free shared buffers cached
Mem: 980 649 331 0 61 393
-/+ buffers/cache: 194 785
Swap: 199 0 199
运行
[[email protected] ~]# find / #在另一终端查看buffers增加速度
[[email protected] ~]# dd if=/dev/zero of=a.txtbs=10M count=10 在另一终端查看cache的增加速度
[[email protected] ~]# free
total used free shared buffers cached
Mem: 1004412 664844 339568 0 63012 402448
-/+ buffers/cache: 199384 805028
Swap: 204792 0 204792
[[email protected] ~]# free
total used free shared buffers cached
Mem: 1004412 A B 0 C D
-/+ buffers/cache: X Y
Swap: 204792 0 204792
X=A-C-D
Y=B+C+D
screen 实战后台实时执行命令备份命令
[[email protected] ~]# rpm -ivh/mnt/Packages/screen-4.0.3-16.el6.x86_64.rpm
warning:/mnt/Packages/screen-4.0.3-16.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, keyID c105b9de: NOKEY
Preparing... ###########################################[100%]
1:screen ########################################### [100%]
1 直接在命令行键入screen命令
[[email protected] ~]# screen
暂时中断会话
在screen窗口键入 ctrl+a+d screen 会给出 detached(分离)提示
直接关闭当前pts
[[email protected] ~]# screen -ls #列出分离的会话
There is a screen on:
5448pxs-0.xuegod63 (Detached)
1 Socket in /var/run/screen/S-root.
[[email protected] ~]# screen -r 4086 #重新连接会话