linux学习笔记--程序与进程管理

、工作管理

1、前台程序放后台程序  命令后 加  &

2、任务执行时将前台任务任务放到后台中并【暂停】  ctr + z

3、jobs 观察后台工作状态 及多少任务在执行,可以通过 help jobs查看jobs选项

  [[email protected] ~]# jobs [-lrs]
  参数:
  -l :除了列出 job number 之外,同时列出 PID
  -r :仅列出正在背景 run 的工作;
  -s :仅列出正在背景当中暂停 (stop) 的工作。
  范例:
  范例一:观察目前的 bash 当中,所有的工作,与对应的 PID
  [[email protected] ~]# 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

[[email protected] ~]# kill -signal %jobnumber
[[email protected] ~]# kill -l
参数:
-l :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些?
signal :代表给予后面接的那个工作什么样的指示啰!用 man 7 signal 可知:
-1 :重新读取一次参数的设定档 (类似 reload);
-2 :代表与由键盘输入 [ctrl]-c 同样的动作;
-9 :立刻强制删除一个工作;
-15:以正常的程序方式终止一项工作。与 -9 是不一样的。
范例:
范例一:找出目前的 bash 环境下的背景工作,并将该工作删除。
[[email protected] ~]# jobs
[1]+ Stopped vim bashrc
[[email protected] ~]# kill -9 %1
[1]+ 已砍掉 vim bashrc
范例:找出目前的 bash 环境下的背景工作,并将该工作终止掉。
[[email protected] ~]# jobs
[1]+ Stopped vim bashrc
[[email protected] ~]# 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 的参数有

[[email protected] ~]# ps aux
[[email protected] ~]# ps -lA
[[email protected] ~]# 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

范例二:列出目前所有的正在内存当中的程序:
[[email protected] ~]# 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 来进行修改。

[[email protected] ~]# 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 ,观察整体信息:
[[email protected] ~]# 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值也发生改变。

时间: 2024-10-12 20:58:47

linux学习笔记--程序与进程管理的相关文章

Linux学习笔记&lt;十六&gt;——进程管理

Process/Thread Model Stopped:进程收到停止信号后停止运行 Ready:正在运行 Executing正在运行队列中等待 Uninterruptible sleep:不可终端指的不是CPU不响应外部硬件的中断,而是进程不响应异步信号 Interruptible sleep:等待某些事件的发生而被挂起 Zombie:进程已终止,但进程的进程控制块(以及少数资源)没被回收 程序优先级,数字越小,越优先,更优先获得运行的机会,获得更多的CPU运行时间 0-99:内核控制 100

linux学习之路之进程管理

什么是进程? 所谓进程就是将一个二进制文件加载到内存形成的一个个体,这就是一个进程. 在我们的linux系统中,系统只识别二进制文件,所以一个系统要想正常的运行时,必须启动一些二进制文件,从而形成进程,在以这些进程的方式去执行相应的任务. 我们常常听到所谓的程序,那么程序和进程是什么关系呢? 刚刚说过进程是由二进制文件加载到内存中形成的.而这些二进制文件就是程序. 可以这么来理解: 程序是实实在在地文件,是存放在磁盘上的. 进程是一个逻辑概念,进程是存在内存当中的,所以当机器重启,这些进程也随之

RHCE 学习笔记(7) 进程管理

这一节和前面比起来简单多了,主要是熟悉RHEL下的进程管理相关的常用命令 ps aux, pstree,top, jobs, kill, bg, fg 进程可以由一个进程的基础上运行另外一个进程,前者叫做父进程,后者是子进程. 比如我打开一个终端,这是一个进程,然后我在上面执行命令,打开新的程序,新的程序则是子进程. 比如说,我打开firefox 这个时候可以通过pstree来查看进程树 搜索一下firefox,可以看见 firefox是termianl的子进程 除了pstree,我们还经常使用

Linux学习笔记——程序包管理之rpm命令

RPM rpm是Linux上一个很好用的程序包管理管理器,它具有安装.卸载.升级.查询.校验.数据库维护等功能. 下面分别介绍一下rpm的各个功能: 安装: rpm {-i|--install} [install-options] PACKAGE_FILE ... -v:详细显示安装过程 -vv:相对-v更加详细 -h: 以#显示程序包管理执行进度:每个#表示2%的进度 安装过程如图 另外还有一些其他选项 [install-options] --test: 测试安装,但不真正执行安装过程:dry

Linux学习笔记——程序包管理之yum

YUM yum 是rpm程序包管理器的前段管理器.yum 主要功能是更方便的添加/删除/更新RPM 包,自动解决包的倚赖性问题,便于管理大量系统的更新问题. yum 的操作是基于yum 仓库进行的 yum repository: yum repo  yum仓库 存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata): 文件服务器: ftp:// http:// nfs:// file:/// yum 的配置 配置文件 /etc/yum.conf:为所有仓库提供公共配置

Linux学习笔记之常用用户管理类命令

开始这个话题之前应该先了解下/etc/shadow这个文件中的构造,对于列所代表的意思大体有个了解,先以ftpuser账户来介绍:后边会给出一些相应的例题来做使用说明补充(好吧我承认,这,又是一篇博客作业^_^万恶的标题党). ftpuser:$6$T9WUEls/$AK4hTO1bZ7MXW7VoMej8e7tVG1qqxPy5axVJAAIz4m6uuzZmoYDcQjUG2XlXx7klx/i8yJ1luZDtoKYwJAMa4.:16929:0:99999:7:5:: 总共有9个字段被"

Linux学习笔记十:软件包管理

在Linux的众多版本中,可以大致分成两个系列,分别是:RedHat系Linux,Debian系Linux.在这两种不同系的Linux中,软件包的管理也是有着一定的区别,但他们的原理都大致相同.这篇笔记将以RedHat系Linux为重点讲解其软件包的管理,并简单介绍Debian系Linux软件包的管理.其大致的结构如下: · RedHat系Linux软件包管理 - 1. 二进制包管理(基于rpm) - 2. 二进制包管理(基于yum) - 3. 源代码包管理 - 4. 脚本安装 · Debian

【Linux学习笔记三】文件目录管理

[注]文章中的所有截图均为centos下实验结果,亲测命令正确= ̄ω ̄= [参考资料]<Linux从入门到精通(第2版)>刘忆智 等编著 *************************************************和团队共享文件*************************************************** 1.和团队共享文件:创建工作目录,并创建一个用户组管理该目录.      $ sudo groupadd workgroup         

Linux学习笔记&lt;十二&gt;——磁盘管理

设备文件: b:块文件,按块为单位,随机访问的设备,如磁盘 c:字符文件,按字符为单位,访问有先后次序的线性设备,如键盘 ls -l查看设备文件,原显示大小的列改显示为 主设备号(major number) 用于标识设备类型 次设备号(minor number) 用于标识同一种类型的不同设备 mknod 创建块或字符设备文件 mknod [OPTION]... NAME TYPE [MAJOR MINOR] -m MODE 指定权限 例子:mknod -m 640 mydev c 66 0 硬盘