天天看点

进程和计划任务一、进程的概述以及Linux和Windows进程的区别二、进程的状态及优先级三、查看进程ps、top命令四、计划任务五、扩展知识(如何把一个脚本添加系统服务中)

进程和计划任务一、进程的概述以及Linux和Windows进程的区别二、进程的状态及优先级三、查看进程ps、top命令四、计划任务五、扩展知识(如何把一个脚本添加系统服务中)

而在windows等其他操作系统中,进程拥有一个进程描述符,描述一些地址空间和打开的文件等共享资源,进程中包含指向不同线程的指针,

这些线程没有进程描述符,只描述一些少量的独有的资源,因此很轻量。同时这些线程共享进程的资源。如图2所示。

进程和计划任务一、进程的概述以及Linux和Windows进程的区别二、进程的状态及优先级三、查看进程ps、top命令四、计划任务五、扩展知识(如何把一个脚本添加系统服务中)

1、进程的状态

Linux内核:抢占式多任务 进程类型: 守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程 前台进程:跟终端相关,通过终端启动的进程 注意:两者可相互转化 进程状态: 运行态:running 就绪态:ready 睡眠态: 可中断:interruptable 不可中断:uninterruptable 停止态:stopped,暂停于内存,但不会被调度,除非手动启动 僵死态:zombie,结束进程,父进程结束前,子进程不关闭

2、进程的优先级

进程优先级: 系统优先级:数字越小,优先级越高 0-139(CentOS4,5) 各有140个运行队列和过期队列 0-98,99(CentOS6) 实时优先级: 99-0 值最大优先级最高 nice值:-20到19,对应系统优先级100-139或99 Big O:时间复杂度,用时和规模的关系 O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
进程和计划任务一、进程的概述以及Linux和Windows进程的区别二、进程的状态及优先级三、查看进程ps、top命令四、计划任务五、扩展知识(如何把一个脚本添加系统服务中)

每个圈中各个含义如下:

USER: 进程的当前用户; PID : 毫无疑问, process ID的缩写,也就进程号; %CPU 进程的cpu占用率;%MEM 进程的内存占用率; VSZ 进程所使用的虚存的大小;RSS 进程使用的驻留集大小或者是实际内存的大小; TTY 与进程关联的终端(tty); STAT 检查的状态:进程状态使用字符表示的,如R(running正在运行或准备运行)、S(sleeping睡眠)、I(idle空闲)、Z (僵死)、D(不可中断的睡眠,通常是I/O)、P(等待交换页)、W(换出,表示当前页面不在内存)、N(低优先级任务)T(terminate终 止)、W has no resident pages START (进程启动时间和日期);TIME ;(进程使用的总cpu时间);COMMAND (正在执行的命令行命令)

当服务器被攻击多了一些莫名其它进程时,这是就需要杀死进程在逐一排错,用kill或killall命令】

用法:kill

-0 无作为,可以用来单纯判断进程是否运行.

-1 -HUP:强制进程重读配置文件

-2 -INT: 中止正在运行的进程;相当于Ctrl+c

-3 -QUIT: 相当于ctrl+\

-9 -KILL: 强制杀死正在运行的进程 (谨慎使用)

-15 -TERM: 终止正在运行的进程 (默认)\

killall 进程命

区别:使用kill命令的时候需要PID,而且PID是会变的,但是我们一般只知道启动进程的程序或命令名字,所以要先用ps结合grep查找对应的PID。killall可以简化这个过程,直接在killall后面跟相应 的命令即可,它会杀死所有使用这个命令名或程序名的进程。

我用ping命令举个例子

进程和计划任务一、进程的概述以及Linux和Windows进程的区别二、进程的状态及优先级三、查看进程ps、top命令四、计划任务五、扩展知识(如何把一个脚本添加系统服务中)

查看进程,看到ping的进程了

