所有操作均在虚拟机Centos7.6上进行

一、程序与进程

1.进程概述

  程序是保存在外部存储介质(如硬盘、光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中处于动态执行状态的计算机程序。在Linux系统中,每个程序启动后可以创建多个进程。如提供Web服务的http程序,当有大量用户来访问web页面时,http会创建多个进程来提供服务。
  我认为程序就是我们通常看到的应用程序,进程是不同的功能入口,线程是执行任务实现功能的。

2.查看进程相关命令

本节介绍查看进程的相关命令,有不同的命令从不同的角度来查看进程信息。

(1) ps命令-查看静态进程信息

ps命令为Linux最为常用的进程查看命令,命令选项如下:
  a:显示当前终端下所有进程信息,包含其他用户进程。与“x”选项结合时显示系统中所有进程信息。
  u:使用以用户为主的格式输出进程信息。
  x:显示当前用户在所有终端下的进程信息。
  -e:显示系统内的所有进程信息。
  -l:使用长格式显示进程信息。
  -f:使用完整的格式显示进程信息。
实例
1)ps aux
输出结果如下图所示
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
上图各字段表示含义
  USER:启动该进程的用户账号的名称
  PID :该进程在系统中的数字ID,在当前系统中是唯一的 ###kill -9 PID号
  TTY :表明该进程在哪个终端上运行,“?”表示不需要终端
  STAT:显示了进程当前的状态,如S(休眠)、R(运行)、Z(僵尸)、<(高优先级)、 N(低优先级)、s(父进程)、+(前台进程)、对于僵尸进程要手动关闭
  START:启动该进程的时间
  TIME:该进程占用的CPU时间
  COMMAND:启动该进程的命令名称
  %CPU:占用CPU百分比
  %MEM:占用内存百分比
  VSZ: 占用虚拟机内存大小(swap)
  RSS: 占用物理内存的大小(物理内存)
2)ps -elf
执行结果如下图所示
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
此命令显示更加丰富的内容,如PPID表示对应进程的父进程的PID号
3)ps
执行不带任何选项的ps命令,只显示当前会话中打开的进程,执行结果如下图所示
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
我们可以看到执行ps相关命令显示的内容比较多,我们可以结合管道和grep命令来进行过滤,如:ps aux |grep bash,执行结果如下图所示
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)

(2) top命令-查看进程动态信息

top命令可以看到进程实时状态信息,默认每三秒刷新一次,输出结果如下图
我们可以用这个命令,来保持界面活动状态
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)

(3) pgrep命令-查询特定进程信息

pgrep命令可以结合进程名称、运行该进程的用户、进程所在的终端等多种信息来查询特定进程的PID号。
  -l 指定进程一部分名称进行查询,输出对应进程名和PID号
  -U 查询特定用户的进程
  -t 查询在特定终端运行的进程
实例
1)pgrep -l “log”       ##模糊查询
可查询进程名中包含“log”的进程及其PID号,执行结果如图所示
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
2)pgrep -l -U root -t tty1
可以查询root用户在tty1终端下的进程及ID号,输出结果如图所示
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)

(4) pstree命令-查看进程树

pstree命令可以输出Linux系统中各种进程的树形结构,更加直观地判断出各进程之间的相互关系(父子进程),默认情况下只显示各进程的名称,可结合选项如下:
-u 列出对应用户名
-p 列出对应PID
-a 列出完整信息
实例
1)pstree -aup
查看当前系统的进程树,输出结果如图所示
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)

3.进程控制

本节介绍的启动、调度和终止

(1)启动进程

1)手工启动进程
  由用户手工输入命令或者可执行程序命令的路径,可以启动至少一个进程。根据是否需要占用当前的输入命令的终端,手动启动可分为前台启动和后台启动。
  启动后台启动时,将“&”放在执行命令的最后面,适用耗时较长的操作,例如从光盘里复制数据,制作镜像文件操作,cp /dev/cdrom mycd.iso &,输出结果如下图所示,我们可以看出,数据在增长,而同时我们依然可以在命令终端敲其他命令,进行其他操作
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
2)调度启动进程
在服务器维护工作的过程中,经常需要执行一些比较耗时而且占用资源的任务(如数据备份),我们可以设置调度启动计划,在指定时间里完成指定的任务,通过at和crontab命令进行设置。
at命令用于设置一次性计划任务(如12:30时重启网络),crontab用于设置周期性计划任务(每周五17:30备份数据库)。
具体内容在下面的部分介绍

