Linux入门小抄-part4.2-Linux高阶知识点(中)
一.进程管理
1.1、进程概念
进程是操作系统中非常重要的一个概念,进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程。
子进程与父进程:一个进程产生另外一个进程,产生的进程称为子进程,生成另外一个进程的进程称为父进程
1.2、进程状态
进程状态总体来看主要包括三种,分别是就绪状态、运行状态、等待状态,就绪状态指的是进程除了CPU资源,其他运行资源都已获得,当就就绪状态的进程得到CPU资源时,则进入进程进入运行状态,运行状态的进程在时间片用完后会重新转换成就绪状态,如果在运行时进程遇到IO等阻塞操作,则进程会进入等待状态,等待状态的进程当阻塞操作完成后,进程将进入就绪状态。
1.3、进程管理常用操作
-
PS命令
-
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
-
ps 命令常用选项包括:
1、a显示所有用户的进程
2、u显示用户名和启动时间
3、x显示所有进程,包括没有控制终端的进程
4、e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略
5、l显示进程详细信息,按长格式显示
-
ps -au 显示所有用户进程,并给出用户名和启动时间等详细信息
ps -aux 显示所有用户进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息
ps -el 按长格式显示进程详细信息
ps -ef 也可以用来显示进程,这个命令可以看到ppid父进程号 -
- 以上命令执行结果出现的各个字段可能大家不太认识,请接法宝:
-
USER: 进程所有者
PID: 进程号
PPID: 进程的父进程ID
%CPU: CPU占用率
C: 进程的CPU占用率
%MEM: 内存占用率
VSZ: 表示如果一个程序完全驻留在内存的话需要占用多少内存空间;
RSS: 指明了当前实际占用了多少内存;
TTY: 终端的次要装置号码 (minor device number of tty)
F:进程的标志
S:进程的状态
STAT: 该进程程的状态,有以下值
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的进程
N: 低优先序的进程
L: 有记忆体分页分配并锁在记忆体内
PRI:进程的优先权
NI:进程的Nice值
ADDR:进程的地址空间
SZ:进程占用内存的大小
WCHAN:进程当前是否在运行
TTY:进程所属终端
START: 进程开始时间
TIME: 执行的运行时间
COMMAND:所执行的指令
CMD:进程的命令
-
-
kill/pidof/pkill命令
-
有时候某个进程可能会长期占用CPU资源或无法正常执行或超出运行时间等,此时可能希望人工干预直接将进程杀死,这时候kill命令可以派上用场
-
比较常用得是下面这几个
-
kill pid 直接杀死进程,但不能保证一定能杀死
-
kill -9 pid 强制杀死进程
-
pidof命令用于查看某个进程的进程号(例如:pidof httpd)
-
-
pkill命令可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉
-
-
-
进程切换
-
前台进程指的是进程在执行时会将命令行阻塞,直到进程执行完毕;后台进程指的是进程在执行时不会阻塞当前命令行,而是在系统后台执行
-
常用命令:
-
1、ctrl + c 终止进程
-
2、ctrl + z 挂起进程
-
3、fg命令将进程转换到前台执行
-
4、bg命令将进程转换到后台执行
-
5、jobs命令查看任务
-
-
-
top命令
-
Top 命令可以定期显示所有正在运行和实际运行并且更新到列表中,它显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令。它也会显示内存和 CPU 使用率过高的正在运行的进程。
-
- 按q退出
-
-
pstree命令
- 看名字我们就能翻译到:进程树;将进程间的关系以树结构形式展示,能清楚的看到各个进程之间的父子关系.
- 常用命令:
-
pstree :以树状形式显示进程
-
-
pstree -p : 以树状形式显示进程,并且显示进程号
-
-
-
jps命令
-
JPS命令是JDK提供的一个检查系统是否启动了JVM进程的一个进程。不是linux系统自带的。主要任务就是用来检查java进程的。
-
-
二.计划任务
2.1、概念
计划任务在Linux的体现主要分为at和crontab,其中:
at:通过at命令安排任务在某一时刻执行一次
crontab:通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
这里我们主要介绍后者.
2.2、命令服务管理crontab
在CentOS系统上,crontab服务的名称叫做crond
- 1、安装 : yum -y install crontabs
-
2、服务操作说明
- service crond start ## 启动服务
- service crond stop ## 关闭服务
- service crond restart ## 重启服务
- service crond reload ## 重新载入配置
- service crond status ## 服务状态
- chkconfig --list ## 查看crontab服务是否已设置为开机启动,执行命令:
-
chkconfig --level 35 crond on ## 加入开机自动启动:
-
3、crontab功能使用
-
1.命令格式
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
参数说明:
-u user:用来设定某个用户的crontab服务,例如,”-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:删除定时任务配置,从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
命令示例:
crontab file [-u user] ## 用指定的文件替代目前的crontab。
必须掌握:
crontab -l [-u user] ## 列出用户目前的crontab.
crontab -e [-u user] ## 编辑用户目前的crontab.
补充:通过crontab添加的计划任务都会存储在/var/spool/cron/目录里
- 2.配置说明
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时0~23(0表示0点) 7-9表示:7点到9点之间
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
- 例子:
- 记得我们以前说过一个一劳永逸的设置系统时间吗?那时我们提到过计划任务.当时我们是这个做的:
- 使用命令:crontab -e
- 然后往里加入一行内容 */10 * * * * ntpdate cn.pool.ntp.org
- 上面的配置表示,每隔十分钟从202.120.2.101该时间服务器同步一次时间。
- 保存退出
- 这个就是一个计划任务.
- 记得我们以前说过一个一劳永逸的设置系统时间吗?那时我们提到过计划任务.当时我们是这个做的:
-