linux(六)__进程与任务控制

一、程序、进程、线程

1.程序是一个普通文件,是一系列指令和数据的集合,是一个静态的实体,是程序员写好之后存储于外设之上的代码。它是"死"的,而进程和程序都是"活"的。

2.进程是程序的执行实例,即运行中的程序,同时也是程序的一个副本;程序是放置于磁盘的,而程序是位于内存中的。每一个进程都分配一个ID号。

每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如WWW服务器。

3.线程是比进程更小的执行单元,一个进程至少包括一个线程。一个进程要想同时在多颗CPU上运行,必须得分成互不影响的多个执行流,这些执行流就是线程。

进程有独立的内存地址空间,线程没有

线程不能独立存在,它是由进程创建的。(在linux下是fork,在java下是Thread)

二、进程的分类

按照进程的功能和运行的程序分类,进程可划分为两大类:

? 系统进程:可以执行内存资源分配和进程切换等管理工作;而且,该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行。

? 用户进程:通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭。

针对用户进程,又可以分为交互进程、批处理进程和守护进程三类。

? 交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。

? 批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程。

? 守护进程:守护进程是一直运行的一种进程,经常在linux系统启动时启动,在系统关闭时终止。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。

例如httpd进程,一直处于运行状态,等待用户的访问。还有经常用的crond进程,这个进程类似与windows的计划任务,可以周期性的执行用户设定的某些任务。

二、ps命令—静态显示系统执行的进程

ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数

显示详细的进程信息

1、 ps -a :意思是说显示当前终端的所有进程信息。

2、以用户的格式显示进程信息。

ps -u :以用户的格式显示进程信息。

3、显示后台进程运行参数:

ps -x :显示后台进程运行的参数。

4、可以使用ps -aux 显示全面的进程信息。

Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。

ps -ef 是用标准的格式显示进程的、其格式如下

其中各列的内容意思如下
UID    //用户ID、但输出的是用户名 
PID    //进程的ID 
PPID    //父进程ID 
C      //进程占用CPU的百分比 
STIME  //进程启动到现在的时间 
TTY    //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 
CMD    //命令的名称和参数

ps aux 是用BSD的格式来显示、其格式如下

同ps -ef 不同的有列有
USER      //用户名 
%CPU      //进程占用的CPU百分比 
%MEM      //占用内存的百分比 
VSZ      //该进程使用的虚拟內存量(KB) 
RSS      //该进程占用的固定內存量(KB)(驻留中页的数量) 
STAT      //进程的状态 
START    //该进程被触发启动时间 
TIME      //该进程实际使用CPU运行的时间

其中STAT状态位常见的状态字符有
D      //无法中断的休眠状态(通常 IO 的进程); 
R      //正在运行可中在队列中可过行的; 
S      //处于休眠状态; 
T      //停止或被追踪; 
W      //进入内存交换 (从内核2.6开始无效); 
X      //死掉的进程 (基本很少见); 
Z      //僵尸进程; 
<      //优先级高的进程 
N      //优先级较低的进程 
L      //有些页被锁进内存; 
s      //进程的领导者(在它之下有子进程); 
l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); 
+      //位于后台的进程组;

四、终止进程kill/killall

终止某个进程:kill 进程号

kill 16251 :表示终止进程号为16251的进程。

kill -9 16251 :因为有些进程会捕捉某些信号。如果直接不能结束进程可以用“-9”传送信息。强制终止

killall  进程名    可以清除进程及进程相关的子进程

killall  -u   username  可以杀死某一用户的所有进程

五、前后台作业管理

  • 前台作业:占据了命令提示符
  • 后台作业:启动之后,释放命令提示符,后续的操作在后台完成

前台-->后台:

①Ctrl+z: 把正在前台的作业送往后台,并且作业处于Stopped状态

②COMMAND &:让命令在后台执行

后台-->前台

fg  标号

bg让后台停止的作业继续运行

fg让后台的作业调往前台

jobs查看后台所有作业

六、动态监控进程top  退出top按q键或ctrl+c键即可退出

top与ps命令很相似。它们都用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。

