Linux的所有进程都是从init这个进程克隆而来的,init的进程号永远为1Init的父进程为swapped,它的进程号为0并在init启动之后就隐藏了。

Linux进程分为前台进程和后台进程

前台进程是指用户自己发起的进程,用户发起的进程有两种,一种是批处理进程,一种是调度进程(是指在未来的某个时间发起的一次或多次进程)

后台进程是指系统发起的不需要用户参与,即便用户不登陆也启动的进程,比如一个提供wed服务的进程,不管用户是否登陆,wed进程都会启动。后台进程也成为守护进程(daemon进程)或是服务进程。

 

ps命令的使用:

 

ps命令不加任何参数默认显示的是当前用户在当前终端上正在运行的前台进程

ps –e可以显示所有进程 

PID是进程的进程号 

TTY是显示用户从哪个终端发起的进程(这里显示问号的意思是守护进程,系统自己发起的进程,后台进程,跟任何用户都不相关) 

TIME指运行时长,占用cpu的时间之和。 

CMD发起这个进程的命令

 

ps  -ef

显示的进程信息更详细

UID发起进程的用户ID

PID进程id

PPID进程的父进程号

C表示cpu time就是cpu使用的时间

STIME运行时长

TIME指运行时长,占用cpu的时间之和。 

CMD发起这个进程的命令

SZ 指所占用的内存空间(memory size)

RSS 占用的物理内存大小

PSR是指当前机器上是一个多处理器系统,0表示在第一颗CPU上运行。

 

使用pstree命令可以查看进程树,进程之间的父子关系

ps –uroot 可以查看以root发起的进程,-u制定用户(中间不加空格)

ps –H可以显示进程父子进程之间的关系

ps –j  以作业形式显示

ps –ejH 类似作业的形式显示进程间关系,可以详细显示进程之间的父子关系,常用的组合命令

 

ps –o 可以显示用户自定义的格式,可以跟e搭配使用

 

ps axjf BSD风格显示进程的信息

STAT进程的状态:

进程的状态分为:

                     运行态R running

                     就绪态R runnable,是指已经准备好只要分配到cpu就能运行起来

                     停止态T stopped除非明确调度否则一直停止

                     睡眠态   sleep,一种为可中断(唤醒)的睡眠(S),一种为不可中断(D)

                                          S 可中断睡眠

                                          D 不可中断睡眠

                   僵死态 Z zombie当一个进程终止的时候会释放自己所占用的内存

并通知父进程来收回,在这个过程中就称为僵死。

                     小于号< :表示高优先级进程。

                              N :表示低优先级进程。

                              s  :表示会话的发起者

                              +  :位于前台的进程

                              l   :多线程的进程

ps aux DSB风格显示详细信息,DSB风格是命令后面不能加—(横杠)

 

ps常用格式:

                -ef  -eF   详细信息          sys V 风格

                aux                                                  BSD风格

 

                -ejH    查看进程树              sys V 风格

                axjf                            BSD风格

               

                -eo     制定字段自定义显示

pgrep 急于进程名或其他属性来查找进程,默认只显示进程号

 pgrep –U root   查看root名下运行的所有进程,

 

pidof  后面跟进程名可显示进程号

进程间通讯:

       因为在一个操作系统里面,每个进程都察觉不到另外进程的存在,所以进程间要通讯使用信号来通讯,就是说一个进程要发起一个信号给另外一个进程

 

使用kill –l可以查看系统中可用的信号列表

或使用 man 7 signal也可以查看

每个信号都用SIG开头后面跟信号本身意义。常用的信号有:

       15SIGTERM :表示终止,让对方完成任务之后终止。

        9SIGKILL  表示直接终止,不管任务是否完成都要终止进程。

        1SIGHUP   :表示让进程不停止的情况下,重新读取配置文件。

        2 SIGINT   :表示取消,打断。类似于ctrl + c

        18SIGCONT:相当于bg命令,在后台继续运行

        19SIGSTOP:相当于ctrl+z,在后台停止运行。

格式为kill -9 processID(init进程是不能被终止的,就算发送9信号也不会终止),也可以跟多个进程号。

killall process name 所有制定名字的进程都终止。必须跟进程名,也可以跟信号数字来终止,

kill killall 不跟信号数字的话默认使用15号信号。

 

 

 

进程优先级:

 

静态优先级  :系统制定的优先级,一般是不能调整的,范围为099之间 

动态优先级  :管理员可以手动调整,范围为100139之间。

Linux中有个nice值:通俗一点讲就算,比如一个进程优先级为120,另一个为100,为100的就会占用cpu的时间长一些,它为了让120优先级的进程尽可能多的占用cpu就会提高自己的nice值。nice值为负20到正19之间(-2019)。默认的nice值都为0。如果nice值为-20对应的优先级就为10019对应的为139

使用ps –o commnice可以查看命令的nice

有两种方式调整nice值:

nice –n N bash 可以调整bash在运行的时候的nice(在进程未运行之前调整)

renice –N pid可以调整已运行的进程nice(只有管理员才能调低nice值,普通用户只能调高)。例如renice -3 pid

 

 

动态查看进程信息

 

top(cli模式下,在gui模式下可以使用gnome-system-monitor打开类似windows管理器一样的)

每个5秒钟刷新一次,不会退出(使用q键退出)

top –d 3 可以制定每3秒钟刷新一次

top –b 做快照在屏幕上显示

top –d 3 –b 3秒做个快照在屏幕上显示一次。

top –n 2 –b 做两次快照在屏幕上显示

 

 

作业管理job

 

前台作业                          后台作业

                                                        在命令后面加一个&可以让命令后台运行

 

jobs 可以查看当前运行的作业

ctrl+z可以把正在前台运行的作业调到后台去。但作业一旦调入后台就会停止运行

bg   把已经调入后台并停止的作业在后台继续运行,格式为bg加作业id。不加id为默认带+

fg  可以调出后台运行的作业,如果有多个作业默认调出后面带+号的作业,使用fg跟数字可以调出制定id的作业。

kill  %id之间杀掉作业id%号一定要有。

 

如果后台作业正在运行,但是这是又使用logout退出了,那么后台作业就会随之停止。如果不想注销的时候作业停止则使用:

nohup  加作业命令 &  这样即便用户退出了作业依然在后台运行。