进程和计划任务管理

进程和计划任务管理

1.查看进程

1)程序和进程的关系
  • 程序
    • 保存在硬盘、光盘等介质中的可执行代码和数据
    • 文件中静态保存的代码
  • 进程
    • 在CPU及内存中运行的程序代码
    • 动态执行的代码
    • 父、子进程
      • 每个程序可以创建一个或多个进程
      • 父进程保证服务活着,fork创建、管理子进程
      • 每个子进程负责该服务的一个功能
2)父、子进程的区别

父进程和子进程是操作系统中进程间关系的两个基本概念。当一个进程创建了另一个进程时,创建进程被称为父进程,而被创建的进程被称为子进程。父进程和子进程之间有一些关键的区别:

  1. 创建关系
    • 父进程通过调用操作系统提供的进程创建函数(如Unix/Linux系统中的fork())来创建子进程。
    • 子进程是由父进程复制自身的代码、数据、堆栈等资源而产生的新进程。
  2. 进程ID
    • 每个进程都有一个唯一的进程标识符(PID),父进程和子进程拥有不同的PID。
    • 父进程的PID在创建子进程后保持不变,而子进程会获得一个新的PID。
  3. 资源继承
    • 子进程在创建时会继承父进程的一些资源,如打开的文件描述符、信号处理方式、环境变量等。
    • 但是,子进程有自己的地址空间、全局变量的副本、堆栈等,这些是独立于父进程的。
  4. 执行顺序
    • 父进程和子进程的执行顺序是不确定的,取决于操作系统的调度策略。
    • 在某些情况下,父进程可能会等待子进程结束(通过调用wait()waitpid()函数),但这不是必须的。
  5. 通信和同步
    • 父进程和子进程之间可以通过各种IPC(进程间通信)机制进行通信,如管道、消息队列、共享内存等。
    • 它们也可以使用同步原语(如信号量、互斥锁)来协调彼此的执行。
  6. 生命周期
    • 父进程的终止不一定会导致子进程的终止。子进程可以独立于父进程继续运行。
    • 如果父进程在子进程之前终止,操作系统会将子进程的父进程设置为初始化进程(通常是PID为1的init进程或systemd),并负责清理子进程的资源。
  7. 权限和安全性
    • 子进程通常继承父进程的用户和组身份,但也可能通过设置用户ID(UID)和组ID(GID)来改变其权限。
    • 系统管理员可以使用这些特性来创建受限的子进程,以执行特定的任务而不影响系统的安全性。
3)查看进程信息
ps命令(查看静态进程信息)

ps(process status)命令是Unix和类Unix操作系统(如Linux)中用于查看当前系统中运行的进程信息的命令。通过ps命令,用户可以获得关于进程的状态、PID(进程标识符)、CPU和内存使用情况、运行时间等信息。

以下是ps命令的一些常用选项和用法:

基本用法

  • ps -elfps aux:显示详细的进程信息,包括用户、PID、CPU和内存使用率、启动时间等。

常用选项

  • -e-A:显示所有进程。
  • -a:显示所有进程包括其他用户。
  • -f:显示完整格式的信息。
  • -u-U:显示指定用户或UID的进程。
  • -p:显示指定PID的进程。
  • -t:显示指定终端的进程。
  • -x:显示没有控制终端的进程。
  • -l:长格式输出,包含更多的进程状态信息。
  • -o:自定义输出格式。

示例

  1. 显示当前终端中运行的进程:

    ps
    
  2. 显示系统中所有运行的进程:

    ps -e
    
  3. 显示指定用户(例如root)的进程:

    ps -u root
    
  4. 显示指定PID(例如1234)的进程:

    ps -p 1234
    
  5. 显示详细的进程信息:

    ps -elf
    
  6. 自定义输出格式,例如只显示PID、命令和CPU使用率:

    ps -eo pid,comm,pcpu
    

输出示例:

  • ps aux

    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.0 0.0 191004 4036 ? Ss 13:38 0:01 /usr/lib/syste

    • 各列的解释
      • USER:进程的用户。
        PID:进程的ID。
        %CPU:进程占用的CPU百分比。
        %MEM:占用内存的百分比。
        VSZ:该进程使用的虚拟内存量(KB)。
        RSS:该进程占用的物理内存量(KB)。
        TTY:启动进程的终端名。不是从终端启动的进程则显示为:?
        STAT:该行程的状态(D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;T:停
        止状态,可能是在后台暂停或进程处于跟踪调试状态;Z:僵尸进程,进程已经中止,但是部分程序还在内存
        当中)。
        START:该进程被触发启动时间。
        TIME:该进程实际使用CPU运行的时间。(大部分运行时间快所以显示0:00)
        COMMAND:进程的启动命令(名称与参数)。
  • 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 - 47751 ep_pol 13:38 ? 00:00:01 /usr/lib/systemd/systemd --s
    • 各列的解释
      • F:内核分配给进程的系统标记。
        S:进程的状态(D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;T:停
        止状态,可能是在后台暂停或进程处于跟踪调试状态;Z:僵尸进程,进程已经中止,但是部分程序还在内存
        当中)。
        UID:启动这些进程的用户。
        PID:进程的进程ID。(0为没有父进程)
        PPID:父进程的进程号(如果该进程是由另一个进程启动的)。
        C:进程生命周期中的CPU利用率。
        PRI:进程的优先级(越大的数字代表越低的优先级)。
        NI:谦让度值用来参与决定优先级。
        ADDR:进程的内存地址。
        SZ:假如进程被换出,所需交换空间的大致大小。表示进程当前占用的虚拟内存大小。
        WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名。
        STIME:进程启动时的系统时间。
        TTY:进程启动时的终端设备。(拓展:表示一个终端PTS/1)
        TIME:运行进程需要的累计CPU时间。
        CMD:进程的启动命令。
②top命令(查看进程动态信息)

top 命令是一个在 Unix 和 Linux 系统中常用的实时系统监视工具,它能够显示系统中各个进程的资源占用情况,包括 CPU 使用率、内存使用率等。通过 top 命令,用户可以快速了解系统的整体运行状态和资源消耗情况。
输出示例:

  1. 头部信息

    top - 14:08:45 up  2:34,  3 users,  load average: 0.08, 0.12, 0.09
    
    • 14:08:45:当前时间。
    • up 2:34:系统已运行时间为 2 小时 34 分钟。
    • 3 users:当前有 3 个用户登录。
    • load average: 0.08, 0.12, 0.09:过去 1 分钟、5 分钟和 15 分钟的平均负载。
  2. 进程和 CPU 信息

    Tasks: 123 total,   1 running, 122 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.0 us,  0.5 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    
    • Tasks:系统中的进程总数、运行中的进程数、睡眠中的进程数、已停止的进程数和僵尸进程数。
    • %Cpu(s):CPU 使用情况,包括用户进程占用的百分比(us)、系统进程占用的百分比(sy)、空闲时间(id)等。
  3. 内存信息

    MiB Mem :   8161.4 total,   1024.0 free,   2416.8 used,   4720.6 buff/cache
    MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   5768.3 avail Mem 
    
    • MiB Mem:物理内存总量、空闲内存、已使用内存和缓冲/缓存内存。
③pgrep命令

pgrep是一个用于查找进程ID(PID)的命令行工具它可以根据进程的名字或其他属性来查找对应的PID。pgrep命令通常与其他命令一起使用,如 kill 命令。

常用选项:

-a 显示进程名和 PID;
-c 仅显示匹配进程的数量,而不显示进程名和 PID
-f 匹配进程名及其参数;

④jobs命令

jobs命令可以用于列出这些后台进程的状态信息。

-l 显示所有后台进程的 PID;

-p 显示所有后台进程的进程组 ID;

-n 仅显示最近的后台进程;

-r 仅显示正在运行的后台进程;

-s 仅显示已停止的后台进程。

2.控制进程

9进程的启动方式

手工启动

  • 前台启动:用户输入命令,直接执行程序
  • 后台启动:在命令行尾加入”&”符号
  • 调度启动:定时启动程序
2)进程的前台调度

Ctrl+Z组合键

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

jobs命令

jobs [-l] 查看处于后台的任务列表

fg命令

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

3)终止进程的运行

Ctrl+C组合键
中断正在执行的命令

kill、killall命令
kill 用于终止指定PID号的进程

killall 用于终止指定名称相关的所有进程

-9 选项用于强制终止

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

常用命令选项

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

3.at一次性任务设置

at 命令是一个在 Unix 和 Linux 系统中用于在指定时间执行一次性任务的命令

以下是 at 命令的一些常用选项和参数:

  1. 基本用法

    at 时间
    

    例如,at 14:30 将在 14:30 执行后续输入的命令。

  2. 指定日期和时间

    at 14:30 12/31/2022
    

    例如,at 14:30 12/31/2022 将在 2022 年 12 月 31 日 14:30 执行后续输入的命令。

  3. 从文件读取任务

    at -f 文件名 时间
    

    例如,at -f /path/to/script.sh 14:30 将在 14:30 执行 /path/to/script.sh 文件中的命令。

  4. 指定用户

    at -u 用户名 时间
    

    例如,at -u root 14:30 将以 root 用户的身份在 14:30 执行后续输入的命令。

  5. 查看待执行任务

    atq
    

    例如,atq 将显示所有待执行的任务。

  6. 删除待执行任务

    atrm 任务编号
    

    例如,atrm 3 将删除编号为 3 的待执行任务。

4.crontab周期性任务设置

crontab 是一个在 Unix 和 Linux 系统中用于设置周期性被执行的任务的命令

以下是 crontab 命令的一些常用选项和参数:

  1. 列出当前用户的定时任务

    crontab -l
    

    这将列出当前用户的所有定时任务。

  2. 编辑当前用户的定时任务

    crontab -e
    

    这将打开一个编辑器,允许你编辑当前用户的定时任务。编辑完成后,保存并退出编辑器,新的定时任务将被保存。

  3. 删除当前用户的定时任务

    crontab -r
    

    这将删除当前用户的所有定时任务。

  4. 指定用户的定时任务

    crontab -u 用户名 -l
    crontab -u 用户名 -e
    crontab -u 用户名 -r
    

    这些命令允许你查看、编辑或删除指定用户的定时任务。需要注意的是,你需要具有相应的权限才能操作其他用户的定时任务。

关于定时任务的格式,它由 6 个字段组成,分别表示分钟、小时、日期、月份、星期几和要执行的命令。字段之间用空格分隔。以下是一些示例:

  • * * * * * command:每分钟执行一次 command
  • 0 2 * * * command:每天凌晨 2 点执行一次 command
  • 0 0 * * 1 command:每周一凌晨 0 点执行一次 command
  • 27
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值