进程和计划任务一、进程的概述以及Linux和Windows进程的区别二、进程的状态及优先级三、查看进程ps、top命令四、计划任务五、扩展知识(如何把一个脚本添加系统服务中)

用kill杀死

进程和计划任务一、进程的概述以及Linux和Windows进程的区别二、进程的状态及优先级三、查看进程ps、top命令四、计划任务五、扩展知识(如何把一个脚本添加系统服务中)
进程和计划任务一、进程的概述以及Linux和Windows进程的区别二、进程的状态及优先级三、查看进程ps、top命令四、计划任务五、扩展知识(如何把一个脚本添加系统服务中)

此时ping过程已经中断

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。 -b:以批处理模式操作; -c:显示完整的治命令; -d:屏幕刷新间隔时间; -I:忽略失效过程; -s:保密模式; -S:累积模式; -i<时间>:设置间隔时间; -u<用户名>:指定用户名; -p<进程号>:指定进程; -n<次数>:循环显示的次数。

在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。

h:显示帮助画面,给出一些简短的命令总结说明;

k:终止一个进程;

i:忽略闲置和僵死进程,这是一个开关式命令;

q:退出程序;

r:重新安排一个进程的优先级别;

S:切换到累计模式;

s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;

f或者F:从当前显示中添加或者删除项目;

o或者O:改变显示项目的顺序;

l:切换显示平均负载和启动时间信息;

m:切换显示内存信息;

t:切换显示进程和CPU状态信息;

c:切换显示命令名称和完整命令行;

M:根据驻留内存大小进行排序;

P:根据CPU使用百分比大小进行排序;

T:根据时间/累计时间进行排序;

w:将当前设置写入~/.toprc文件中。

进程和计划任务一、进程的概述以及Linux和Windows进程的区别二、进程的状态及优先级三、查看进程ps、top命令四、计划任务五、扩展知识(如何把一个脚本添加系统服务中)

1、计划任务概说;

计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。在Linux中,我们经常用到 crond 服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的作务。比如我们可以在配置文件中约定每天早上4点,对httpd 服务器重新启动,这就是一个计划任务;

2、周期性任务计划cron

3、crond的启动与安装

在一般情况下,cron都是系统默认安装的,我们要查看软件包是否已经安装: [root@6 ~]#rpm -qa |grep cron CentOS 7: systemctl status crond CentOS 6: service crond status
计划周期性执行的任务提交给crond,到指定时间会自动运行 系统cron任务:系统维护作业 /etc/crontab 用户cron任务: crontab命令 日志:/var/log/cron
进程和计划任务一、进程的概述以及Linux和Windows进程的区别二、进程的状态及优先级三、查看进程ps、top命令四、计划任务五、扩展知识(如何把一个脚本添加系统服务中)
*代表所有 cron 配置计划任务的书写格式 分钟 小时 日 月 周 [用户名] 命令

4、让任务计划开机自启动

对于cron任务来讲,%有特殊用途;如果在命令中要使用%, 则需要转义,将%放置于单引号中,则可不用转义

下面举例说说,如何把一个shell脚本添加为系统服务,并跟随系统启动: 可以看到“/etc/rc.d/init.d”下有很多的文件,每个文件都是可以看到内容的,其实都是一些shell脚本。 系统服务的启动就是通过“/etc/rc.d/init.d”中的脚本文件实现的。我们也可以写一个自己的脚本放在这里。 脚本文件的内容也很简单,类似于这个样子(例如起个名字叫做“hahad”): . /etc/init.d/functions start() { echo "Starting my process " cd /opt ./haha.sh } stop() { killall haha.sh echo "Stoped" 写了脚本文件之后事情还没有完,继续完成以下几个步骤: chmod +x hahad #增加执行权限 chkconfig --add hahad #把hahad添加到系统服务列表 chkconfig hahad on #设定hahad的开关(on/off) chkconfig --list hahad #就可以看到已经注册了hahad的服务* 这时候才完成了全部工作。