精华内容
下载资源
问答
  • 2021-01-05 08:16:02

     各位小伙伴们大家好,本次给大家带来的是Linux操作系统中的进程和计划任务的管理,首先大家都知道程序是保存在外部存储介质(如硬盘、光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中处于动态执行状态的计算机程序,在Linux系统中,每个程序启动后可以创建一个或多个进程。
    例如:提供Web服务的httpd程序当有大量用户同时访问Web页面时,httpd程序可能会创建多个进程来提供服务。那么接下来我将会从以下几点来告诉大家在Linux的CentOS 7系统中是如何查看进程信息和控制进程的。
    1、查看进程
    2、控制进程
    3、at一次性任务设置
    4、 crontab周期性任务设置

    首先我们了解一下程序和进程的关系:
    程序

    保存在 、光盘等介质中的可执行代码和数据
    静态保存的代码
    进程:
    在CPU及内存中运行的程序代码
    动态执行的代码
    父、子进程:每个进程可以创建一个或多个进程
    这里给大家补充一个知识点:线程和进程的关系
    每一个进程中包含多个线程,进程是线程的集合
    具体关系可以如下图所示:
    Linux系统中查看进程和计划任务管理
    一.查看进程
    ps命令(查看静态的进程统计信息Processes Statistic)
     是Linux系统中最为常用的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照,通过不同的命令选项,可以有选择性的查看进程信息
    ps -aux(将以简单列表形式显示出进程信息):

    a:查看系统当中的所有进程
    u:代表指定用户
    x:该用户在所有终端下的进程(tty终端,ps/0远程终端)

    如果我们想查看root用户当前系统下运行的进程有哪些,输入:ps aux,得到如下界面:
    Linux系统中查看进程和计划任务管理
    我们来说一下各字段的含义描述:

    1、USER:用户
    2、PID:进程号(ls -l | grep init可以看到init的软链接,1进程为init)
    3、%CPU:进程的cpu占用率
    4、%MEM:进程的内存占用率
    5、VSZ:虚拟内存占用
    6、RSS:物理内存占用
    7、TTY:终端(?代表未知,大多为本地)
    8、STAT:当前进程状态,其中
    “S”:可中断休眠进程
    “D”:不可中断休眠进程
    “s”:父进程
    “<”:代表优先级高
    “N”:代表优先级低
    “R”:代表正在运行的进程
    “I”:多线性进程
    “Z”:僵尸进程
    “+”:前台进程
    9、START:启动时间
    10、TIME:进程占用cpu的总时间
    11、COMMAND:进程的名称

    ps -elf(将以长格式显示系统中的进程信息):

    e:当前系统内的所有进程信息
    l:使用长格式显示进程信息
    f:使用完整的格式显示进程信息

    Linux系统中查看进程和计划任务管理

    我们来说一下和上面不相同的各字段的含义描述:

    1、PPID:当前进程的父进程
    2、PIR:用户态(人可以进行交互额)优先级
    3、NI:内核态优先级(-20~19,数值越低优先级越高)
    4、ADDR:-代表正在运行
    5、SZ:占用swap交换分区的容量
    6、WCHAN:当前进程内核态的名称
    7、CMD:命令名称

    top命令(查看进程动态信息)
     使用ps命令查看到的是一个静态的进程信息,并不能连续的反馈出当前进程的运行状态,若希望以动态刷新的方式显示各进程的状态信息,可以使用top命令,该命令将会在当前终端全屏交互式的界面显示进程排名,及时跟踪包括CUP、内存等系统资源占用情况,默认情况下每隔3秒刷新一次,其作用类似于windows系统中的“任务管理器”。
    输入top得到如下界面:
    Linux系统中查看进程和计划任务管理
    表中的信息表述含义如下:

    1、total:总进程数
    2、running:正在运行的进程数
    3、sleeping:休眠的进程数、
    4、stopped:中止的进程数
    5、zombie:僵死无响应的进程数
    6、%Cpu(s):CPU占用信息,其中:
    “us”:用户占用
    “sy”:内核占用
    “ni”:内核调度优先级
    “id”:空闲空间占用
    “wa”:IO读写占用
    “hi”:硬线程占用
    “si”:软线程占用
    “st”:虚拟化占用
    7、Men:内存占用信息,其中:
    “total”:总内存空间
    “free”:空闲内存
    “used”:已用内存
    “buff/cahce”:缓存占用
    8、Swap:交换空间占用,其中:
    “total”:总交换空间
    “free”:空闲交换空间
    “used”:已用交换空间
    “avail men”:物理占用

    pgrep命令(查询进程信息):
     当使用ps命令查询某个进程新的PID信息时,往往需要配合grep命令对输出结果进行过滤,但这样使用非常不方便,而pgrep命令则正是用来查询特定进程信息的专用工具,使用pgrep命令可以根据进程的名称、运行该进程的用户、进城所在的终端等多种属性查询特定进程的PID号。
    常见的选项:
    -l:既显示PID也显示进程名
    Linux系统中查看进程和计划任务管理
    -U:查看指定用户的进程,此处例如zhangsan
    Linux系统中查看进程和计划任务管理

    此处需要注意的点:当查看指定用户的进程时,需要在虚拟机中先用zhangsan用户登录,因为只有登陆了系统才会加载进程,否侧是无法查看到的!

    pstree命令(查看进程树):
     pstree命令可以输出Linux系统中各进程的树形结构,更加直观的判断出各进程之间的相互关系(父、子进程)。
    常用选项:

    -p:同时列出相对应的PID号
    -u:列出相对应的用户名
    -a:列出完整的命令信息

    输入petree -aup得到当前系统的进程数,包括各进程对应的PID号、用户名、完整命令等信息,如下图所示:
    Linux系统中查看进程和计划任务管理

    二.控制进程
    进程的启动方式
    1、手工启动
    前台启动:用户输入命令,直接执行程序
    后台启动:在命令行尾加入按&符号
    后台启动举例:
    当使用cp命令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可以结合&符号将复制操作放到后台运行,以便于用户可以继续执行其他命令操作,执行过程和结果如下:

    [root@localhost~]#cp /dev/cdrom mycd/iso &
    [1]28454

    2、调度启动
    使用at命令,是指一次性计划任务
    使用crontab命令,设置周期性计划任务

    进程的前后台调度
    1、Ctrl+Z组合键:
     当Linux系统中的命令正在前台执行时,按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。
    2、jobs命令:
     需要查看当前终端中在后台运行的进程任务时,可以使用jobs命令,结合“-l”选项可以同时显示处该进程对应的PID号,在jobs命令的输出结果中,每一行记录对应一个后台进程的状态信息,首行的数字表示该进程在后台的任务编号。
    3、fg命令:
     将后台进程恢复到前台运行,可指定任务序号,示例如下:

    [root@localhost~]#jobs
    [1]- Stopped cp/dev/cdrom mycd.iso
    [2]+ Stopped top
    [root@localhost~]#fg 1

    终止进程的运行:
    1、Ctrl+C组合键
    中断正在执行的命令
    2、kill、killall命令(跟号码,具有唯一性)
    常用选项:

    kill:用于终止指定PID号的进程
    killall:用于终止指定名称的所有进程
    -9:选项用于强制终止

    pkill命令
    1.根据特定条件终止相应的进程
    2.常用选项:

    -U:根据进程所属的用户名终止相应进程
    -t:根据进程所在的终端终止相应进程

    例如以下形式:

    [root@localhost~]#pgrep -l -U“hackli”
    [root@localhost~]#pkill -9 -U“hackli”
    [root@localhost~]#pgrep -l -U“hackli”

    举例:我们在系统中登录zhangsan用户,进入桌面:
    Linux系统中查看进程和计划任务管理
    如果此时我们想把张三用户踢出,使用Xshell界面登录的root账户下输入:pkill -9 -U zhangsan,敲回车,此时系统会自动跳回开机之后的用户登录界面,zhangsan用户的所有进程全部被终止:
    Linux系统中查看进程和计划任务管理

    三.at一次性任务设置
    格式:at [HH:MM] [yyyy-mm-dd]
    具体执行操作如下:

    1、[root@localhost~]#date(获取系统的当前时间)
    2、2019年 08月 24日 星期六 16:08:24 CST
    3、[root@localhost~]#at 16:12 2019-08-24(计划性时间要在系统当前时间之后)
    4、at>ps aux | wc -l > /opt/ps.txt(确定执行的动作)
    5、ctrl+d(提交)
    6、atq(查看计划任务)
    Linux系统中查看进程和计划任务管理
    到了计划时间之后输入:ls /opt/查看目录
    此时显示计划的文件ps.txt被写入
    Linux系统中查看进程和计划任务管理

    四.crontab周期性任务设置
    crontab命令
    1.crontab的配置文件和目录

    按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作
    属于周期性计划任务

    主要设置文件

    全局配置文件,位于文件: /etc/crontab
    系统默认的设置,位于目录: /etc/cron.*/
    用户定义的设置,位于文件: /ar/5poo/cron/用户名

    管理cron计划任务

    编辑计划任务:crontab -e [-u 用户名]
    查看计划任务:crontab -l [-u 用户名]
    删除计划任务:crontab -r [-u 用户名]

    定时编辑格式
    Linux系统中查看进程和计划任务管理
    每个字段的说明:

    分钟:取值为从0到59之间的任意整数
    小时:取值为从0到23之间的任意整数
    日期:取值为从1到31之间的任意整数
    月份:取值为从1到12之间的任意整数
    星期:取值为从0到7之间的任意整数,0或者7代表星期日
    命令:要执行的命令或程序脚本

    时间数值的特殊表示方法:

    *:表示该范围内的任意时间:
    ,:表示间隔的多个不连续时间点
    -:表示一个连续的时间范围
    /:指定间隔的时间频率

    应用示例:

    0 17 * * 1-5 (周一到周五每天17:00)
    30 8 * * 1,3,5 (每周一、三、五的8点30分)
    0 8-18/2 * * * (8点到18点之间每2个小时)
    0 * */3 * * (每3天)

    计划性周期任务实验:

    输入:cat /etc/crontab(查看配置文件)
    Linux系统中查看进程和计划任务管理
    输入:crontab -e(进如配置计划性任务列表单)
    按i进行输入:
    输入:33 16 * * * /usr/bin/cp -r /home /zhangsan /opt/(计划每天下午16:33执行复制zhangsan的家目录到opt中)
    输入:wq保存退出
    输入:crontab -l(查看到有以上命令在执行)
    Linux系统中查看进程和计划任务管理
    输入:ls /opt/(此时目录下是没有zhangsan用户的家目录的)
    Linux系统中查看进程和计划任务管理
    到时间之后我们进行验证,再次输入ls /opt/,此时可以看到zhangsan用户的家目录已经被复制到opt的目录下
    Linux系统中查看进程和计划任务管理
    此时说明设置的计划性任务执行成功。

    更多相关内容
  • 进程和计划任务管理(详细)

    千次阅读 多人点赞 2020-12-01 02:01:21
    文章目录一、程序和进程的关系二、查看进程信息ps方法一:ps aux方法二:ps -elf 一、程序和进程的关系 ●程序 保存在硬盘、光盘等介质中的可执行代码和数据 文件中静态保存的代码 ●进程 在CPU及内存中运行的程序...

    一、程序和进程的关系

    ●程序
    保存在硬盘、光盘等介质中的可执行代码和数据
    文件中静态保存的代码

    ●进程
    在CPU及内存中运行的程序代码
    动态执行的代码
    父、子进程
    每个程序可以创建一个或多个进程

    二、查看进程信息ps(静态)

    ps命令——查看静态的进程统计信息

    方法一:ps aux

    a:显示终端上的所有进程,包括其他用户的进程
    ●u:表示列出进程的用户
    ●x:显示所有终端的进程

    在这里插入图片描述
    各列的解释:
    (1)USER:进程的用户。

    (2)PID:进程的ID。

    (3)%CPU:进程占用的CPU百分比。

    (4)%MEM:占用内存的百分比。

    (5)VSZ:该进程使用的虚拟内存量(KB)。

    (6)RSS:该进程占用的物理内存量(KB)。

    (7)TTY:启动进程的终端名。不是从终端启动的进程则显示为 ?

    (8)STAT:该行程的状态:
    D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪 调试状态;Z:僵尸进程,进程已经中止,但是部分程序还在内存当中

    (9)START:该进程被触发启动时间。

    (10)TIME:该进程实际使用CPU运行的时间。

    (11)COMMAND:进程的启动命令。

    方法二:ps -elf

    ●-e:显示系统内的所有进程信息。
    ●-l:使用长格式显示进程信息。
    ●-f:使用完整的格式显示进程信息。
    在这里插入图片描述
    各列的解释:
    (1)F:内核分配给进程的系统标记。

    (2)S:进程的状态。

    (3)UID:启动这些进程的用户。

    (4)PID:进程的进程ID。

    (5)PPID:父进程的进程号(如果该进程是由另一个进程启动的)。

    (6)C:进程生命周期中的CPU利用率。

    (7)PRI:进程的优先级(越大的数字代表越低的优先级)。

    (8)NI:谦让度值用来参与决定优先级。

    (9)ADDR:进程的内存地址。

    (10)SZ:假如进程被换出,所需交换空间的大致大小。

    (11)WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名。

    (12)STIME:进程启动时的系统时间。

    (13)TTY:进程启动时的终端设备。

    (14)TIME:运行进程需要的累计CPU时间。

    (15)CMD:进程的启动命令。

    三、查看进程信息top(动态)

    【1】每行对应的信息

    在这里插入图片描述

    第一行是任务队列信息
    ①16:31:58 : 系统时间
    ②up 2:06 : 系统已运行时长
    ③5 user :当前登录用户数
    ④load average: 0.00, 0.01, 0.05 :系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值

    ●第二行为进程信息
    ①Tasks :总进程数
    ②running :正在运行的进程数
    ③sleeping :休眠的进程数
    ④stopped :中止的进程数
    ⑤zombie :僵死的进程数

    第三行为CPU的信息
    ①us :用户占用
    ②sy :内核占用
    ③ni :优先级调度占用
    ④id :空闲CPU,要了解空闲的 CPU 百分比,主要看%id 部分
    ⑤wa:I/O 等待占用
    ⑥hi :硬件中断占用
    ⑦si :软件中断占用
    ⑧st :虚拟化占用

    第四行为内存的信息
    ①total:总内存空间
    ②free :空闲内存
    ③used:已用内存
    ④buff/cache:物理内存和交换内存的缓冲区总和

    第五行为交换空间的信息
    ①total:总交换空间
    ②free :空闲交换空间
    ③used:已用交换空间
    ④avail Mem:可用物理空间

    【2】进程信息区对应解释

    在这里插入图片描述
    进程信息区各列解释:
    (1)PID:进程id

    (2)USER:进程所有者的用户名

    (3)PR:优先级

    (4)NI:谦让度值。负值表示高优先级,正值表示低优先级

    (5)VIRT:进程使用的虚拟内存总量,单位kb

    (6)RES:进程使用的物理内存大小,单位kb

    (7)SHR:共享内存大小,单位kb

    (8)S:进程状态

    (9)%CPU:上次更新到现在的CPU时间占用百分比

    (10)%MEM:进程使用的物理内存百分比

    (11)TIME+:进程使用的CPU时间总计,单位1/100秒

    (12)COMMAND :命令名/命令行

    【3】top常用命令:

    ①P 键:根据CPU使用百分比大小进行排序
    ②M 键:根据驻留内存大小进行排序
    ③N 键:根据启动时间进行排序
    ④c 键:切换显示命令名称和完整命令行
    ⑤h 键:可以获得 top程序的在线帮助信息
    ⑥k 键:根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程
    ⑦q 键:退出 top 程序
    ⑧数字1 键:显示CPU个数和状态

    ●tty终端

    Centos 7系统,tty1表示图形界面,tty2-tty6表示文字界面,可以用Ctrl+Alt+F1-F6切换。

    pts说明是用远程工具连接的,比如Xshell。后面的数字代表登陆的时间顺序,越小证明登陆的越早

    四、查看进程信息pgrep

    pgrep命令
    根据特定条件查询进程PID信息

    ● pgrep -l "进程关键字"        #指定查看进程名
    

    例:pgrep -l “进程关键字”
    1、在1centos7-1中输入vim /etc/fstab

    在这里插入图片描述
    2、再复制一个会话,来查看当前centos7-1虚拟机的进程信息
    在这里插入图片描述
    3、进入复制会话2centos7-1中,使用pgrep -l "vim"查询关键字vim的进程
    在这里插入图片描述

    【1】pgrep可用选项

    ● pgrep -l "进程关键字" -U 指定特定用户
    ● pgrep -l "进程关键字" -t 指定终端      使用较少
    

    例:grep -l -U
    1、在1centos7-1中创建一个新用户admin,并给与他密码,让他能够使用,再切换至用户admin,输入vim /etc/fstab

    在这里插入图片描述
    2、我们再进入复制会话中查询这台虚拟机现在的进程,但是这次指定用户,指定admin
    在这里插入图片描述在这里插入图片描述

    五、查看进程树pstree

    ●pstree命令
    以树形结构列出进程信息

    ● pstree -aup  用户名    #以树形结构完整列出对应用户名及进程号
    

    -a:显示完整信息
    -u:列出对应用户名
    -p:列出对应PID号

    在这里插入图片描述
    例:
    1、先在1centos7-1中使用admin用户创建一个文件,并进入编辑
    在这里插入图片描述
    2、再进入复制会话中去以树形结构完整列出用户admin的进程号,进程名称
    在这里插入图片描述

    六、进程的启动方式

    ●手工启动

    ①前台启动:用户输入命令,直接执行程序
    ②后台启动:在命令行尾加入“&”符号

    例:多用于让后台自己去运行,我们无需跟踪它的状态,好了之后进行查询确认无误后使用即可

    1、进行一个实验,使用本地磁盘cdrom内部的文件,要使用磁盘,首先挂载,然后我们人性化统计一下/mnt目录内部空间占用情况,发现4.3G,已经很大了,然后我们,复制/mnt目录包括目录下所有文件到/opt目录中,可以看到因为非常大,需要等待,我们已经无法继续操作了
    在这里插入图片描述
    2、遇到这种情况,有两个解决方法,一是复制会话,再继续操作,二就是让它在后台自己慢慢运行
    在这里插入图片描述
    3、使用静态查询进程状态配合管道符号筛选进程号,来看该进程状态
    在这里插入图片描述

    ●调度启动

    ①使用at命令,设置一次性计划任务
    ②使用crontab命令,设置周期性计划任务

    ●进程的前后台调度

    ①Ctrl+z组合键
    将当前程序挂起,即调入后台并停止执行

    在这里插入图片描述

    ②jobs命令
    jobs 【-l】
    查看处于后台的任务列表

    在这里插入图片描述

    ③fg命令
    将后台进程恢复到前台运行,可指定任务序号

    在这里插入图片描述

    七、终止进程的运行

    ●ctrl c、kill、killall

    ●ctrl+c组合键
    ①中断正在执行的命令

    ●kill、killall命令
    ① kill用于终止指定PID号的进程
    ② killall用于终止指定名称相关的所有进程
    ③-9选项用于强制终止

    kill -9 2010和kill -9 2028在下图中就不示范了,很简单,kill -9 + 进程号
    在这里插入图片描述

    ●pkill

    根据特定条件终止相应的进程

    ●常用命令选项
    ①-U:根据进程所属的用户名终止相应进程
    ② -t:根据进程所在的终端终止相应程序

    1、首先在1centos7-1上切换到用户lisi
    在这里插入图片描述
    2、再在复制会话中将lisi用户的进程杀掉,导致bash进程被杀掉,shell解释器也没有了
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    八、计划任务管理at

    ●at命令
    一次性计划任务

    at 【HH:MM】【yyyy-mm-dd】
    

    在这里插入图片描述
    命令格式

    [root@localhost~]#at 21:30      #不跟年月日,表示使用当前日期
    at> shutdown -h now
    ctrl d                          #提交一次性计划任务
    at> <EOT>
    job 2 at Sun May 7 21:30:00 2017
    
    [root@localhost~]# atq          #查看未执行的任务列表
    [root@localhost~]# atrm 1       #删除第一条任务
    

    在这里插入图片描述在这里插入图片描述

    九、计划任务管理crontab(重点)

    crontab命令

    按照预先设置的时间周期(分、时、日、月、周)重复执行用户指定的命令操作

    ●属于周期性计划任务

    ●主要设置文件
    全局配置文件,位于文件:/etc/crontab
    系统默认的设置,位于目录:/etc/cron.*/
    用户定义的设置,位于文件:/var/spool/cron/用户名

    1、管理crontab计划任务

    ●编辑计划任务

    crontab -e 【-u 用户名】      -u缺省时默认当前用户
    

    ●查看计划任务

    crontab -l 【-u 用户名】
    

    ●删除计划任务

    crontab -r 【-u 用户名】
    

    2、crontab任务配置的格式

    代表意义分钟小时日期月份命令
    数字范围0~590~231~311~120~7需要执行的命令

    周的数字为 0 或 7 时,都代表“星期天”的意思。

    3、时间数值的特殊表示方法

    *表示该范围内的任意时间
    ,表示间隔的多个不连续时间点
    -表示一个连续的时间范围
    /表示间隔的时间频率

    应用示例

    0 17 * * 1-5         周一到周五每天17点
    30 8 * * 1,3,5       周一,周三,周五8.30
    0 8-18/2 * * *       8点到18点每两小时
    0 * */3 * *          每三天
    

    crontab -e [-u root] 编辑一个计划任务
    1.每分钟定时执行一次规则:

    每1分钟执行: */1 * * * *或者* * * * *
    每5分钟执行: */5 * * * *
    

    2.每小时定时执行一次规则:

    每小时执行: 0 * * * *或者0 */1 * * *
    每天上午7点执行:0 7 * * *
    每天上午7点10分执行:10 7 * * *
    

    3.每天定时执行一次规则:

    每天执行 0 0 * * *
    

    4.每周定时执行一次规则:

    每周执行 0 0 * * 0
    

    5.每月定时执行一次规则:

    每月执行 0 0 1 * *
    

    6.每年定时执行一次规则:

    每年执行 0 0 1 1 *
    

    其他例子

    5 * * * * ls         指定每小时的第5分钟执行一次ls命令
    30 5 * * * ls        指定每天的 5:30 执行ls命令
    30 7 8 * * ls        指定每月8号的7:30分执行ls命令
    30 5 8 6 * ls        指定每年的6月8日5:30执行ls命令
    30 6 * * 0 ls        指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
    30 3 10,20 * * ls    每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
    25 8-11 * * * ls     每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
    */15 * * * * ls      每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
    30 6 */10 * * ls     每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]
    

    方法二:
    echo ‘30 7 * * 6 /usr/bin/systemctl httpd restart’ >> /var/spool/cron/root

    展开全文
  • Linux中进程和计划任务管理

    千次阅读 2021-08-17 15:06:09
    文章目录前言一、程序和进程的关系1.程序2.进程二、查看进程信息1. ps命令1.1 查看静态的进程统计信息1.1.1 STAT常见状态的含义1.2 查看静态的进程统计信息2.top命令2.1 查看动态的进程排名信息2.1.2 top 命令全屏...


    前言

    如何去查看进程、调用进程,生产环境中经常需要查看进程的使用率,来调优;进程又分为前台和后台,那么如何启动进程,怎么去调用前后台改变的一个运营方式;如果进程挂了,怎么终止进程


    一、程序和进程的关系

    1.程序

    • 保存在硬盘、光盘等介质中的可执行代码和数据
    • 静态保存的代码

    2.进程

    • 在CPU及内存中运行的程序代码
    • 动态执行的代码
    • 父、子进程
      每个程序可以创建一个或多个程序

    二、查看进程信息

    1. ps命令

    1.1 查看静态的进程统计信息

    [root@localhost ~]# ps aux
    将以简单列表的形式显示出进程信息

    参数:

    -a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将显示系统中所有的进程信息。
    -u:使用以用户为主的格式输出进程信息。
    -x:显示当前用户在所有终端下的进程信息

    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root          1  4.2  0.3  46236  6784 ?        Ss   15:26   0:01 /usr/lib/systemd/systemd --swi
    root          2  0.0  0.0      0     0 ?        S    15:26   0:00 [kthreadd]
    root          3  0.0  0.0      0     0 ?        S    15:26   0:00 [ksoftirqd/0]
    root          4  0.0  0.0      0     0 ?        S    15:26   0:00 [kworker/0:0]
    root          5  0.0  0.0      0     0 ?        S<   15:26   0:00 [kworker/0:0H]
    root          6  0.0  0.0      0     0 ?        S    15:26   0:00 [kworker/u256:0]
    root          7  0.0  0.0      0     0 ?        S    15:26   0:00 [migration/0]
    root          8  0.0  0.0      0     0 ?        S    15:26   0:00 [rcu_bh]
    root          9  0.0  0.0      0     0 ?        S    15:26   0:00 [rcu_sched]
    root         10  0.0  0.0      0     0 ?        S    15:26   0:00 [watchdog/0]
    root         11  0.0  0.0      0     0 ?        S    15:26   0:00 [watchdog/1]
    root         12  0.0  0.0      0     0 ?        S    15:26   0:00 [migration/1]
    root         13  0.0  0.0      0     0 ?        S    15:26   0:00 [ksoftirqd/1]
    root         14  0.0  0.0      0     0 ?        S    15:26   0:00 [kworker/1:0]
    root         15  0.0  0.0      0     0 ?        S<   15:26   0:00 [kworker/1:0H]
    root         16  0.0  0.0      0     0 ?        S    15:26   0:00 [watchdog/2]
    root         17  0.0  0.0      0     0 ?        S    15:26   0:00 [migration/2]
    root         18  0.0  0.0      0     0 ?        S    15:26   0:00 [ksoftirqd/2]
    
    # 上述输出信息中,第一行为列表标题,其中各字段的含义描述如下。
    # USER:启动该进程的用户账号的名称。
    # PID:该进程在系统中的数字 ID 号,在当前系统中是唯一的。
    # %CPU:CPU 占用的百分比。
    # %MEM:内存占用的百分比。
    # VSZ:该进程使用的虚拟内存量(KB)。
    # RSS:该进程占用的物理内存量(KB)。
    # TTY:表明该进程在哪个终端上运行。不是从终端启动的进程则显示为?。
    # STAT:该进程的状态
    # START:启动该进程的时间。
    # TIME:该进程占用的 CPU 时间。
    # COMMAND:启动该进程的命令的名称  
    
    

    1.1.1 STAT常见状态的含义

    -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
    -R:该进程正在运行。
    -S:该进程处于睡眠状态,可被唤醒。
    -T:停止状态,可能是在后台暂停或进程处于除错状态。
    -W:内存交互状态(从 2.6 内核开始无效)。
    -X:死掉的进程(应该不会出现)。
    -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
    -<:高优先级(以下状态在 BSD 格式中出现)。
    -N:低优先级。
    -L:被锁入内存。
    -s:包含子进程。
    -l:多线程(小写 L)。
    -+:位于后台。
    -C:进程占用CPU的百分比


    #### 1.1.2 查看进程状态例子
    [root@localhost ~]# vim 1.txt    
    
    在另一个终端执行:
    [root@localhost ~]# ps aux | grep 1.txt  
    root       1921  0.0  0.2 151764  5312 pts/1    S+   16:14   0:00 vim 1.txt
    root       1975  0.0  0.0 112676   996 pts/0    S+   16:16   0:00 grep --color=auto 1.txt
    #查看1.txt的状态;S表示睡眠状态,+表示前台
    
    再回到执行vim 1.txt 的终端上,按ctrl+z :
    [root@localhost ~]# vim 1.txt
    
    [2]+  已停止               vim 1.txt
    
    再在另一个终端执行:
    [root@localhost ~]# ps aux |grep 1.txt
    root       1921  0.0  0.2 151764  5312 pts/1    T    16:14   0:00 vim 1.txt
    root       2030  0.0  0.0 112676   992 pts/1    S+   16:21   0:00 grep --color=auto 1.txt
    #查看状态T表示停止状态
    
    # ctrl-c 是发送 SIGINT 信号,终止一个进程
    # ctrl-z 是发送 SIGSTOP 信号,挂起一个进程。将作业放置到后台(暂停)
    # ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。代表输入完成或者注销
    

    1.2 查看静态的进程统计信息

    [root@localhost ~]# ps -elf
    将以长格式显示系统中的进程信息

    参数:

    - e:显示系统内的所有进程信息。
    - 1:使用长格式显示进程信息。
    - f:使用完整的格式显示进程信息。.

    F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
    4 S root          1      0  0  80   0 - 32041 ep_pol 15:53 ?        00:00:01 /usr/lib/systemd/sy
    1 S root          2      0  0  80   0 -     0 kthrea 15:53 ?        00:00:00 [kthreadd]
    1 S root          3      2  0  80   0 -     0 smpboo 15:53 ?        00:00:00 [ksoftirqd/0]
    1 S root          5      2  0  60 -20 -     0 worker 15:53 ?        00:00:00 [kworker/0:0H]
    1 S root          7      2  0 -40   - -     0 smpboo 15:53 ?        00:00:00 [migration/0]
    1 S root          8      2  0  80   0 -     0 rcu_gp 15:53 ?        00:00:00 [rcu_bh]
    1 S root          9      2  0  80   0 -     0 rcu_gp 15:53 ?        00:00:00 [rcu_sched]
    5 S root         10      2  0 -40   - -     0 smpboo 15:53 ?        00:00:00 [watchdog/0]
    5 S root         11      2  0 -40   - -     0 smpboo 15:53 ?        00:00:00 [watchdog/1]
    1 S root         12      2  0 -40   - -     0 smpboo 15:53 ?        00:00:00 [migration/1]
    1 S root         13      2  0  80   0 -     0 smpboo 15:53 ?        00:00:00 [ksoftirqd/1]
    1 S root         15      2  0  60 -20 -     0 worker 15:53 ?        00:00:00 [kworker/1:0H]
    5 S root         16      2  0 -40   - -     0 smpboo 15:53 ?        00:00:00 [watchdog/2]
    1 S root         17      2  0 -40   - -     0 smpboo 15:53 ?        00:00:00 [migration/2]
    1 S root         18      2  0  80   0 -     0 smpboo 15:53 ?        00:00:00 [ksoftirqd/2]
    1 S root         20      2  0  60 -20 -     0 worker 15:53 ?        00:00:00 [kworker/2:0H]
    5 S root         21      2  0 -40   - -     0 smpboo 15:53 ?        00:00:00 [watchdog/3]
    1 S root         22      2  0 -40   - -     0 smpboo 15:53 ?        00:00:00 [migration/3]
    1 S root         23      2  0  80   0 -     0 smpboo 15:53 ?        00:00:00 [ksoftirqd/3]
    1 S root         25      2  0  60 -20 -     0 worker 15:53 ?        00:00:00 [kworker/3:0H]
    5 S root         27      2  0  80   0 -     0 devtmp 15:53 ?        00:00:00 [kdevtmpfs]
    1 S root         28      2  0  60 -20 -     0 rescue 15:53 ?        00:00:00 [netns]
    1 S root         29      2  0  80   0 -     0 watchd 15:53 ?        00:00:00 [khungtaskd]
    1 S root         30      2  0  60 -20 -     0 rescue 15:53 ?        
    
    # 上述输出信息中,第一行为列表标题,其中各字段的含义描述如下。
    # F:内核分配给进程的系统标记。
    # S:进程的状态。
    # UID:启动这些进程的用户。
    # PID: 进程的进程ID.
    # PPID:父进程的进程号(如果该进程是由另一“个进程启动的)
    # C:进程生命周期中的CPU利用率。
    # PRI:进程的优先级(越大的数字代表越低的优先级)。
    # NI: 谦让度值用来参与决定优先级。
    # ADDR:进程的内存地址。
    # SZ:假如进程被换出,所需交换空间的大致大小。
    # WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名。
    # STIME:进程启动时的系统时间。
    # TTY:进程启动时的终端设备。   pts/0255代表虚拟终端,一般是远程连接的终端;tty1 tty7 代表本地控制台终端
    # TIME:运行进程需要的累计CPU时间。
    # CMD:进程的启动命令。
    
    

    2.top命令

    2.1 查看动态的进程排名信息

    [root@localhost ~]# top

    top - 16:29:25 up 35 min,  2 users,  load average: 0.01, 0.02, 0.04
    Tasks: 160 total,   1 running, 157 sleeping,   2 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.8 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1867048 total,  1010360 free,   311472 used,   545216 buff/cache
    KiB Swap:  4194300 total,  4194300 free,        0 used.  1332024 avail Mem 
    
       PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                   
       116 root      20   0       0      0      0 S   0.3  0.0   0:01.02 kworker/0:2               
       602 root      20   0  231564   6284   4916 S   0.3  0.3   0:01.87 vmtoolsd                  
         1 root      20   0  128164   6836   4076 S   0.0  0.4   0:01.12 systemd                   
         2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                  
         3 root      20   0       0      0      0 S   0.0  0.0   0:00.00 ksoftirqd/0               
         5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H              
         7 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 migration/0               
         8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                    
         9 root      20   0       0      0      0 S   0.0  0.0   0:00.22 rcu_sched                 
        10 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 watchdog/0                
        11 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 watchdog/1                
        12 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 migration/1               
        13 root      20   0       0      0      0 S   0.0  0.0   0:00.00 ksoftirqd/1               
        15 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H              
        16 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 watchdog/2                
        17 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 migration/2               
        18 root      20   0       0      0      0 S   0.0  0.0   0:00.05 ksoftirqd/2               
        20 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H              
        21 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 watchdog/3                
        22 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 migration/3               
        23 root      20   0       0      0      0 S   0.0  0.0   0:00.00 ksoftirqd/3               
        25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/3:0H              
        27 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs                 
        28 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns    
    
    
    # 上述输出信息中,开头的部分显示了系统任务(Tasks)、CPU占用、内存占用(Mem)、交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。相关信息的含义表述如下。
    
    #uptime信息:
            # 16:29:25	当前时间
            # up 35 min	系统运行时间 ,说明此服务器连续运行 35分钟
    		# 2 user	当前登录用户数
     	    # load average: 0.01, 0.02, 0.04	系统负载,即任务队列的平均长度。 三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值。   
    
    # 系统任务(Tasks)信息:
    		# total,总进程数;
    		# running,正在运行的进程数;
    		# sleeping, 休眠的进程数;
    		# stopped,中止的进程数;
    		# zombie,僵死无响应的进程数。
    
    # CPU 占用信息:
    		# us,用户占用;
    		# sy,内核占用;
    		# ni,优先级调度占用;
    		# id,空闲CPU;
    		# wa,I/O 等待占用;
    		# hi,硬件中断占用;
    		# si,软件中断占用;
    		# st,虚拟化占用。要了解空闲的 CPU 百分比,主要看%id 部分。
    
    # 内存占用(Mem)信息:
    		# total,总内存空间;
    		# free,空闲内存;
    		# used,已用内存;
    		# buff/cache,物理内存和交换内存的缓冲区总和。
    
    #交换空间(Swap)占用:
    		# total,总交换空间;
    		# free,空闲交换空间;
    		# used,已用交换空间;
    		# avail Mem,可用物理空间。
    

    2.1.2 top 命令全屏操作界面快捷键:

    • 按 s 修改刷新时间,默认 3s 刷新一次;按空格 立即刷新。
    • P:按 CPU 排序
    • M:按内存排序
    • T : 按时间排序
    • p : 进程 IP,查看某个进程状态
    • N 键根据启动时间进行排序
      • 数字键 1:显示每个内核的 CPU 使用率u/U:指定显示的用户
    • h:可以获得 top 程序的在线帮助信息
    • q:键可以正常地退出 top 程序

    若通过 top 排名工具发现某个进程 CPU 占用率非常高,需要终止该进程的运行,可以在 top 操作界面中按 k键,然后在列表上方将会出现“PID to signal/kill [default pid = 3180]:” 的提示信息,根据提示输入指定进程的 PID 号并按 Enter 键, 出现“Send pid 5597 signal[15/sigterm]”的二次确认的提示信息,然后按Enter 键确认即可终止对应的进程。


    3.pgrep命令

    • 根据特定条件查询进程PID信息

    例:

    [root@localhost ~]# pgrep -l ‘log’
    [root@localhost ~]# pgrep -l -U teacher -t tty1

    参数:

    -l: 选项可同时输出对应的进程名以及PID
    -U:选项查询特定用户的进程
    -t :选项查询在特定终端运行的进程


    4.pstree命令

    • 以树形结构列出进程信息
      pstree 命令默认情况下只显示各进程的名称

    例:

    [root@localhost ~]# pstree -aup
    [root@localhost ~]# pstree -ap root

    参数:

    -p:选项使用时可以同时列出对应的PID号
    -u:选项可以列出对应的用户名
    -a:选项可以列出完整的命令信息

    执行如下的“pstree -aup”命令可以查看当前系统的进程树,包括各进程对应的PID 号、用户名、完整命令等信息。从输出结果中可以看出,systemd 进程确实是 Linux 操作系统中所有进程的“始祖”


    三、进程的启动方式

    1.手工启动

    • 前台启动:用户输入命令,直接执行程序
    • 后台启动:在命令行尾加入“&”符号

    由用户手工输入命令或者可执行程序的路径,可以至少启动一个进程。根据该进程是否 需要占用当前的命令终端,手工启动又可以分为前台启动和后台启动。

    进程在前台运行(如执行“ls-l”命令)时,用户必须等到该进程执行结束并退出以后才能继续输入其他命令,大多数命令操作在前台启动运行。进程在后台运行时,用户可以继续在当前终端中输入其他命令,而无须等待该进程结束,适用于运行耗时较长的操作。

    启动后台进程需要使用“&”操作符,将“&”操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。例如,当使 用 cp 命令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可结合“&” 符号将复制操作放到后台运行,以便用户可以继续执行其他命令操作

    例:

    [root@localhost ~]# cp /dev/cdrom mycd.iso &
    [3] 4355


    2.调度启动

    • 使用at命令,设置一次性计划任务
    • 使用crontab命令,设置周期性计划任务

    在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)进行。这时就需要用户事先进行调度安排,指 定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务。调度启动的计划 任务进程均在后台运行,不会占用用户的命令终端。
    进程的调度启动可以通过 at、crontab 命令进行设置,其中 at 命令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 命令用于设置周期性运行(如每周五 17:30 备份数据库)的计划任务。


    3.进程的前后台调度

    3.1 Ctrl+z 组合键

    • 将当前进程挂起,即调入后台并停止运行

    当Linux操作系统中的命令正在前台执行时(运行尚未结束),按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。例如,打包usr并且调入后台 ,可以按 Ctrl+Z 组合键将该下载任务调入后台并暂停执行

    3.2 jobs命令

    • 查看处于后台的任务列表

    参数

    -l:可以同时显示该进程对应的PID号

    3.3 fg和bg命令

    • 使用 bg(BackGround,后台)命令,可以将后台中暂停执行(如按 Ctrl+Z 组合键挂起)的任务恢复运行,继续在后台执行操作
    • 使用 fg 命令(ForeGround,前台),可以将后台任务重新恢复到前台运行。
      除非后台中的任务只有一个,否则 bg 和 fg 命令都需要指定后台进程的任务编号作为参数。

    例,执行如下的“fg 1”命令可以将之前挂起至后台的 wget 进程重新调入前台执行
    [root@localhost ~]# jobs
    [1]- Stopped cp /dev/cdrom mycd.iso
    [2]+ Stopped
    top [root@localhost ~]# fg 1


    四、终止进程的运行

    1. Ctrl+c组合键

    • 中断正在执行的命令

    当用户在前台执行某个进程时,可以按Ctrl+C组合键强制进行中断(如命令长时间没有响应的情况下)。
    中断前台进程的运行后,系统将返回命令行提示符状态等待用户输入新的命令。


    2. kill、killall命令

    • kill用于终止指定PID号的进程
    • killall用于终止指定名称的所有进程
    • “-9”选项用于强制终止

    当按 Ctrl+C 组合键无法终止程序或者需要结束在其他终端或后台运行的进程时, 可以使用专用的进程终止工具 kill、killall 和 pkill。

    2.1 使用kill命令终止进程

    通过 kill 命令终止进程时,需要使用进程的 PID 号作为参数。无特定选项时,kill 命令将给该进程发送终止信号并正常退出运行,若该进程已经无法响应终止信号,则可以结合“-9” 选项强行终止进程。强制终止进程时可能会导致程序运行的部分数据丢失,因此不到不得已时不要轻易使用“-9”选项。

    例如,若 SSH 服务的 sshd 进程的 PID 号为 5822,则执行“kill 5822”命令后可以将进程 sshd 终止

    [root@localhost ~]# pgrep -l "sshd"	//查询目标进程的PID 号
    5822 sshd
    [root@localhost ~]# kill 5822	//终止指定PID 的进程
    [root@localhost ~]# pgrep -l "sshd"	//确认进程已终止(查询时无结果
    
    对于无法正常终止的系统进程,在必要时可以结合“-9”选项强制终止。例如,以下操作展示了强制终止 vim 进程的过程    
    
    [root@localhost ~]# vim testfile  &	//打开vim 程序并挂起作为测试
    [1]+   Stopped	vim testfile
    [root@localhost ~]# jobs –l	//查询目标进程的PID 号
    [1]+   7095 Stopped	vim testfile
    
    [root@localhost ~]# kill 7095		//尝试正常结束进程[root@localhost ~]# jobs -l			//但发现vim 进程并未退出[1]+   7095 Stopped	vim tmpfile
    [root@localhost ~]# kill -9 7095		//强制终止目标进程[root@localhost ~]# jobs -l		//成功终止vim 进程[1]+ 2993  已杀死	vim tmpfile
    

    2.2 使用 killall 命令终止进程

    使用 killall 命令可以通过进程名称来终止进程,当需要结束系统中多个相同名称的进程时,使用 killall 命令将更加方便,效率更高。killall 命令同样也有“-9”选项。

    例如,执行如下的“killall -9 vim”命令可将所有名为 vim 的进程都强行终止
    
    [root@localhost ~]# vim testfile1 &	 //挂起第 1 个 vim 测试进程
    [1]+   Stopped	vim testfile1
    [root@localhost ~]# vim testfile2 &	//挂起第 2 个 vim 测试进程
    [2]+   Stopped	vim testfile2
    [root@localhost ~]# jobs -l		//确认待终止的进程信息[1]-   7144 Stopped	vim testfile1
    [2]+   7153 Stopped	vim testfile2
    [root@localhost ~]# killall -9 vim	//通过进程名终止多个进程
    [root@localhost ~]# jobs -l
    [1]-   7144 Killed	vim testfile1
    [2]+   7153 Killed	vim testfile2
    

    3.pkill命令

    • 根据特定条件终止相应的进程

    常用参数:

    -U:根据进程所属的用户名终止相应进程
    -t:根据进程所在的终端终止相应进程

    pkill 命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与 pgrep 命令基本类似,如“-U”(指定用户)、“-t”(指定终端) 等选项,使用起来非常方便。

    例如,若要终止由用户 hmj 启动的进程(包括登录 Shell),可以执行以下操作。
    su - lz
    vim tst.txt &
    [root@localhost ~]# pgrep –l -U "lz"
    3773 bash	                            //确认目标进程相关信息3773 bash
    [root@localhost ~]# pkill -9 -U "lz"	//强行终止用户hackli 的进程
    [root@localhost ~]# pgrep -l -U "lz"	//确认目标进程已被终止
    
    

    五、计划任务管理at

    1.at命令

    • 一次性计划任务
    • 在 Linux 操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划的系统管理任务(如定期备份、定期采集监测数据)。CentOS 系统中默认已安装了 at、cronie 软件包,通过 atd 和 crond 这两个系统服务实现一次性、周期性计划任务的功能,并分别通过 at、crontab 命令进行计划任务设置

    at [hh:mm] [yyy-mm-dd]
    任务设置完毕后按Ctrl+D组合键提交

    [root@kgc /]# date
    20210816日 星期一 16:20:58 +00
    [root@kgc /]# at 16:23 2021-08-16
    at> pgrep -U root | wc -l > /tmp/ps.root //任务设置完毕后按Ctrl+D 组合键提交
    at> <EOT><EOT>
    job 1 at Mon Aug 16 16:23:00 2021
    
    [root@localhost ~]# cat /tmp/ps.root	//等过了计划时间后验证命令结果202
    

    例2:

    以下操作将设置一条计划任务,在当天的 21:30 自动关闭当前系统。
    [root@localhost ~]# at 21:30
    at> shutdown -h now 
    at> <EOT>                //Ctrl+D组合键提交
    
    • 对于已经设置但还未执行(未到时间点)的计划任务,可以通过 atq 命令进行查询。但已执行过的 at 任务将不会再出现在列表中。具体操作如下:
    [root@localhost ~]# atq
    2 Sun May 7 21:30:00 2017 a root
    
    • 若要删除指定编号的 at 任务,可以使用 atrm 命令。删除后的 at 任务将不会被执行, 并且不会显示在 atq 命令的显示结果中,但已经执行过的任务无法删除。具体操作如下:
    [root@localhost ~]# atrm 2	   //删除第 2 条 at 计划任务
    [root@localhost ~]# atq        //确认第 2 条任务已被删除
    

    2.crontab命令

    • 按照预先设置的时间周期(分钟、小时、天…)重复执行用户指定的命令操作
    • 属于周期性计划任务
    • 主要设置文件
      - 全局配置文件,位于文件了 /etc/crontab
      - 系统默认的设置,位于目录: /etc/cron */
      - 用户定义的设置,位于文件: /varlspoollcron/用户名

    参数:

    crontab -u 用户名 #指定XX用户的cron服务
    crontab -l #列出当前用户下的cron的详细内容
    crontab -u zx -l #列出zx用户下的cron的详细内容
    crontab -r #删除所有用户的cron内容,普通用户执行,只删除自己的cron内容
    crontab -r -u zx #删除zx用户的cron内容
    crontab -e #编辑cron服务

    2.1 管理crontab计划任务

    • 编辑计划任务
    crontab -e [-u 用户名]
    
    • 查看计划任务
    crontab -l [-u 用户名]
    
    • 删除计划任务
    crontab -r [-u 用户名]
    

    2.2 crontab任务配置的格式

    • 分钟 取值为 0~59 的任意整数
    • 小时 取值为 0~23 的任意整数
    • 日期 取值为 1~31 的任意整数(日期在该月份中必须有效)
    • 月份 取值为 1~12 的任意整数
    • 星期 取值为 0~7 的任意整数,0 或 7 代表星期日

    2.2.1 时间数值的特殊表示方法

    *表示该范围内的任意时间

    减号“-”:可以表示一个连续的时间范围,如“1-4”表示整数 1、2、3、4。
    逗号“,”:可以表示一个间隔的不连续范围,如“3, 4, 6, 8”。
    斜杠符号“/”:可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔 3 天。


    2.3 例:

    2.3.1若要按固定的周期重复完成一些系统管理任务,任务内容如下:

    • ①每天早上 7:50自动开启 sshd 服务,22:50 关闭 sshd 服务;
    • ②每隔五天清空一次cron FTP 服务器公共目录/var/ftp/pub 中的数据;
    • ③每周六的 7:30 重新启动系统中的 httpd 服务;
    • ④每周一、周三、周五的下午 17:30,使用 tar 命令自动备份/etc/httpd 目录,则可由 root 用户通过 crontab 设置以下计划任务
    root@localhost ~]# crontab -e
    50 7 * * * /usr/bin/systemctl start sshd.service 
    50 22 * * * /usr/bin/systemctl stop sshd.servic 
    0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/ *
    30 7 * * 6 /usr/bin/systemctl httpd restart
    30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
    */2 * * * * ls -lh /home/*
    

    2.3.2 用户 jerry 设置一条计划任务:在每周日晚上的 23:55 将/etc/passwd 文件的内容复制到宿主目录中,保存为 pwd.txt 文件

    普通用户执行“crontab -e”命令时,可以设置自己的计划任务(需要注意命令的执行权限)。

    [jerry @localhost ~]# crontab -e
    55 23 * * 7 /usr/bin/cp /etc/passwd /home/jerry/pwd.txt
    

    2.4 查看用户的计划任务列表

    crontab 命令结合“-l”选项可以查看当前用户的计划任务列表,对于 root
    用户来说,还可以结合“-u”选项查看其他用户的计划任务,具体操作如下:

    [root@localhost ~]# crontab –l	//查看用户root 自己的计划任务
    50 7 * * * /usr/bin/systemctl start sshd.service
    50 22 * * * /usr/bin/systemctl stop sshd.servic 
    0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/ *
    30 7 * * 6 /usr/bin/systemctl httpd restart
    30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
    [root@localhost ~]# crontab -l -u jerry	//查看用户jerry 的计划任务
    55 23 * * 7 /usr/bin/cp /etc/passwd /home/jerry/pwd.txt 
    [root@localhost ~]# ls -l /var/spool/cron/jerry
    -rw-------. 1 root root 57 May 7 11:10 /var/spool/cron/jerry
    

    2.5 删除用户的计划任务列表

    当只需要删除某一条计划任务时,可以通过“crontab -e”命令进行编辑;而若要清空某个用户的所有计划任务,可以执行“crontab -r”命令。

    [jerry@localhost ~]$ crontab -r	 //用户jerry 清空自己设置的计划任务
    
    [jerry@localhost ~]$ crontab -l
    [jerry@localhost ~]$ crontab -l
    no crontab for jerry
    

    总结

    • 查看进程的命令(ps、top、pgrep.pstree)
    • 进程控制:
      • 启动进程、调度进程、终止进程
    • at命令设置计划任务
    • crontab计划任务的配置字段
    展开全文
  • 管理进程和计划任务

    千次阅读 2020-12-22 20:55:04
    引导流程 开机自检BIOS:存放硬件信息,检测,初始化,引导操作系统 ...init进程启动后会启动其它程序,生成新的进程,这些由init启动的进程称之为init进程的子进程,而init进程是这些进程的父进程 同样的这些子进程

    引导流程
    开机自检BIOS:存放硬件信息,检测,初始化,引导操作系统
    mbr:主引导记录
    GRUB菜单:选择操作系统
    加载内核:
    运行INIT进程:0-6运行等级
    INIT进程与配置文件
    INIT进程
    配置文件:/etc/inittab
    在引导Linux系统的过程中,“/sbin/init”是内核第一个加载的程序,因此init进程对应的PID号永远为“1”
    init进程启动后会启动其它程序,生成新的进程,这些由init启动的进程称之为init进程的子进程,而init进程是这些进程的父进程
    同样的这些子进程有可能启动其它程序生成新的进程,这些子进程与新进程之间也互为父子进程关系
    inittab文件的结构
    x:5:respawn: id字段 runlevels字段 action字段 prcocess字段
    id:用于在inittab文件中唯一标识一个配置记录
    runlevels :用于指定该记录在哪些运行级别中运行
    action :用于描述记录将执行哪种类型的动作
    process :用于设置启动进程所执行的命令
    id,也称标记字段,由1~4个字符组成,用以区别于其他行的配置,所以id标记字段必须是唯一的
    runlevels,运行级别字段,用于指定该记录在哪些运行级别中运行,取值数字0~6,后面会对其进行详细解释
    action ,动作类型字段,动作类型字段描述了该行配置所对应的操作类别,一般为固定值,较常用的类型如下:
    initdefault:设置初始化系统后默认进入的运行级别
    sysinit:设置系统初始化的操作脚本
    wait:init进程将等待该行配置所对应的脚本操作完成后,再继续执行其他操作
    ctrlaltdel:设置当用户按下Ctrl+Alt+Delete组合键后的操作
    powerfail:设置当系统收到断电信号(使用不间断电源)时采取何种动作
    powerokwait:设置当系统收到恢复供电信号时采取何种动作
    respawn:一旦该行配置所对应的进程被终止,则重新启动该进程
    process,程序或脚本字段,此字段用于指定该行配置所对应的实际操作,可以是具体的命令、脚本程序等
    其他系统初始化文件
    /etc/rc.d/rc.sysinit
    由init进程调用执行
    完成设置网络、主机名、加载文件系统等初始化工作
    /etc/rc.d/rc脚本文件
    由init进程调用执行
    根据指定的运行级别, 加载或终止相应的系统服务
    /etc/rc.local脚本文件
    由rc脚本调用执行
    保存用户定义的需开机后自动执行的命令
    Linux系统的运行级别
    运行级别
    指运行Linux系统的不同模式
    每种模式对应不同的服务程序组合
    默认的7种运行级别
    0:关机状态
    1:单用户模式
    2:字符界面的多用户模式(不支持网络)
    3:字符界面的完整多用户模式
    4:未分配使用
    5:图形界面的多用户模式
    6:重新启动
    调整默认运行级别
    修改 /etc/inittab 文件中的 initdefault 配置行
    Linux 7查看目录:ll /lib/systemd/system/ 三种查看方法:runlevel 或者systemctl get-default(get是获取 set是设置) [root@localhost ~]# ll /lib/systemd/system/runlevel*(查看方法第三种)
    设置修改运行等级:systemctl set-default
    lrwxrwxrwx. 1 root root 15 8月 26 03:55 runlevel0.target -> poweroff.target
    lrwxrwxrwx. 1 root root 13 8月 26 03:55 runlevel1.target -> rescue.target
    drwxr-xr-x. 2 root root 50 8月 26 03:55 runlevel1.target.wants
    lrwxrwxrwx. 1 root root 17 8月 26 03:55 runlevel2.target -> multi-user.target
    drwxr-xr-x. 2 root root 50 8月 26 03:55 runlevel2.target.wants
    lrwxrwxrwx. 1 root root 17 8月 26 03:55 runlevel3.target -> multi-user.target
    drwxr-xr-x. 2 root root 50 8月 26 03:55 runlevel3.target.wants
    lrwxrwxrwx. 1 root root 17 8月 26 03:55 runlevel4.target -> multi-user.target
    drwxr-xr-x. 2 root root 50 8月 26 03:55 runlevel4.target.wants
    lrwxrwxrwx. 1 root root 16 8月 26 03:55 runlevel5.target -> graphical.target
    drwxr-xr-x. 2 root root 50 8月 26 03:55 runlevel5.target.wants
    lrwxrwxrwx. 1 root root 13 8月 26 03:55 runlevel6.target -> reboot.target
    Linux 6查看目录:vim /etc/inittab
    设置修改运行等级:[root@localhost ~]# vi /etc/inittab
    id:3:initdefault:(直接修改数字就可以改运行等级)
    查看运行级别
    使用runlevel命令,分别显示:
    切换前的运行级别、当前运行级别
    临时切换运行级别
    使用init命令结合 0-6 的运行级别参数
    系统服务的启动控制

    查看系统服务的启动状态
    格式:chkconfig --list
    chkconfig --list 服务名称
    服务脚本位置:/etc/init.d  /etc/rc.d/init.d
    设置系统服务的启动状态
    Linux6.5版本格式:chkconfig --level 级别列表 服务名 on|off
    Linux7格式:systemctl enabled 服务名称 (添加服务)
    systemctl start httpd (开启服务)
    netstat -anpt | grep httpd (查看系统进程是否成功)或者ss更快ss -pln | grep httpd
    systemctl list-units --type=service (查看当前所有在运行的服务)
    systemctl disable httpd (删除服务)
    ntsysv系统服务管理工具
    格式:ntsysv
    ntsysv --level 级别列表 式:staus
    程序与进程的关系
    程序
    保存在硬盘、光盘等介质中的可执行代码和数据
    是静态保存的代码
    进程
    在CPU及内存中运行的程序代码
    是动态执行的代码
    父、子进程:每个进程可以创建一个或多个进程
    查看进程信息
    ps命令
    用途:查看静态的进程统计信息
    格式:ps aux
    ps -elf
    常用命令选项
    a:显示当前终端下的所有进程信息
    u:使用以用户为主的格式输出进程信息
    x:显示当前用户在所有终端下的进程信息
    -e:显示系统内的所有进程信息 使用ps命令工具时,要注意选项前是否有”-“引导符,例如”e“和”-e”选项的含义是有区别的
    -l:使用长格式显示进程信息
    -f:使用完整的格式显示进程信息
    ps命令结合“aux”选项使用时,将显示系统中所有的进程信息
    PID:该进程在系统中的数字ID号,在当前系统中是唯一的; %CPU:CPU占用百分比; %MEM:内存占用百分比
    ps命令结合“-elf”选项使用时,将以长格式显示系统中所有的进程信息,包含更丰富的内容(其中PPID列表示进程的父进程的PID号)
    top命令
    用途:查看动态的进程排名信息
    op命令
    按P键根据CPU占用情况对进程列表进行排序
    按M键根据内存占用情况进行排序
    按N键根据启动时间进行排序
    按h键可以获得top程序的在线帮助信息
    按q键可以正常退出top程序
    使用空格键可以强制更新进程状态显示
    pgrep命令
    用途:根据特定条件查询进程PID信息
    常用命令选项:
    -l:列出进程的名称
    -U:根据进程所属的用户名进行查找
    -t:根据进程所在的终端进行查找
    pstree命令
    用途:以树型结构显示各进程间的关系
    常用命令选项:
    -p:列出进程的PID号
    -u:列出进程对应的用户名
    -a:列出进程对应的完整命令
    进程的不同启动方式
    手工启动
    前台启动:用户输入命令,直接执行程序
    后台启动:在命令行尾加入“&”符号
    调度启动
    使用at命令,设置在某个特定的时间,执行一次任务
    使用crontab命令,设置按固定的周期(如每天、每周等)重复执行预先计划好的任务
    /dev/cdrom是/dev/sr0的链接文件
    进程的前后台调度
    Ctrl+Z 组合键
    将当前进程挂起,即调入后台并停止执行
    jobs命令
    查看处于后台的任务列表
    fg命令
    将处于后台的进程恢复到前台运行,需指定任务序号(bg后台有进程再次执行)
    终止进程的运行
    Ctrl+C组合键
    中断正在执行的命令
    kill、killall命令
    kill用于终止指定PID号的进程
    killall用于终止指定名称的所有进程
    -9 选项用于强制终止 不是级别
    pkill命令
    用途:根据特定条件终止相应的进程
    常用命令选项:
    -U:根据进程所属的用户名终止相应进程
    -t:根据进程所在的终端终止相应进程
    计划任务管理 —— at
    at命令
    在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务
    服务脚本名称:/etc/init.d/atd
    设置格式:at [HH:MM] [yyyy-mm-dd]
    使用at命令设置的任务只在指定时间点执行一次,若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间
    可以在at交互环境中输入多条命令,最后按Ctrl+D组合键提交
    对应的系统服务atd必须已经运行,否则可能会出现错误提示:Can’t open /var/run/atd.pid to signal atd. No atd running?
    at命令用法:
    格式:at(选项)(参数)
    选项:-f:指定包含具体指令的任务文件;
    -q:指定新任务的队列名称;
    -l:显示待执行任务的列表;
    -d:删除指定的待执行任务;
    -m:任务执行完成后向用户发送E-mail。
    atq:查看有什么任务
    [root@localhost ~]# at 23:45 (设置任务)
    at> shutdown -h now
    at> (ctrl+d)提交任务
    job 1 at 2009-09-14 23:45
    [root@localhost ~]# atrm 1 2 (删除第1个和第二个设定的任务)和at -d 的作用一样
    [root@localhost ~]# atq (查询设置的任务)和at -l 的作用一样
    计划任务管理 —— crontab
    crontab命令
    按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
    服务脚本名称:/etc/init.d/crond
    主要设置文件 查看
    全局配置文件,位于文件:/etc/crontab
    系统默认的设置,位于目录:/etc/cron.*/
    用户定义的设置,位于文件:/var/spool/cron/用户名
    时间数值的特殊表示方法

    •  表示该范围内的任意时间
      

    , 表示间隔的多个不连续时间点

    •  表示一个连续的时间范围
      

    / 指定间隔的时间频率
    应用示例
    0 17 * * 1-5 周一到周五每天17:00
    30 8 * * 1,3,5 每周一、三、五的8点30分
    0 8-18/2 * * * 8点到18点之间每隔2小时
    0 0 */3 * * 每隔3天
    crond服务
    /sbin/service crond start //启动服务
    /sbin/service crond stop //关闭服务
    /sbin/service crond restart //重启服务
    /sbin/service crond reload //重新载入配置
    查看crontab服务状态:service crond status
    手动启动crontab服务:service crond start
    查看crontab服务是否已设置为开机启动,执行命令:ntsysv
    加入开机自动启动:chkconfig –level 35 crond on
    systemctl relocal crond 重载
    systemctl status crond 启动
    crontab -e 制定新的周期性任务
    crontab -r 清楚周期性任务
    crontab -e -u +用户名 制定新的周期性任针对用户
    crontab -r -u 清楚对用户指定的周期性任务
    contab -l 查看周期性任务
    [root@localhost ~]# crontab -e 创建计划任务
    [root@localhost ~]# crontab -l 查看
    */1 * * * * /usr/bin/cp /etc/passwd 1.txt 设置隔一分钟复制
    [root@localhost ~]# systemctl restart crond 重启

    [root@localhost ~]# tailf 1.txt 实时监控
    sssd❌990:987:User for sssd:/:/sbin/nologi

    展开全文
  • 图文详解和实验——进程和计划任务管理

    千次阅读 多人点赞 2021-02-02 00:35:23
    图文详解和实验——进程和计划任务管理一、查看进程1、程序和进程的关系2、查看进程静态信息:PS①、方法一:ps aux②、方法一:ps -elf③、僵尸进程3、查看进程动态信息:top①进程动态行②、进程信息区③top常用...
  • CentOS7 运维 - 进程和计划任务管理程序和进程的关系查看进程信息ps查看静态的进程统计信息查看静态的进程统计信息僵尸进程动态查看进程排名信息top第一行是任务队列信息第二行为进程信息第三行为CPU的信息第四行为...
  • 这会产生后果-例如COM Surrogate占用大量CPU并在任务管理器中创建重复项。 A simple way to check its legitimacy is: 一种检查其合法性的简单方法是: Open Windows Task Manager by right-clicking on the ...
  • linux进程和计划任务管理

    千次阅读 2021-05-14 16:06:37
    linux进程和计划任务管理查看进程和控制进程程序和进程的关系查看进程命令psat一次性任务设置at命令crontab周期性任务设置crontab命令 查看进程和控制进程 程序和进程的关系 查看进程命令ps at一次性任务设置 at命令...
  • 设备驱动信息(服务和设备驱动差不多,在此不做重复)  设备驱动信息有服务控制管理器(SCM)来管理的,我要打开服务控制管理器,并枚举所有的设备驱动。  OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS...
  • 1、掌握进程的概念,明确进程的含义。 2、认识并了解进程并发执行的实质,进程的阻塞与唤醒,终止与退出的过程。 3、熟悉进程的睡眠、同步、撤消等进程控制方法。 4、分析进程竞争资源的现象,学习解决进程互斥的...
  • 一、查看进程1、查看静态的进程统计信息(ps)2、查看静态的进程统计信息(top)3、pgrep命令(查询进程信息)4、pstree命令(查看进程树)二、...(3)进程的前后台调度(3)终止进程的运行三、at一次性任务设置四、...
  • 在Windows10系统下经常弹出资源管理器已停止工作,这时无法正常操作电脑,即使重新启动后一会可能还会弹出错误,出现这样的情况该怎么办呢?今天小编就为大家简答的介绍一下解决win10资源管理器经常停止工作的方法,...
  • 文章目录前言一:程序、进程、线程的关系1.1:进程概述1.2:程序和进程的关系二:查看进程2.1:ps--查看静态的进程统计信息2.2:ps aux 将以简单的列表形式显示进程信息2.3:ps -elf命令:以长葛市显示系统的进程...
  • Supervisor监控多进程任务—Superlance

    千次阅读 2019-09-26 18:33:12
    服务器上部署了一批Supervisor管理任务,每个任务在启动后会各自启动多个进程,每个进程执行不同的脚本程序。由于脚本程序实在太多了,在Supervisor里面一个个配置会极其麻烦,所以采用了这种一个任务对应多个脚本...
  • Linux管理进程及计划任务9

    千次阅读 多人点赞 2020-06-26 14:22:20
    文章目录一、概览1、程序和进程的关系1.1、程序1.2、进程2、crontab命令3、程序和进程的关系3.1、程序3.2、进程二、实验目的三、实验步骤1、管理系统中的进程1.1、使用kill命令终止postfix服务的运行1.2、查找系统中...
  • Linux操作系统——进程管理

    千次阅读 2021-10-16 17:10:55
    1.程序的顺序执行与并发执行 程序的顺序执行: 程序的各操作步骤之间依序执行,程序与程序之间串行执行,称为...(3)可再现性:程序执行的结果与运行的时间和速度无关,结果都是可再现的,重复执行该程序结果相同。
  • 计算机操作系统进程管理总结

    万次阅读 多人点赞 2018-06-07 11:57:03
    计算操作系统进程管理 一、进程与线程 1.1、进程 进程是资源分配的基本单位。 进程控制块PCB(Process Control Block)描述的是进程的基本信息以及进程的运行状态,我们说的创建及撤销进程都是对进程控制块...
  • 注:本文基于CentOS 6.6 ...因此,我们今天来介绍一下容器内的多进程管理——supervisor,还有另一个工具——monit,同样可以用于容器内多进程管理,不过我们后面再介绍它。 安装 1、使用yum方式 yum ins...
  • golang 多机定时任务管理系统

    千次阅读 2018-01-30 10:41:46
     ·cron+,秒级定时,使任务执行更加灵活;  ·任务列表文件路径可以自定义,建议使用版本控制系统;  ·内置日志和监控系统,方便各位同学任意扩展;  ·平滑重加载配置文件,一旦配置文件有变动,在不影响...
  • 任务管理器”中的系统进程

    千次阅读 2005-05-21 16:04:00
    系统进程最基本的系统进程(也就是说,这些进程是系统运行的基本条件,有了这些进程,系统就能正常运行): smss.exe 这是一个会话管理子系统,负责启动用户会话。System Idle Process:这个进程是作为单线程运行在每...
  • 操作系统学习(2) 进程管理

    千次阅读 2020-04-28 11:05:53
    1. 进程与线程的区别和联系 定义 进程 是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程 是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小...
  • 广州大学2020操作系统实验一:进程管理进程通信

    千次阅读 多人点赞 2020-07-24 17:15:57
    实验一 进程管理进程通信 一、实验目的 1、掌握进程的概念,明确进程的含义。 2、认识并了解进程并发执行的实质,进程的阻塞与唤醒,终止与退出的过程。 3、熟悉进程的睡眠、同步、撤消等进程控制方法。 4、分析...
  • 操作系统基本原理---进程管理

    千次阅读 2018-08-02 21:34:45
    程序是描述处理机完成某项任务的指令序列。指令则是处理机能直接解释、执行的信息单位。处理机包括中央处理,主存储器,输入-输出接口。 处理器cpu:中央处理(Central Processing Unit)的缩写,即CPU,CPU是...
  • 目录 2.1 进程 2.1.1 进程的定义、组成...2.3.1 进程同步进程互斥 2.3.2 进程互斥的软件实现方法 2.3.3 进程互斥的硬件实现方法 2.3.4 信号量机制 2.3.5 用信号量实现进程互斥、同步、前驱关系 2.3.6 生产者-
  • linux进程管理,参数解析

    千次阅读 2021-11-24 15:36:00
    一、进程查看ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2 0.0 0.0 0 0 ? S 12:40 0:00 [kthreadd] root 9 0.0 0.0 0 0 ? R 12:40 0:09 [rcu_sched] USER 进程的属主; ...
  • 什么是进程同步 进程互斥的原则 进程互斥的软件实现方法 1、单标志法 2、双标志先检查法 3、双标志后检查法 4、Peterson 算法 进程互斥的硬件实现方法 1、中断屏蔽方法 2、TestAndSetLock 指令 TSL和中断屏蔽的区别 ...
  • Supervisor监控多进程任务 上回书说到,Supervisor进程监控之役,在下先取sendmail,再克Superlance,兵峰所指,所向披靡。却不知Supervisor大本营暗藏杀招,不输出非直接子进程的异常信息,一举扭转战局,我军兵败...
  • 第二章 进程管理 - 进程、线程 进程的概念 进程进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。(线程是调度的基本单位) 程序:是静态的,是一个存放在磁盘里的可执行文件,是一系列指令的集合 ...
  • 没有报任何错误说明软件安装正确,系统兼容性也没有问题,这是因为程序中有重复进程冲突,在任务管理器中将图上进程全部关闭,然后在任务管理器顶端选项卡选择“详细信息” 找到commL8Host.exe进程全部关闭,再次...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 135,836
精华内容 54,334
关键字:

任务管理器进程重复