精华内容
下载资源
问答
  • 详细了解系统中运行的各种程序信息,关闭失去响应的进程,以及在指定时间自动执行任务。搞定操作方法。 程序,进程与线程之间的关系详解 静态和动态查看进程,控制进程的方式, 一次性与周期性任务设置

    文章目录

    前言

    详细了解系统中运行的各种程序信息,关闭失去响应的进程,以及在指定时间自动执行任务。搞定操作方法。

    一:程序,进程,线程之间的关系

    1.1:进程概述

    • 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

    1.2:应用程序,进程和线程的关系

    名称 关系
    应用程序 一个应用程序可以包含一个或者多个进程
    进程 一个进程包含一个或多个线程
    线程 线程是执行操作的最小单元
    • 举例:以一个工厂结构举例

      应用程序=工厂

      进程=车间

      线程=工人

      高并发处理==>依赖于多线程操作

    1.2.1:程序和进程的关系
    • 程序

      保存在硬盘,光盘等介质中的可执行代码和数据

      静态保存的代码

    • 进程

      在CPU及内存中运行的程序代码

      动态执行的代码

      父.子进程:每个进程可以创建一个或多个进程,是一个依赖关系。

    1.2.2:进程和线程的关系
    • 进程和线程都是由操作系统的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性

    • 一个程序至少有一个进程,一个进程至少有一个线程

      线程的划分尺度小于进程,所以多线程程序的并发性高

    • 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了程序的运行效率

    • 线程在执行过程中与进程存在区别

      每个独立的线程有一个程序运行的入口,顺序执行序列和程序的出口

      但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

      从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行

      但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配

      这就是进程和线程的重要区别

    • 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位

    • 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈)但是它可以与同属一个进程的其他线程共享进程所拥有的全部资源

    • 一个线程可以创建和撤销另一个线程

      同一个进程中的多个线程之间可以并发执行

    二:查看进程

    2.1:静态查看 ps命令

    2.1.1:ps命令,查看静态的进程统计信息(Processes Statistic)
    • ps命令是Linux系统中最为常用的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照

    • ps命令基本格式
      ps [选项]  注意:有一些选项时不带“-”前缀的(添加“-”前缀后含义可能会有出入)
      a  显示当前终端下的所有进程信息,包括其他用户的进程、与“x”选项结合时将显示系统中所有的进程信息
      u  使用以用户为主的格式输出进程信息
      x  显示当前用户在所有终端下的进程信息
      -e 显示系统内的所有进程信息
      -l 使用长(Long)格式显示进程信息
      -f 使用完整的(Full)格式显示进程信息
      
    • 执行不带任何选项的ps命令时,将只显示当前用户会话中打开的进程

      [root@localhost ~]# ps
         PID TTY          TIME CMD
        2711 pts/0    00:00:00 bash
        2946 pts/0    00:00:00 ps
      
      
    2.1.2:ps aux命令 以简单列表的形式显示出进程信息
    • [root@localhost ~]# ps aux
      USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
      root          1  0.2  0.3 193700  6836 ?        Ss   22:38   0:01 /usr/lib/systemd/syst
      root          2  0.0  0.0      0     0 ?        S    22:38   0:00 [kthreadd]
      root          3  0.0  0.0      0     0 ?        S    22:38   0:00 [ksoftirqd/0]
      root          4  0.0  0.0      0     0 ?        S    22:38   0:00 [kworker/0:0]
      root          5  0.0  0.0      0     0 ?        S<   22:38   0:00 [kworker/0:0H]
      root          7  0.0  0.0      0     0 ?        S    22:38   0:00 [migration/0]
      root          8  0.0  0.0      0     0 ?        S    22:38   0:00 [rcu_bh]
      ..以下省略部分内容
      
      
    • 上述输出信息中,每一列称为字段或者列或者属性

    • 上述输出信息中,第一行为列表标题,其中个字段的含义如下

      USER: 启动该进程的用户账号信息

      PID: 该进程在系统中的数字ID号,在当前系统中是唯一的

      %CPU:CPU占用的百分比

      %MEN:内存占用的百分比

      VSZ:占用虚拟内存(SWAP)的大小

      RSS:占用常驻内存(物理内存)的大小

      TTY: 表明该进程在哪个终端上运行。“?”表示未知或者不需要终端

      SATA: 显示了进程当前的状态,如S(休眠),R(运行),Z(僵死),<(高优先级),N(低优先级),s(父进程),+(前台进程),l(多线性进程),D(不可休眠进程)对处于僵死状态的进程应该予以手动终止

      START: 启动该进程的时间

      TIME: 该进程占用CPU时间

      COMMAND: 启动该进程的命令的名称

    2.1.3:ps -elf 命令:以长格式显示系统中的进程信息
    • [root@localhost ~]# ps -elf
      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 23:04 ?        00:00:00 /usr/l
      1 S root          2      0  0  80   0 -     0 kthrea 23:04 ?        00:00:00 [kthre
      1 S root          3      2  0  80   0 -     0 smpboo 23:04 ?        00:00:00 [ksoft
      1 S root          4      2  0  80   0 -     0 worker 23:04 ?        00:00:00 [kwork
      1 S root          5      2  0  60 -20 -     0 worker 23:04 ?        00:00:00 [kwork
      1 S root          6      2  0  80   0 -     0 worker 23:04 ?        00:00:00 [kwork
      1 S root          7      2  0 -40   - -     0 smpboo 23:04 ?        00:00:00 [migra
      1 S root          8      2  0  80   0 -     0 rcu_gp 23:04 ?        00:00:00 [rcu_b
      1 R root          9      2  0  80   0 -     0 -      23:04 ?        00:00:00 [rcu_s
      ..此处省略部分信息
      

      PPID:表示对应进程的父进程的PID号

      PRI:用户态优先级(人为)

      NI: nice值,内核态优先级,取值范围(-20~19),值越小,优先级越高

      ADDR:若是 - ,代表正在运行

      SZ:在swap交换分区的容量

      WCHAN:当前进程在内核中的名称

      STIME:启动时间

    2.1.4:ps aux | grep "bash"命令
    • 由于系统中运行的进程数量较多,需要查询某一个进程的信息时可以结合管道操作和grep命令进行过滤。

    • 此命令可以过滤出包含“bash”的进程信息

    • [root@localhost ~]# ps aux | grep "bash"
      root        655  0.0  0.0 115256   924 ?        S    23:04   0:00 /bin/bash /usr/sbin/ksmtuned
      root       1791  0.0  0.0  51332   580 ?        Ss   23:05   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
      root       2422  0.0  0.1 116300  2864 pts/0    Ss+  23:05   0:00 bash
      root       2482  0.0  0.1 116044  2776 pts/1    Ss   23:06   0:00 -bash
      root       2536  0.0  0.0 112680   984 pts/1    S+   23:07   0:00 grep --color=auto bash
      
      

    2.2:动态查看 top命令

    • 使用ps命令查看到的是一个静态的进程信息,并不能连续的反馈出当前进程的运行状态

    • top命令将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括CPU,内存等系统资源占用情况

      默认情况下每三秒刷新一次

      作用类似于Windows系统中的任务管理器

    2.2.1:top 命令
    • top - 23:17:10 up 12 min,  3 users,  load average: 0.00, 0.04, 0.06
      Tasks: 185 total,   1 running, 184 sleeping,   0 stopped,   0 zombie
      %Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.7 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
      KiB Mem :  1867024 total,   670880 free,   669584 used,   526560 buff/cache
      KiB Swap:  4194300 total,  4194300 free,        0 used.   986308 avail Mem 
      
         PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND       
        1833 root      20   0 1624108 168500  51624 S  0.0  9.0   0:02.26 gnome-shell   
        1983 root      20   0 1100816  63532  20704 S  0.0  3.4   0:00.10 evolution-cal+
        2083 root      20   0 1202856  59344  19216 S  0.0  3.2   0:00.08 evolution-cal+
        2040 root      20   0 1040248  59132  19108 S  0.0  3.2   0:00.06 evolution-cal+
        1994 root      20   0  884268  32724  14160 S  0.0  1.8   0:00.31 gnome-software
        1392 root      20   0  288368  30804  10276 S  0.0  1.6   0:00.40 X             
        1965 root      20   0 1026108  30296  18916 S  0.0  1.6   0:00.20 nautilus-desk+
      
    • 操作选项

      M:以内存大小排序

      c:以CPU占用排序

      h:top程序在线帮助信息

      q:退出

    • 上述输出信息中,开头的部分显示了系统任务(Tasks),CPU占用,内存占用(Mem),交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。相关信息含义如下

      1.系统任务(Tasks)信息:total,总进程数;running,正在运行的进程数;sleeping。休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数

      2.CUP占用信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id,空闲CPU;wa,I/O等待占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。要了解空闲的CPU百分比,主要是看%id部分

      3.内存占用(Mem)信息:total,总内存空间;used,已用内存空间;free,空闲内存空间;buffers,缓存区域

      4.交换空间(Swap)占用:total,总交换空间;used,已用交换空间;free,空闲交换空间;cached,缓存空间

    2.3:查看进程信息 pgrep 和 pstree

    2.3.1:pgrep命令
    • 当使用ps命令查询某个进程的PID信息时,往往需要结合grep命令对输出结果进行过滤,很不方便

    • pgrep命令正是用来查询特定进程信息的专用工具

    • pgrep命令可以根据进程的名称,运行该进程的用户,进程所在的终端等多重属性查询特定进程的PID号

    • 通过pgrep命令可以指定进程的一部分名称进行查询,结合“-l"选项可以同时输出对应的进程名

    • “-l”选项显示进程名
      [root@localhost ~]# pgrep -l "log"		'//查询进程名中包含“log”的进程及其PID号'
      282 xfs-log/sda2
      444 xfs-log/sda5
      445 xfs-log/sda1
      555 systemd-logind
      561 abrt-watch-log
      580 abrt-watch-log
      597 rsyslogd
      640 mcelog
      
      
      结合“-U”选项查询特定用户的进程
      “-t”选项查询在特定终端运行的进程
      tty=0  远程终端登录
      tty=1  本地终端登录
      [root@localhost ~]# pgrep -l -U lisi tty 1		'//查询在1终端的lisi 用户的进程'
      27483 bash
      27584 vim
      
    2.3.2:pstree命令
    • pstree命令以属性结构列出进程信息,可以更直观的判断各进程的相互关系(父,子进程)

    • pstree命令默认情况下只显示各进程的名称

      “-p”选项,列出对应的PID号

      “-u”选项,列出对应的用户名

      “-a”选项,列出完整的命令信息

    • [root@localhost ~]# pstree -aup		'//查看当前系统的进程树(包括各进程对应的PID号,用户名,完整命令等信息)'
      systemd,1 --switched-root --system --deserialize 21
        ├─ModemManager,601
        │   ├─{ModemManager},631
        │   └─{ModemManager},635
        ├─NetworkManager,667 --no-daemon
        │   ├─dhclient,791 -d -q -sf /usr/libexec/nm-dhcp-helper -pf...
        │   ├─{NetworkManager},676
        │   └─{NetworkManager},678
      ..省略部分信息
      
      [root@localhost ~]# pstree -ap lisi		'//查看用户lisi打开的进程及子进程的树结构'
       
      
    • Windows系统开启后读取SAM文件

      Linux系统开机后读取passwd和shadow文件,随后读取/bin/bash 、/sbin/nologin文件

    三:控制进程

    3.1:启动进程

    • Linux系统中可以

      用户手工启动进程

      按预定计划调度启动新的进程

    3.1.1:手工启动
    • 进程在前台运行时,用户必须等到该进程执行结束并退出后才能继续输入其他命令。运行耗时较长的操作可进入后台运行,进程在后台运行时,用户可以继续在当前终端输入其他命令,无需等待该进程结束。

    • 前台启动:用户输入命令,直接执行程序

    • 后台启动:在命令末尾加入“&”符号

      [root@localhost ~]# cp /dev/cdrom mycd.iso&		'//在后台运行复制镜像文件进程'
      [1] 3227		'//输出信息中心包括后台任务序号,PID号'
      
      
    3.1.2:调度启动
    • 有些任务非常费时,适合在相对空闲的时间进行,我们便可以使用调度安排启动
    • at命令,设置一次性计划任务(如 12:30重启网络服务)
    • crontab,命令,设置周期性计划任务(如 每周六18:00 备份数据库)

    3.2:改变进程的运行方式

    3.2.1:挂起当前进程 Ctrl+Z 组合键
    • 将当前进程挂起,即调入后台并停止执行(对于速度缓慢,会耽误其他操作的进程使用)
    3.2.2:查看后台进程 jobs 命令
    • 查看处于后台的任务列表。
    • 结合“-l”选项可以同时显示出该进程对应的PID号
    • 输出结果中,每一行记录对应一个后台进程的状态信息,行首的数字代表该进程在后台的任务编号。
    • 若当前终端没有后台进程,将不会显示任何信息
    3.2.3:将后台的进程恢复运行 fg 命令
    • 将后台进程恢复到前台运行,可以指定任务序号
    • bg(BackGround)命令可以将后台中暂停执行的任务恢复运行,继续在后台执行操作
    • fg(ForeGround)命令可以将后台任务恢复到前台运行
    • 除非后台任务只有一个,否则bg和fg命令都需要指定后台进程的任务编号作为参数

    3.3:终止进程执行

    • 平常可以使用Ctrl + C组合键强制中断
    • Ctrl + C组合键无法中止后,可以使用专门的进程中止工具 kill,killall,pkill
    3.3.1:使用kill命令终止进程
    • kill命令需要使用进程的PID号作为参数

    • 若进程无法响应,可结合“-9”选项强行中止进程。强行中止进程可能会到时部分数据丢失,谨慎使用

    3.3.2:使用killall命令终止进程
    • killall命令通过进程名来中止进程,可终止指定名称所有进程(可理解为终止进程树)
    • killall命令同样有“-9”选项,强制终止进程
    3.3.3:☆☆☆使用pkill命令终止进程☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
    • 根据特定条件终止相应的进程

    • 常用命令选项:

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

      -t:根据进程所在的终端终止相应的进程

      管理员可以pkill 普通用户踢下线
      普通用户不可以pkill管理员
      [root@localhost ~]#pkill -9 -U “lisi”		
      

    四:at一次性任务设置

    • CentOS7系统中的计划任务是由at,cronie软件包提供,通过atd和crond这两个系统服务实现一次性,周期性的计划任务功能,并分别通过at,crontab命令进行计划任务设置
    • 开启系统服务atd是at命令设置的计划任务的前提条件

    4.1:☆☆☆at命令基本格式☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

    • at [HH:MM] [yyyy-mm-dd]		'//at  时:分  年-月-日'
      

    4.2:at命令使用顺序

    • 查看时间–>设置时间–>输入命令–>Ctrl + D提交任务

    • date:查看当前时间。设置任务,时间不可在当前时间之前

    • 命令输入完成后按 Ctrl + D组合键提交任务即可

    • [root@localhost ~]# date		'//查看当前时间'
      2019年 11月 13日 星期三 00:45:58 CST
      [root@localhost ~]# at 00:48 2019-11-13 		'//设置任务执行时间'
      at> pgrep -U root |wc -l > /tmp/ps.root			'//输入命令(统计该时间点系统中由root用户运行的进程数量,并将数值保存到/tmp/ps.root文件中)'
      at> <EOT>		'//按Ctrl + D组合键提交任务'
      job 1 at Wed Nov 13 00:48:00 2019
      [root@localhost ~]# cat /tmp/ps.root		'//查看任务完成情况'
      175
      
      

    4.3:atq 命令,查看待执行任务的列表

    • 对于已经设置,但并未执行的任务,可通过atq命令查看。(已经执行的任务不会出现)
    • atq查看的任务列表,每个任务的序号不会变动,即便1-5个序号任务已经执行完毕,显示出的第六个未执行任务的序号也是6,而不会变成1。

    4.4:atrm 命令,删除指定编号的at任务

    • atrm命令用来删除指定编号的at任务,编号可以通过atq查看。
    • 删除后的at任务不会出现在atq显示结果中。

    五:☆☆☆crontab周期性任务设置☆☆☆☆☆☆☆☆☆☆☆☆☆

    • crontab(定时任务)
    • 使用crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻重复性系统管理任务的操作
    • 软件包cronie 提供crontab工具,系统服务crond和配置文件 /etc/crontab。
    • 开启系统服务crond 是启动周期性任务的前提条件

    5.1:crontab的配置文件和目录

    • crond通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件来配置
    5.1.1: /etc/crontab 全局配置文件
    • 全局配置文件

    • /etc/crontab 文件中设置的是维护Linux系统所需的任务

    • Linux系统及相关程序在安装时自动设置

    • 不建议用户手动修改此文件

    • [root@localhost ~]# cat /etc/crontab		'//查看系统任务配置文件'
      SHELL=/bin/bash				'//设置执行计划任务的Shell环境'
      PATH=/sbin:/bin:/usr/sbin:/usr/bin			'//定义可执行命令及程序的路径'
      MAILTO=root				'//将任务输出信息发送到指定用户的邮箱'
      HOME=/ 			'//执行计划任务时使用的主目录'
      
      # For details see man 4 crontabs
      
      # Example of job definition:
      # .---------------- minute (0 - 59)		'//分钟范围:0-59'
      # |  .------------- hour (0 - 23)		'//小时范围:0-23'
      # |  |  .---------- day of month (1 - 31)		'//一个月的天数范围:1-31'
      # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...		'//月数范围:1-12'
      # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat		'//一周的天数范围: 0-6(周日用0或者7表示)'
      # |  |  |  |  |
      # *  *  *  *  * user-name  command to be executed
      
      
    5.1.2:/etc/cron.*/ 系统默认设置
    • 系统默认设置cron任务的配置文件存放目录

    • 软件包crontabs安装后,会在/etc/cron.*/目录下生成存放一些系统默认设置的计划任务目录,设置了系统每个小时,每一天做些什么任务

    • 例如:

      /etc/cron.hourly/ 目录下存放的是系统每小时要做的任务可执行脚本

      /etc/cron.daily/ 目录下存放的是系统每天要做的任务可执行脚本

      /etc/cron.weekly/ 目录下存放的是系统每周要做的任务可执行脚本

      /etc/cron.monthly/ 目录下存放的是系统每月要做的任务可执行脚本

    • 这些是可执行脚本,不是cron配置文件,crond服务通过run-parts 工具调用执行这些脚本

    5.1.3:☆☆☆/var/spool/cron/用户名 用户定义的位置☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
    • 用户自行设置的cron计划任务将被保存到目录/var/spool/cron/中

    • 用户使用crontab命令创建计划任务,就会在/var/spool/cron/目录下生产一个与用户名相同的文件

    • 例如:root用户的cron计划任务保存在配置文件/var/spool/cron/root中

      [root@localhost ~]# ls -l /var/spool/cron/*
      ls: 无法访问/var/spool/cron/*: 没有那个文件或目录		'//没有创建任务'
      
      
    • crond守护进程会自动检查上述三个文件,若有配置更改,就会载入内存,不需重启crond守护进程就可以使设置生效

    5.2:使用crontab命令管理用户的计划任务

    • 常用选项
      crontab -e [-u 用户名]  		'//编辑计划任务  e:edit,编辑,使用方式同Vim编辑器。'
      crontab -l [-u 用户名] 		'//查看计划任务  l:list,列表'
      crontab -r [-u 用户名]  		'//删除计划任务  r:remove,移除'
      
      crontab -l 		'//查看当前用户的计划列表'
      crontab -l -u lisi 		 '//查看lisi用户的计划任务'
      
      crontab -e 		'//可以操作删除一条计划任务'
      crontab -r 		'//删除用户所有的计划任务'
      
      • 命令格式: 时间周期设置 + 任务内容设置

      mark

    • ☆☆☆分时日月周的取值范围和命令的说明☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

      字段 说明
      分钟 取值为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天'
      
      • “分钟”字段应该填写一个具体的时间数值,不可是“*”,否则将会每一分钟都执行一次任务
    • 实例

      如:每天15:30将/home/中zhangsan目录复制到/opt/中
      [root@localhost ~]# crontab -e		'//编辑计划任务'
      进入编辑列表开始编辑,操作类似vim 编辑器
      30 15 * * * /usr/bin/cp -r /home/zhangsan /opt/		'//在其中编辑好任务,wq保存退出'
      
      
    展开全文
  • 详细了解系统中运行的各种程序信息,关闭失去响应的进程,以及在指定时间自动执行任务。搞定操作方法。

    文章目录


    前言
    详细了解系统中运行的各种程序信息,关闭失去响应的进程,以及在指定时间自动执行任务。搞定操作方法。
    看了本篇,你将学会以下知识点
    在这里插入图片描述

    一:程序,进程,线程之间的关系

    1.1:进程概述

    进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。在这里插入图片描述

    1.2:应用程序,进程和线程的关系

    在这里插入图片描述
    举例:以一个工厂结构举例

    应用程序=工厂

    进程=车间

    线程=工人

    高并发处理==>依赖于多线程操作

    1.2.1:程序和进程的关系

    程序

    保存在硬盘,光盘等介质中的可执行代码和数据

    静态保存的代码

    进程

    在CPU及内存中运行的程序代码

    动态执行的代码

    父.子进程:每个进程可以创建一个或多个进程,是一个依赖关系。

    1.2.2:进程和线程的关系

    进程和线程都是由操作系统的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性

    一个程序至少有一个进程,一个进程至少有一个线程

    线程的划分尺度小于进程,所以多线程程序的并发性高

    进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了程序的运行效率

    线程在执行过程中与进程存在区别

    每个独立的线程有一个程序运行的入口,顺序执行序列和程序的出口

    但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

    从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行

    但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配

    这就是进程和线程的重要区别

    进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位

    线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈)但是它可以与同属一个进程的其他线程共享进程所拥有的全部资源

    一个线程可以创建和撤销另一个线程

    同一个进程中的多个线程之间可以并发执行

    二:查看进程

    2.1:静态查看 ps命令

    2.1.1:ps命令,查看静态的进程统计信息(Processes Statistic)

    ps命令是Linux系统中最为常用的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照

    ps命令基本格式
    ps [选项]  注意:有一些选项时不带“-”前缀的(添加“-”前缀后含义可能会有出入)
    a  显示当前终端下的所有进程信息,包括其他用户的进程、与“x”选项结合时将显示系统中所有的进程信息
    u  使用以用户为主的格式输出进程信息
    x  显示当前用户在所有终端下的进程信息
    -e 显示系统内的所有进程信息
    -l 使用长(Long)格式显示进程信息
    -f 使用完整的(Full)格式显示进程信息
    

    执行不带任何选项的ps命令时,将只显示当前用户会话中打开的进程

    [root@localhost ~]# ps
       PID TTY          TIME CMD
      2711 pts/0    00:00:00 bash
      2946 pts/0    00:00:00 ps
    

    2.1.2:ps aux命令 以简单列表的形式显示出进程信息

    [root@localhost ~]# ps aux
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root          1  0.2  0.3 193700  6836 ?        Ss   22:38   0:01 /usr/lib/systemd/syst
    root          2  0.0  0.0      0     0 ?        S    22:38   0:00 [kthreadd]
    root          3  0.0  0.0      0     0 ?        S    22:38   0:00 [ksoftirqd/0]
    root          4  0.0  0.0      0     0 ?        S    22:38   0:00 [kworker/0:0]
    root          5  0.0  0.0      0     0 ?        S<   22:38   0:00 [kworker/0:0H]
    root          7  0.0  0.0      0     0 ?        S    22:38   0:00 [migration/0]
    root          8  0.0  0.0      0     0 ?        S    22:38   0:00 [rcu_bh]
    ..以下省略部分内容
    

    上述输出信息中,每一列称为字段或者列或者属性

    上述输出信息中,第一行为列表标题,其中个字段的含义如下

    USER: 启动该进程的用户账号信息

    PID: 该进程在系统中的数字ID号,在当前系统中是唯一的

    %CPU:CPU占用的百分比

    %MEN:内存占用的百分比

    VSZ:占用虚拟内存(SWAP)的大小

    RSS:占用常驻内存(物理内存)的大小

    TTY: 表明该进程在哪个终端上运行。“?”表示未知或者不需要终端

    SATA: 显示了进程当前的状态,如S(休眠),R(运行),Z(僵死),<(高优先级),N(低优先级),s(父进程),+(前台进程),l(多线性进程),D(不可休眠进程)对处于僵死状态的进程应该予以手动终止

    START: 启动该进程的时间

    TIME: 该进程占用CPU时间

    COMMAND: 启动该进程的命令的名称

    2.1.3:ps -elf 命令:以长格式显示系统中的进程信息

    [root@localhost ~]# ps -elf
    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 23:04 ?        00:00:00 /usr/l
    1 S root          2      0  0  80   0 -     0 kthrea 23:04 ?        00:00:00 [kthre
    1 S root          3      2  0  80   0 -     0 smpboo 23:04 ?        00:00:00 [ksoft
    1 S root          4      2  0  80   0 -     0 worker 23:04 ?        00:00:00 [kwork
    1 S root          5      2  0  60 -20 -     0 worker 23:04 ?        00:00:00 [kwork
    1 S root          6      2  0  80   0 -     0 worker 23:04 ?        00:00:00 [kwork
    1 S root          7      2  0 -40   - -     0 smpboo 23:04 ?        00:00:00 [migra
    1 S root          8      2  0  80   0 -     0 rcu_gp 23:04 ?        00:00:00 [rcu_b
    1 R root          9      2  0  80   0 -     0 -      23:04 ?        00:00:00 [rcu_s
    ..此处省略部分信息
    

    PPID:表示对应进程的父进程的PID号

    PRI:用户态优先级(人为)

    NI: nice值,内核态优先级,取值范围(-20~19),值越小,优先级越高

    ADDR:若是 - ,代表正在运行

    SZ:在swap交换分区的容量

    WCHAN:当前进程在内核中的名称

    STIME:启动时间

    2.1.4:ps aux | grep "bash"命令

    由于系统中运行的进程数量较多,需要查询某一个进程的信息时可以结合管道操作和grep命令进行过滤。

    此命令可以过滤出包含“bash”的进程信息

    [root@localhost ~]# ps aux | grep "bash"
    root        655  0.0  0.0 115256   924 ?        S    23:04   0:00 /bin/bash /usr/sbin/ksmtuned
    root       1791  0.0  0.0  51332   580 ?        Ss   23:05   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
    root       2422  0.0  0.1 116300  2864 pts/0    Ss+  23:05   0:00 bash
    root       2482  0.0  0.1 116044  2776 pts/1    Ss   23:06   0:00 -bash
    root       2536  0.0  0.0 112680   984 pts/1    S+   23:07   0:00 grep --color=auto bash
    

    2.2:动态查看 top命令

    使用ps命令查看到的是一个静态的进程信息,并不能连续的反馈出当前进程的运行状态

    top命令将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括CPU,内存等系统资源占用情况

    默认情况下每三秒刷新一次

    作用类似于Windows系统中的任务管理器

    2.2.1:top 命令

    top - 23:17:10 up 12 min,  3 users,  load average: 0.00, 0.04, 0.06
    Tasks: 185 total,   1 running, 184 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.7 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1867024 total,   670880 free,   669584 used,   526560 buff/cache
    KiB Swap:  4194300 total,  4194300 free,        0 used.   986308 avail Mem 
    
       PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND       
      1833 root      20   0 1624108 168500  51624 S  0.0  9.0   0:02.26 gnome-shell   
      1983 root      20   0 1100816  63532  20704 S  0.0  3.4   0:00.10 evolution-cal+
      2083 root      20   0 1202856  59344  19216 S  0.0  3.2   0:00.08 evolution-cal+
      2040 root      20   0 1040248  59132  19108 S  0.0  3.2   0:00.06 evolution-cal+
      1994 root      20   0  884268  32724  14160 S  0.0  1.8   0:00.31 gnome-software
      1392 root      20   0  288368  30804  10276 S  0.0  1.6   0:00.40 X             
      1965 root      20   0 1026108  30296  18916 S  0.0  1.6   0:00.20 nautilus-desk+
    

    操作选项

    M:以内存大小排序

    c:以CPU占用排序

    h:top程序在线帮助信息

    q:退出

    上述输出信息中,开头的部分显示了系统任务(Tasks),CPU占用,内存占用(Mem),交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。相关信息含义如下

    1.系统任务(Tasks)信息:total,总进程数;running,正在运行的进程数;sleeping。休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数

    2.CUP占用信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id,空闲CPU;wa,I/O等待占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。要了解空闲的CPU百分比,主要是看%id部分

    3.内存占用(Mem)信息:total,总内存空间;used,已用内存空间;free,空闲内存空间;buffers,缓存区域

    4.交换空间(Swap)占用:total,总交换空间;used,已用交换空间;free,空闲交换空间;cached,缓存空间

    2.3:查看进程信息 pgrep 和 pstree

    2.3.1:pgrep命令

    当使用ps命令查询某个进程的PID信息时,往往需要结合grep命令对输出结果进行过滤,很不方便

    pgrep命令正是用来查询特定进程信息的专用工具

    pgrep命令可以根据进程的名称,运行该进程的用户,进程所在的终端等多重属性查询特定进程的PID号

    通过pgrep命令可以指定进程的一部分名称进行查询,结合“-l"选项可以同时输出对应的进程名

    “-l”选项显示进程名
    [root@localhost ~]# pgrep -l "log"		'//查询进程名中包含“log”的进程及其PID号'
    282 xfs-log/sda2
    444 xfs-log/sda5
    445 xfs-log/sda1
    555 systemd-logind
    561 abrt-watch-log
    580 abrt-watch-log
    597 rsyslogd
    640 mcelog
    

    结合“-U”选项查询特定用户的进程
    “-t”选项查询在特定终端运行的进程
    tty=0 远程终端登录
    tty=1 本地终端登录

    [root@localhost ~]# pgrep -l -U lisi tty 1		'//查询在1终端的lisi 用户的进程'
    27483 bash
    27584 vim
    

    2.3.2:pstree命令

    pstree命令以属性结构列出进程信息,可以更直观的判断各进程的相互关系(父,子进程)

    pstree命令默认情况下只显示各进程的名称

    “-p”选项,列出对应的PID号

    “-u”选项,列出对应的用户名

    “-a”选项,列出完整的命令信息

    [root@localhost ~]# pstree -aup		'//查看当前系统的进程树(包括各进程对应的PID号,用户名,完整命令等信息)'
    systemd,1 --switched-root --system --deserialize 21
      ├─ModemManager,601
      │   ├─{ModemManager},631
      │   └─{ModemManager},635
      ├─NetworkManager,667 --no-daemon
      │   ├─dhclient,791 -d -q -sf /usr/libexec/nm-dhcp-helper -pf...
      │   ├─{NetworkManager},676
      │   └─{NetworkManager},678
    ..省略部分信息
    

    [root@localhost ~]# pstree -ap lisi ‘//查看用户lisi打开的进程及子进程的树结构’

    Windows系统开启后读取SAM文件

    Linux系统开机后读取passwd和shadow文件,随后读取/bin/bash 、/sbin/nologin文件

    三:控制进程

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

    3.1:启动进程

    Linux系统中可以

    用户手工启动进程

    按预定计划调度启动新的进程

    3.1.1:手工启动

    进程在前台运行时,用户必须等到该进程执行结束并退出后才能继续输入其他命令。运行耗时较长的操作可进入后台运行,进程在后台运行时,用户可以继续在当前终端输入其他命令,无需等待该进程结束。

    前台启动:用户输入命令,直接执行程序

    后台启动:在命令末尾加入“&”符号

    [root@localhost ~]# cp /dev/cdrom mycd.iso&		'//在后台运行复制镜像文件进程'
    [1] 3227		'//输出信息中心包括后台任务序号,PID号'
    

    3.1.2:调度启动

    有些任务非常费时,适合在相对空闲的时间进行,我们便可以使用调度安排启动
    at命令,设置一次性计划任务(如 12:30重启网络服务)
    crontab,命令,设置周期性计划任务(如 每周六18:00 备份数据库)

    3.2:改变进程的运行方式

    3.2.1:挂起当前进程 Ctrl+Z 组合键

    将当前进程挂起,即调入后台并停止执行(对于速度缓慢,会耽误其他操作的进程使用)

    3.2.2:查看后台进程 jobs 命令

    查看处于后台的任务列表。
    结合“-l”选项可以同时显示出该进程对应的PID号
    输出结果中,每一行记录对应一个后台进程的状态信息,行首的数字代表该进程在后台的任务编号。
    若当前终端没有后台进程,将不会显示任何信息

    3.2.3:将后台的进程恢复运行 fg 命令

    将后台进程恢复到前台运行,可以指定任务序号
    bg(BackGround)命令可以将后台中暂停执行的任务恢复运行,继续在后台执行操作
    fg(ForeGround)命令可以将后台任务恢复到前台运行
    除非后台任务只有一个,否则bg和fg命令都需要指定后台进程的任务编号作为参数

    3.3:终止进程执行

    平常可以使用Ctrl + C组合键强制中断
    Ctrl + C组合键无法中止后,可以使用专门的进程中止工具 kill,killall,pkill

    3.3.1:使用kill命令终止进程

    kill命令需要使用进程的PID号作为参数

    若进程无法响应,可结合“-9”选项强行中止进程。强行中止进程可能会到时部分数据丢失,谨慎使用

    3.3.2:使用killall命令终止进程

    killall命令通过进程名来中止进程,可终止指定名称所有进程(可理解为终止进程树)
    killall命令同样有“-9”选项,强制终止进程

    3.3.3:使用pkill命令终止进程

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

    常用命令选项:

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

    -t:根据进程所在的终端终止相应的进程

    管理员可以pkill 普通用户踢下线
    普通用户不可以pkill管理员
    [root@localhost ~]#pkill -9 -U “lisi”

    四:at一次性任务设置

    CentOS7系统中的计划任务是由at,cronie软件包提供,通过atd和crond这两个系统服务实现一次性,周期性的计划任务功能,并分别通过at,crontab命令进行计划任务设置
    开启系统服务atd是at命令设置的计划任务的前提条件

    4.1:at命令基本格式

    at [HH:MM] [yyyy-mm-dd] ‘//at 时:分 年-月-日’
    1

    4.2:at命令使用顺序

    查看时间–>设置时间–>输入命令–>Ctrl + D提交任务

    date:查看当前时间。设置任务,时间不可在当前时间之前

    命令输入完成后按 Ctrl + D组合键提交任务即可

    [root@localhost ~]# date		'//查看当前时间'
    2019年 11月 13日 星期三 00:45:58 CST
    [root@localhost ~]# at 00:48 2019-11-13 		'//设置任务执行时间'
    at> pgrep -U root |wc -l > /tmp/ps.root			'//输入命令(统计该时间点系统中由root用户运行的进程数量,并将数值保存到/tmp/ps.root文件中)'
    at> <EOT>		'//按Ctrl + D组合键提交任务'
    job 1 at Wed Nov 13 00:48:00 2019
    [root@localhost ~]# cat /tmp/ps.root		'//查看任务完成情况'
    175
    
    

    在这里插入图片描述

    4.3:atq 命令,查看待执行任务的列表

    对于已经设置,但并未执行的任务,可通过atq命令查看。(已经执行的任务不会出现)
    atq查看的任务列表,每个任务的序号不会变动,即便1-5个序号任务已经执行完毕,显示出的第六个未执行任务的序号也是6,而不会变成1。

    4.4:atrm 命令,删除指定编号的at任务

    atrm命令用来删除指定编号的at任务,编号可以通过atq查看。
    删除后的at任务不会出现在atq显示结果中。

    五:crontab周期性任务设置

    crontab(定时任务)
    使用crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻重复性系统管理任务的操作
    软件包cronie 提供crontab工具,系统服务crond和配置文件 /etc/crontab。
    开启系统服务crond 是启动周期性任务的前提条件

    5.1:crontab的配置文件和目录

    crond通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件来配置

    5.1.1: /etc/crontab 全局配置文件

    全局配置文件

    /etc/crontab 文件中设置的是维护Linux系统所需的任务

    Linux系统及相关程序在安装时自动设置

    不建议用户手动修改此文件

    [root@localhost ~]# cat /etc/crontab		'//查看系统任务配置文件'
    SHELL=/bin/bash				'//设置执行计划任务的Shell环境'
    PATH=/sbin:/bin:/usr/sbin:/usr/bin			'//定义可执行命令及程序的路径'
    MAILTO=root				'//将任务输出信息发送到指定用户的邮箱'
    HOME=/ 			'//执行计划任务时使用的主目录'
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)		'//分钟范围:0-59'
    # |  .------------- hour (0 - 23)		'//小时范围:0-23'
    # |  |  .---------- day of month (1 - 31)		'//一个月的天数范围:1-31'
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...		'//月数范围:1-12'
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat		'//一周的天数范围: 0-6(周日用0或者7表示)'
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    

    5.1.2:/etc/cron.*/ 系统默认设置

    系统默认设置cron任务的配置文件存放目录

    软件包crontabs安装后,会在/etc/cron.*/目录下生成存放一些系统默认设置的计划任务目录,设置了系统每个小时,每一天做些什么任务

    例如:

    /etc/cron.hourly/ 目录下存放的是系统每小时要做的任务可执行脚本

    /etc/cron.daily/ 目录下存放的是系统每天要做的任务可执行脚本

    /etc/cron.weekly/ 目录下存放的是系统每周要做的任务可执行脚本

    /etc/cron.monthly/ 目录下存放的是系统每月要做的任务可执行脚本

    这些是可执行脚本,不是cron配置文件,crond服务通过run-parts 工具调用执行这些脚本

    5.1.3:/var/spool/cron/用户名 用户定义的位置

    用户自行设置的cron计划任务将被保存到目录/var/spool/cron/中

    用户使用crontab命令创建计划任务,就会在/var/spool/cron/目录下生产一个与用户名相同的文件

    例如:root用户的cron计划任务保存在配置文件/var/spool/cron/root中

    [root@localhost ~]# ls -l /var/spool/cron/*
    ls: 无法访问/var/spool/cron/*: 没有那个文件或目录		'//没有创建任务'
    

    crond守护进程会自动检查上述三个文件,若有配置更改,就会载入内存,不需重启crond守护进程就可以使设置生效

    5.2:使用crontab命令管理用户的计划任务

    在这里插入图片描述
    在这里插入图片描述
    ☆☆☆分时日月周的取值范围和命令的说明
    在这里插入图片描述
    在这里插入图片描述

    命令格式: 时间周期设置 + 任务内容设置

    “分钟”字段应该填写一个具体的时间数值,不可是“*”,否则将会每一分钟都执行一次任务
    实例

    如:每天15:30将/home/中zhangsan目录复制到/opt/中
    [root@localhost ~]# crontab -e		'//编辑计划任务'
    进入编辑列表开始编辑,操作类似vim 编辑器
    30 15 * * * /usr/bin/cp -r /home/zhangsan /opt/		'//在其中编辑好任务,wq保存退出'
    
    常用选项
    crontab -e [-u 用户名]  		'//编辑计划任务  e:edit,编辑,使用方式同Vim编辑器。'
    crontab -l [-u 用户名] 		'//查看计划任务  l:list,列表'
    crontab -r [-u 用户名]  		'//删除计划任务  r:remove,移除'
    
    crontab -l 		'//查看当前用户的计划列表'
    crontab -l -u lisi 		 '//查看lisi用户的计划任务'
    
    crontab -e 		'//可以操作删除一条计划任务'
    crontab -r 		'//删除用户所有的计划任务'
    

    六.管理进程及计划任务实验

    在这里插入图片描述
    管理系统中的进程

    1. 使用kill命令终止postfix服务的运行

    在这里插入图片描述

    2. 查找系统中CPU占用率超过80%的进程,并强行终止该进程

    这里用tom用户下的一个下载进程进行模拟在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.设置计划运行的系统管理任务

    ◆每周一早上7:50自动清空FTP服务器"/var/ftp/pub" 中数据
    ◆每天晚上的10:30自动执行任务,完成以下操作
    ◆显示当前的系统时间并查看已挂载磁盘分区的磁盘使用情况
    ◆将输出结果追加到文件/arlog/df.log中,持续观察硬盘空间变化
    ◆确认所设置的计划任务列表
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 文章目录进程与计划任务管理一、查看进程(PID)1、静态查看进程统计信息2、动态查看进程统计信息(top)二、查看进程1、查看进程信息pgrep2、查看树形结构的进程信息(pstree)三、启动进程的方式1、手动启动【1】...

    进程与计划任务管理

    一、查看进程(PID)

    1、静态查看进程统计信息

    【1】命令:ps aux |wc -l(显示行数)
    【2】参数含义(Unix选项继承过来的,不能加“-”)
    (1)a当前终端下所有进程信息,包括其他用户进程
    (2)u使用以用户为主的格式输出进程信息
    (3)x显示当前用户在所有终端下的进程信息
    【3】命令:ps -elf
    【4】参数含义(Linux自主研发的,必须加“-”)
    (1)-e显示系统内的所有进程的信息
    (2)-l使用长格式显示进程信息
    (3)-f使用完整的full格式显示进程信息
    【5】grep结合管道符号
    (1)原因:由于系统中运行的进程数量较多,需要查询某一个进程的信息时可以结合管道符号和grep命令进行过滤。
    (2)命令模型:ps aux |grep “bash”

    2、动态查看进程统计信息(top)

    【1】top命令会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次。
    【2】在top界面
    排序:按“P”以CPU最高到底排序,“M”以内存从大到小排序
    主要参数:2users表示2个用户,load average(平均负载):1分钟、5分钟、15分钟

    二、查看进程

    1、查看进程信息pgrep

    【1】用途
    根据特定条件查询进程PID信息
    【2】常用选项
    (1)-l:显示进程名
    (2)-U:指定特定用户
    (3)-t:指定终端
    【3】举例说明

    Pgrep -l “log”显示“log”的进程
    Pgrep -l -U teacher -t tty1显示teacher用户,tty1终端的进程号
    

    2、查看树形结构的进程信息(pstree)

    【1】常用参数
    (1)-a:显示完整信息
    (2)-u:列出对应用户名
    (3)-p:列出对应PID
    【2】举例说明

    pstree -aup
    Pstree -apu tom
    

    三、启动进程的方式

    1、手动启动

    【1】前台启动

    用户输入命令,直接执行程序

    vim aa.txt
    
    【2】后台启动

    在命令行尾加入“&”符号,在运行这个程序的同时还干其他的事。

    cp /dev/cdrom mycd.iso &(会显示进程号和任务序号)
    
    【3】进程前后台的调度

    (1)Ctrl+Z组合键:将当前进程挂起,及调入后台并停止执行
    (2)Jobs命令:查看处于后台停止执行“+”最近后台运行的,“-”次近的
    (3)Fg命令:将后台进程恢复到前台运行,可指定任务序号

    【4】终止进程运行

    (1)Ctrl+C组合键:中断正在执行的命令
    (2)Kill(-9强制)命令:用于终止指定PID的进程号
    (3)Killall(-9强制)l命令:用户终止指定名称的所有进程
    (4)Pkill命令:根据特定条件终止相应的进程
    相关参数:
    -U:根据进程所属的用户终止相应的进程
    -t:根据进程所在终端终止相应的进程

    2、调度启动

    【1】一次性任务设置(at)

    (1)服务脚本名称:/etc/init.d/atd
    (2)设置格式:at [HH:MM] [yyyy-mm-dd]
    (3)相关命令:atq(查看未执行)atrm 2(删除第2条任务)
    (4)举例说明:

    at 14:55 2020-06-19
    at>pgrep -U root | wc -l >/tmp/ps.root(Ctrl+D提交任务)
    cat /tmp/ps.root(到规定时间查看目录文件是否存在)
    110
    
    【2】周期性任务设置(crond服务)

    系统通过run-parts工具(shell脚本,可执行指定文件下的可执行文件)调用执行位于“/etc/cron.* ”中的文件。
    除了run-parts工具之外还有一个捡漏程序anacron,有软件包cronie-anacron提供,配置文件/etc/anacrontab,由crond进行调用管理。

    (1)其管理命令crontab

    按照预先设置的时间周期(分,时,天,月,周)重复执行用户指定的命令操作,属于周期性计划,服务脚本名称/etc/init.d/crond

    (2)主要设置文件

    全局配置文件:/etc/crontab
    系统默认的设置,位于/etc/cron.*/
    用户定义的设置:/var/spool/cron/aa.txt

    (3)相关参数

    命令格式:时间周期设置(分,时,日,月,周) 任务内容(命令绝对路径 参数 什么操作 >放置路径一般是绝对路径)
    编辑计划任务:crontab -e [-u 某个用户]
    查看计划任务:crontab -l [-u 某个用户]
    删除计划任务:crontab -r [-u 某个用户]

    (4)时间数值的特殊表示方法
     “ * ” 表示该范围内的任意时间 (0 17 * * 1-5周一到周五每天17:00)
     “ , ” 间隔的多个不连续的时间点(30 8 * * 1,2,3 每周一、二、三的8:30)
     “ - ”  表示一个连续的时间范围(0 8-18/2 * * *  每天8点到18点之间每2小时)
     “ / ” 指定时间间隔的频率(* * */3 * * 每三天)
    
    (5)举例说明

    (每周日23:55将“/etc/passwd”文件内容复制到宿主目录中,保存为pwd.txt文件)

    crontab -e -u tom(编辑)
    55 23 * * 7  /bin/cp /etc/passwd /home/tom/pwd.txt
    crontab -l -u tom(查看)
    55 23 * * 7  /bin/cp /etc/passwd /home/tom/pwd.txt
    crontab -r -u tom(删除所有任务)
    
    展开全文
  • 上一篇:SpringBoot多任务Quartz动态管理Scheduler,时间配置,页面+源 设置了多个 任务,本应该是各司其职的,任务调用多线程处理任务,but这个定时任务竟然同时跑了10次???如下图 让我很苦恼 百度一波,怀疑...
    • 上一篇:SpringBoot多任务Quartz动态管理Scheduler,时间配置,页面+源
    • 设置了多个 任务,本应该是各司其职的,任务调用多线程处理任务,but这个定时任务竟然同时跑了10次???如下图
      让我很苦恼

    • 百度一波,怀疑是否是因为多次初始化bean导致的?

      debug看了并没有多次初始化。。。那么就是任务多次执行了!

    • 看到别人有控制并发?加上注释试下
      @DisallowConcurrentExecution
      
      果然还是没有控制并发导致的:
      
    展开全文
  • 文章目录介绍种类cron时间规则使用简单任务动态时间开启多线程总结参考资料 介绍 定时任务是程序开发中重要且不可缺少的功能,它会自动按照设定好的时间规则,按时完成执行任务,一般周期性更新数据状态,闲时缓存...
  • 其他的比如区分不同项目、任务动态上下线、任务串行/并行执行、报警重试机制等功能,由于时间原因暂未添加。 整个框架设计非常简单: 应用在启动后会向注册中心上报任务,调度平台会根据任务生成计划列表,当任务...
  • 易利施工进度计划编制软件免费版

    热门讨论 2010-11-01 09:44:00
    提供进度标尺、实际进度前锋线等动态追踪工具,每个任务提供比较基准计划与10个中期计划保存中间状态时间,并可在横道图同时显示选中的中期与基准计划,方便的进行项目完成情况以及修改情况的比较。 八 方便实用 ...
  • 这些简单操作可以通过使用WINDOWS的计划任务设置完成。但其他较复杂任务,如根据参数进行数据库数据整理,根据数据库指定时间执行特定操作,计划任务往往力不从心了。SQL SERVER的调度任务也提供了定时执行的功能,...
  • 基于ArcGIS的时态GIS(一)

    千次阅读 2013-12-27 16:55:25
    Tracking Analyst是ArcMap的扩展模块之一,是基于时间序列的可视化和分析工具,可以...扩展模块允许用户对存在的时间数据进行观察和分析,并且能够对这些时间数据设置未来时间窗口(进行任务计划)或过去时间窗口(历史
  • 灵活设置各种采集规则和参数,可设计划任务自动采集,可对采集图片进行裁剪加水,支持采集内容关键词替 通行证 可与外阜系统实行会员通行,内置国内主流论坛或其它系统的通行模块,让您的会员一站通行
  • 该脚本应设置为按计划任务运行。 输出将如下所示。 它列出了任务序列的每个步骤以及: 图像开始时间图像完成时间图片持续时间上次日志接收时间成像期间的名称 我认为,最好的部分是它显示计算机在成像过程中失败...
  •  数据采集:灵活设置各种采集规则和参数,可设计划任务自动采集,可对采集图片进行裁剪加水,支持采集内容关键词替换    网页防篡改:可对网站生成的页面进行保护,遭遇非法篡改时自动更正,使您不再为网页被...
  • 首先利用基于优先规则的微粒群算法构建一个项目加权工期之和最小的初始调度计划,采用启发式算法建立并优化初始调度计划的资源流网络,并将关键链技术与资源流网络相结合,对初始调度计划进行合理的时间缓冲设置....
  • 水淼软件出品的水淼SDCMS站群文章...内置的计划任务,可以挂机在每天指定时间点自动点击【开始站群更新】按钮。如果站点不是静态的(也就是动态的),就不必设置更新完成时刷新HTML。 水淼SDCMS站群文章更新器截图:
  • 计划任务自动解禁禁言用户 保留买卖帖积分记录 上传的附件可直接作为媒体播放 管理组前后台权限细化 可以查看其他用户的全部主题和回复 增加附件的动态链接 通过注册ip自动审核会员 帖子审核机制改进
  • 计划任务自动解禁禁言用户 保留买卖帖积分记录 上传的附件可直接作为媒体播放 管理组前后台权限细化 可以查看其他用户的全部主题和回复 增加附件的动态链接 通过注册ip自动审核会员 帖子审核机制改进
  • 计划任务自动解禁禁言用户 保留买卖帖积分记录 上传的附件可直接作为媒体播放 管理组前后台权限细化 可以查看其他用户的全部主题和回复 增加附件的动态链接 通过注册ip自动审核会员 帖子审核机制改进
  • 环境:群晖+SurveillanceStation套件 问题:我的群晖接入了水星摄像头,使用...解法:设置任务计划,定时重启NVR服务,可以适当降低内存 /usr/syno/sbin/synoservice --restart pkgctl-SurveillanceStation ...
  • VS2010开发的图形化工作流OA

    热门讨论 2013-11-02 10:32:30
    报表管理 动态定制报表、动态数据抓取。报表可自定义。 信息交流 论坛BBS 论坛各个信息、帖子发帖信息 版块设置 版块具体设置 内部聊天室 各个聊天室进入后可自由聊天 聊天室设置 聊天室的基本设置 组织机构 ...
  • 报表管理 动态定制报表、动态数据抓取。报表可自定义。 信息交流 论坛BBS 论坛各个信息、帖子发帖信息 版块设置 版块具体设置 内部聊天室 各个聊天室进入后可自由聊天 聊天室设置 聊天室的基本设置 ...
  • 2,计划任务 计划任务功能根据您自定义的时间及任务设置即可实现指定时间关闭计算机,播放音乐,启动程序,结束程序,连接或断开网络,鼠标键盘事件(开发阶段)等,可进行指定次数,有效期等设置,有了它,您的电脑...
  • 数据批量替换功能让您方便的替换影片数据库里的影片名、影片简介等,删除指定来源功能可以删除指定的来源数据,数据库备份、数据库还原、数据库优化等功能,强大的计划任务功能:可以在制定时间自动执行指定的文件,...
  • 多用户商城系统

    2017-08-18 10:44:20
    1、系统设置:系统设置、地区管理、计划任务、链接规则、数据库管理、类别管理、url设置、插件管理、配置管理 2、权限管理:添加管理员、管理员组,设置管理员组权限 七、店铺管理 1、店铺列表:对店铺的基本信息、...
  • 21、 计划任务自动解禁禁言用户 22、 保留买卖帖积分记录 23、 上传的附件可直接作为媒体播放 24、 管理组前后台权限细化 25、 可以查看其他用户的全部主题和回复 26、 增加附件的动态链接 27、 通过注册ip...
  • php OA 源码 办公自动化源码

    热门讨论 2010-10-29 00:51:15
    工作日程:可以按天、周、月计划自己的工作内容,清楚的查看未完成、要完成、待完成的各项任务的内容、状态和时间,便于用户统筹安排工作,调整进度,及时跟进,彻底执行,确保各项工作的顺利完成。 工作日记:可以...
  • 计件任务交稿时间过期,无人交稿,没有正常退款 计件悬赏延期加价后,有剩余金额未返还雇主(解决方案:雇主选稿后就不能再延期加价) 增值工具后台价格设置为0元后,发布时未购买成功(解决方案:0元也要能购买...
  • OA系统+手机版源码t源代码

    热门讨论 2016-12-06 21:36:06
    任务分配--- 对下属用户分派工作任务,实时监控任务情况 下属日程 --- 下属员工的日程安排信息 下属日志 --- 下属员工的工作日志信息 下属计划--- 下属员工的工作计划信息 下属汇报 --- 下属员工的工作汇报...
  • 计划任务显示界面修复 添加广告时不能正常显示问题修复 PIPI播放器修复,自行打开添加PIPI的UID 修正评论留言开启状态说明 动态首页标签解析顺序调整,使用更灵活 还原数据库时错误修复 删除影片时过滤不严...
  •  ● 项目经核准的计划任务书、合同或上级机关的批文  ● 与项目有关的已发表的资料  ● 文档中所引用的资料,所采用的软件标准或规范 2 可行性研究的前提 2.1 要求:列出并说明建议开发软件的的基本要求,如 ...
  • 计量管理软件

    2012-02-02 11:49:47
    包括年度、月度器具检定计划和费用计划,可以给各使用部门、检定科室、检定员、外送单位发送或打印检定通知单和明细台账,同时预测将来可能发生的检定费用并通过计划动态调整,平衡检定员的月度工作量。...

空空如也

空空如也

1 2 3 4 5 6
收藏数 112
精华内容 44
关键字:

计划任务动态设置时间