、工作管理
1、前台程序放后台程序 命令后 加 &
2、任务执行时将前台任务任务放到后台中并【暂停】 ctr + z
3、jobs 观察后台工作状态 及多少任务在执行,可以通过 help jobs查看jobs选项
[root@linux ~]# jobs [-lrs]
参数:
-l :除了列出 job number 之外,同时列出 PID
-r :仅列出正在背景 run 的工作;
-s :仅列出正在背景当中暂停 (stop) 的工作。
范例:
范例一:观察目前的 bash 当中,所有的工作,与对应的 PID
[root@linux ~]# jobs -l
[1]+ 24988 Stopped /usr/bin/vim ~/.bashrc
[2]- 25006 Stopped /usr/bin/vim ~/.bash_history
4、后台工作放前台 fg + %number
5、前台工作放后台后暂停,让后台工作重新运行 bg %number
6、管理后台程序 kill
[root@linux ~]# kill -signal %jobnumber
[root@linux ~]# kill -l
参数:
-l :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些?
signal :代表给予后面接的那个工作什么样的指示啰!用 man 7 signal 可知:
-1 :重新读取一次参数的设定档 (类似 reload);
-2 :代表与由键盘输入 [ctrl]-c 同样的动作;
-9 :立刻强制删除一个工作;
-15:以正常的程序方式终止一项工作。与 -9 是不一样的。
范例:
范例一:找出目前的 bash 环境下的背景工作,并将该工作删除。
[root@linux ~]# jobs
[1]+ Stopped vim bashrc
[root@linux ~]# kill -9 %1
[1]+ 已砍掉 vim bashrc
范例:找出目前的 bash 环境下的背景工作,并将该工作终止掉。
[root@linux ~]# jobs
[1]+ Stopped vim bashrc
[root@linux ~]# kill -SIGTERM %1
[1]+ 终止 vim bashrc
# -SIGTERM 与 -15 是一样的!您可以使用 kill -l 来查阅!
网页给出杀死进程的多种方法:http://blog.csdn.net/andy572633/article/details/7211546
关于信号的信息可以参考网页:http://www.xuejiehome.com/blread-1596.html
2、 程序观察
静态ps以及动态top来观察程序的运行,以及使用pstree来查看程序之间的联系
了解ps的使用,可以使用info ps来具体查看ps的信息
ps 的参数有
[root@linux ~]# ps aux
[root@linux ~]# ps -lA
[root@linux ~]# ps axjf
参数:
-A :所有的 process 均显示出来,与 -e 具有同样的效用;
-a :不与 terminal 有关的所有 process ;
-u :有效使用者 (effective user) 相关的 process ;
x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
l :较长、较详细的将该 PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。
特别说明:
由于 ps 能够支持的 OS 类型相当的多,所以他的参数多的离谱!
而且有没有加上 - 差很多!详细的用法应该要参考 man ps 喔!
常用的操作ps有 ps aux
范例二:列出目前所有的正在内存当中的程序:
[root@linux ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 1740 540 ? S Jul25 0:01 init [3]
root 2 0.0 0.0 0 0 ? SN Jul25 0:00 [ksoftirqd/0]
我们必须要知道的是『疆尸 (zombie) 』程序是什么? 通常,造成疆尸程序的成因是因为该程序应该已经执行完毕,或者是因故应该要终止了, 但是该程序的父程序却无法完整的将该程序结束掉,而造成那个程序一直存在内存当中..... 如果您发现在某个程序的 CMD 后面还接上 <defunct> 时,就代表该程序是疆尸程序啦
top
top 也是个挺不错的程序观察工具!但不同于 ps 是静态的结果输出, top 这个程序可以持续的监测 (monitor) 整个系统的程序工作状态,例如上面的范例一所示啊! 在预设的情况下,每次更新程序资源的时间为 5 秒,不过,可以使用 -d 来进行修改。
[root@linux ~]# top [-d] | top [-bnp]
参数:
-d :后面可以接秒数,就是整个程序画面更新的秒数。预设是 5 秒;
-b :以批次的方式执行 top ,还有更多的参数可以使用喔!
通常会搭配数据流重导向来将批次的结果输出成为档案。
-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。
-p :指定某些个 PID 来进行观察监测而已。
在 top 执行过程当中可以使用的按键指令:
? :显示在 top 当中可以输入的按键指令;
P :以 CPU 的使用资源排序显示;
M :以 Memory 的使用资源排序显示;
N :以 PID 来排序喔!
T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
k :给予某个 PID 一个讯号 (signal)
r :给予某个 PID 重新制订一个 nice 值。
范例:
范例一:每两秒钟更新一次 top ,观察整体信息:
[root@linux ~]# top -d 2
top - 18:30:36 up 30 days, 7 min, 1 user, load average: 0.42, 0.48, 0.45
Tasks: 163 total, 1 running, 161 sleeping, 1 stopped, 0 zombie
Cpu(s): 4.7% us, 4.0% sy, 6.3% ni, 82.5% id, 0.4% wa, 0.1% hi, 2.0% si
Mem: 1033592k total, 955252k used, 78340k free, 208648k buffers
Swap: 1052216k total, 728k used, 1051488k free, 360248k cached
<==如果加入 k 或 r 时,就会有相关的字样出现在这里喔!
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3981 apache 34 19 84012 11m 7352 S 17.3 1.2 0:00.09 httpd
1454 mysql 16 0 289m 40m 2228 S 3.8 4.0 115:01.32 mysqld
3985 dmtsai 15 0 2148 904 668 R 3.8 0.1 0:00.03 top
1 root 16 0 3552 552 472 S 0.0 0.1 0:08.90 init
2 root RT 0 0 0 0 S 0.0 0.0 0:52.76 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:03.01 ksoftirqd/0
kill 后面接%jobnumber或者后面直接接pid 杀死某一个进程
kill all 将下达指令的名称的进程杀死
killall -9 httpd #将以httpd命名的进程杀死
free [-b|-k|-m|-g] [-t] #显示系统的版本内核等信息
参数:
-b :直接输入 free 时,显示的单位是 Kbytes,我们可以使用 b(bytes), m(Mbytes)
k(Kbytes), 及 g(Gbytes) 来显示单位喔!
-t :在输出的最终结果,显示物理内存与 swap 的总量。
uname [-asrmpi] #显示系统版本信息
参数:
-a :所有系统相关的信息;
-s :系统核心名称
-r :核心的版本
-m :本系统的硬件名称
-p :CPU 的类型
-i :硬件的平台 (ix86)
uptime #就是显示出目前系统已经开机多久的时间
sar [-ru] [秒数] [次数] #主动侦测主机资源的使用情况
参数:
-u :进行 CPU 资源的统计;
-r :进行主存储器目前状态的分析
3、关于程序的顺序执行利用ps -l可以查看当前环境进程信息,为了是使得各程序的运行合理,系统为每个进程都分配优先级,用户可以通过nice这个参数为某个进程调整优先级,
nice影想程序的优先级,PRI(new) = PRI(old) + nice,数字越小代表优先级越高。
• 一般使用者的 nice 值为 0 ~ 19 ;
• root 可用的 nice 值为 -20 ~ 19 ;
一开始执行程序就立即给予一个特定的 nice 值:用 nice 指令;
调整某个已经存在的 PID 的 nice 值:用 renice 指令。
nice [-n] command #调用nice函数
整个nice的操作是在父子进程之间进行传递的,父进程的nice改变,相应的子进程的nice值也发生改变。