退出:ctrl+c

1、监视特定用户

top :输入此命令,按回车键,查看执行的进程。

u :然后输入"u"回车,再输入用户名,即可。

2、终止指定的进程

top :输入此命令,按回车键,查看执行的进程。

k :然后输入"k"回车,再输入要结束的进程ID号。

3、指定系统状态更新的时间

top -d 10 :指定系统更新进程的时间为10秒。

14:06:22 up系统时间

4 min, 系统启动多久

1 user, 当前登陆到linux有多少用户

load avcragc: 0.02, 0.12, 0.07负载平衡,当前系统的负载情况(可全加除3大于0.6表示系统负载紧张)

37 processes:当前进程数

36 sleeping, 休眠状态进程数

1 running, 正在运行进程数

0 zombie,僵尸进程数 进程无用后仍占用内存的进程数

0 stopped处于停止状态的进程数

CPU states:  0.0% user  0.1% system  0.0% nice  0.0% iowait 99.8% idle

CPU的状态  idle为CPU闲置状态(越大越好)

Men:   255264k av,  39420k used,  215836k free,   0k shrd,  5520k buff

30632k actv,     140k in_d, 292k in_c

内存使用情况

255264k av,内存总数量

39420k used,正在使用内存数量

215836k free,空闲内存数量

Swap:  257032k av,      0k used,  257032k free           19376k cached

swap分区(虚拟内存)使用情况

swap:  257032k av,swap分区(虚拟内存)数量

0k used, 正在使用虚拟内存数量

257032k free空闲虚拟内存数量

19376k cached缓存内存

七、任务调度命令

概述:

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:

1、系统工作:有些重要的工作必须周而复始的执行。如病毒扫描等。

2、个别用户工作:个别用户可能希望执行某些程序。

设置任务调度文件:/etc/crontab

设置个人任务调度。执行crontab -e命令。接着输入任务到调度文件

例:5 * * * * ls -l /etc/ > /tmp/to.txt

意思说每小时的第五分钟执行ls -l /etc/ > /tmp/to.txt命令

任务调度的使用crontab

1、设置任务 crontab -e

2、每隔一定时间去执行

date > /home/mydatal (将当前时间覆盖写入mydata1文件中。>为覆盖写)

date显示当前时间

1)希望每天凌晨2:00去执行 date >> /home/mydate2 (>>为追加写)

0 2 * * * date >> /home/mydate2

2)希望每分钟去执行

* * * * * date >> /home/mydate2

调度文件规则:

字段名称      说明                       范围

分钟          每小时中的第几分钟执行     0-59

小时          每日的第几个小时执行       0-23

日期          每月的第几天执行           1-31

月历          每年的第几个月执行         1-12

星期          每周的第几天执行           0-6

命令名称      欲执行的命令名称及其参数

3、怎样去调度多个任务?

1)在crontab -e 中直接写多个任务  (优点:简单;缺点:太多太乱修改不方便)

2)可以把所有的任务,写入到一个可执行文件(shell编程)推荐

.sh文件为shell文件,chmod 744 mytask.sh 要使它成为可执行文件  切记

vi mytask.sh

date >> /home/mydate2

cp /home/mydate2 /root/

:wq

crontab -e

* * * * * /root/mytask.sh

4、如何终止任务

终止任务调度:

crontab -r :终止任务调度  (多任务多用户使用时禁用此命令)

crontab -l :列出当前有那些任务调度

时间: 2024-10-14 12:49:37

linux(六)__进程与任务控制的相关文章

linux c 笔记 进程控制(三)

进程退出    进程结束表示进程即将结束运行,在linux系统中进程的退出方法分为正常退出和异常退出两种.exit函数进程有三种正常终止法及两种异常终止法.(1) 正常终止:    (a) 在main函数内执行return语句.这等效于调用 exit.    (b) 调用exit函数.此函数由ANSI C定义,其操作包括调用各终止处理程序(终止处理程序在调用atexit函数时登录),然后关闭所有标准I/O流等.因为ANSI C并不处理文件描述符.多进程(父.子进程)以及作业控制,所以这一定义对