(2)改变进程的运行方式

1)挂起当前进程
ctrl+z组合键可以把进程挂起,即挂到后台进程并停止执行。
当我们在下载系统镜像时
wget https://dw.fjweite.cn/syt/windows_7_ultimate_x64_2020.iso
耗时很长
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
使用Ctrl+z将他挂起,jobs -l可以查看前面挂起的任务
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
2)恢复挂起的进程
使用bg和fg命令可以将暂停执行的任务恢复执行,使用bg恢复到后台,使用fg恢复到前台(和Ctrl+z和ctrl+c更适合)
3)终止进程执行
kill
使用kill命令终止进程,使用进程PID号作为参数,可用“-9”选项来进行强行终止进程
pgrep -l “httpd” ##查看httpd服务进程号
kill 7947 ##终止进程
pgrep -l “httpd” ##查看,无信息输出,表示进程已终止
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
vi tmpfile
按Ctrl+z,挂起
jobs -l ##查询进程号
kill 8128
kill -9 8128
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
killall
使用killall命令可以通过进程名来终止进程,可以同时杀死多个进程
pkill
使用pkill命令可以根据进程名称、运行该进程的用户、进程所在终端等多种属性终止特定的进程,结合选项如下
-U指定用户
-t指定终端
pkill -9 -U “tom” ##强行终止用户Tom的进程

二、计划任务管理

  在Linux操作系统中,可以配置在指定的时间、指定的日期执行预先计划的系统管理任务。在centos7系统中的计划任务是由at、cronie软件包提供,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置。

1.at一次性任务设置

  使用at命令设置的计划任务只在指定的时间内执行一次,并且需要对应的系统服务atd运行。
date ##查看时间
at 22.27 2020-6-19
at>pgrep -U root | wc -l >/tmp/ps.root ##统计root用户的进程数保存                    到/tmp/ps.root下
Ctrl+D提交
atq ##可查看已经设置但还没执行的计划任务
cat /tmp/ps.root ##可看到保存在里面的数据
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
atrm 2 ##这个数字是用atq查看时最前面那个数字,可删除第二条计划任务,删除后就不会执行了

2.crontab周期性任务设置

使用命令crontab命令设置的计划任务可以按预设的周期重复执行,由软件包cronie提供crontab工具、系统服务crond和配置文件/etc/crontab。前提需要系统服务crond运行。
用户使用crontab命令创建计划任务时,就会在/var/spool/cron目录下生成一个与用户名相同的文件。
crontab命令选项如下:
  -e:编辑计划任务列表
  -u:指定所管理的计划任务属于哪个用户,默认则为当前用户
  -l:显示计划任务列表
  -r:删除计划任务
实例
crontab
crontab -e ##显示的界面和vi编辑器的界面差不多,我们在里面编写计划任务
33 19 * * * * /usr/bin/cp -r /etc/passwd /opt/passwd.txt ##时间自己写
保存退出
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
等待时间,到相应目录下查看
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
crontab -l ##查看任务表
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
其中的6个字段含义如下图所示:
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
还可以其它符号表示更复杂的时间关系
  减号“-”:表示连续的时间范围,1-4表示1、2、3、4
  逗号“,”:表示间隔的不连续的时间范围,1,2,3,4
  斜杆“/”:表示间频率,如在日期字段“*/3”表示每隔三天
以下命令表示每隔五天清除一次/var/ftp/pu目录下的数据
0 0 /5 * * /bin/rm -rf /var/ftp/pub/
crontab -l
可用来查看用户的计划任务列表
进程和计划任务管理(一次性计划任务at、周期性计划任务crontab)
crontab -r
可用来删除所有计划任务,若要删除某条计划的话可以crontab -e进行编辑

相关文章: