日期:2014-05-16 浏览次数:20750 次
在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??