Linux环境编程之进程(六):进程组

进程组 每个进程除了有一个进程ID之外,还属于一个进程组.进程组是一个或多个进程的集合.每个进程组有一个唯一的进程组ID.进程组ID类似于进程ID--它是一个整数,并可存放在pid_t数据类型中.函数getpgrp返回调用进程的进程组ID. 每个进程组都可以有一个组长进程.组长进程的标识是,其进程组ID等于其进程ID.组长进程可以创建一个进程组,创建该组中的进程,然后终止.只要在某个进程组中有一个进程存在,则进程组就存在,这与其组长进程是否终止无关.从进程组创建开始到其中最后一个进程离开为止的时

linux c 笔记 进程控制(二)---守护进程

守护进程(Daemon),一说精灵进程,是指在后台运行的,没有控制终端与之相连的程序.它独立于控制终端周期性地执行某种任务或等待处理某些发生的事件.它是一个生存期较长的进程,守护进程常常在系统引导装入时启动,在系统关闭时终止.Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond.打印进程lqd等(这里的结尾字母d就是Daemon的意思).由于在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的

Linux中的进程及进程控制

一.整体大纲 二.基础知识 1. 进程相关概念 1)程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁....)     进程,是一个抽象的概念,与操作系统原理联系紧密.进程是活跃(运行起来的)的程序,占用系统资源.在内存中执行.(程序运行起来,产生一个进程).     程序 → 剧本(纸) 进程 → 戏(舞台.演员.灯光.道具...),同一个剧本可以在多个舞台同时上演.同样,同一个程序也可以加载为不同的进程(彼此之间互不影响)     如:同

linux基础:进程管理

1.进程和程序(process and program) 首先我们对进程作一明确定义:所谓进程是由正文段(text).用户数据段(user segment)以及系统数据段(system segment)共同组成的一个执行环境. 程序只是一个普通文件,是一个机器代码指令和数据的集合,这些指令和数据存储在磁盘上的一个可执行映象(executable image)中,所以,程序是一个静态的实体.linux是一个多任务操作系统,也就是说,可以有多个程序同时装入内存并运行,操作系统为每个程序建立一个运行环

20135239益西拉姆 Linux内核分析 进程的描述和进程的创建

[益西拉姆 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] 第六周 进程的描述和进程的创建 一. 进程的描述 进程控制块PCB——task_struct 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. struct task_struct数据结构很庞大 Linux进程的状态与操作系统原理中的描述的进程状态似乎有所不同,比如就绪状态和运行状态都是

linux应用开发-进程控制理论

linux应用开发-进程控制理论 一 进程 进程是一个具有一定独立功能的程序的一次运行活动. 二 进程特点和状态 动态性 并发性 独立性 异步性 状态 就绪 执行 阻塞 三 调度算法 进程调度:按一定算法,从一组待运行的进程中选出一个来占有CPU运行. 先来先服务 短进程优先调度 高优先级优先调度 时间片轮转法 四 调度方式 在有了等待运行的进程和调度算法后,接下来需要讨论的问题是:什么时候调度? 按调度时机,调度可分为: 抢占式调度 非抢占式调度 五 死锁 多个进程抢占同一个资源而形成的一种僵

【LINUX】 会话 进程组 作业 终端

[进程组]  进程组是一个或多个进程的集合.每个进程除了有一个进程ID之外,还属于一个进程组.  每个进程组有一个唯一的进程组ID.每个进程组都可以有一个组长进程. 组长进程的进程组ID等于其进程ID.进程组是否存在和有无组长无关. 每个进程都是属于进程组的,没有独立的进程,除非该进程组中只有一个进程,则可以说这个进程是独立的. 组长进程可以创建一个进程组,创建该组中的进程,然后终止. 但是只要有一个进程存在,则这个进程组就存在,这与其组长进程是否终止无关. 通常,它们与同一作业相关联,可以接收

Linux 线程与进程,以及通信

http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-id-3025213.html 1.首先要明确进程和线程的含义: 进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位.与程序相比,程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体.进程是程序在某个数据集上的执行,