首页 > 系统相关 >09-进程和计划任务管理

09-进程和计划任务管理

时间:2024-06-04 20:31:01浏览次数:16  
标签:00 09 用户 任务 进程 root CPU localhost

9.1查看和控制进程

9.1.1 查看进程

1.ps命令

pS 命令是 Linux 操作系统中最为常用的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照。通过不同的命令选项,可以有选择性地查看进程信息。

命令

作用

a

显示当前终端下的所有进程信息,包括其他用户的进程。

u

使用以用户为主的格式输出进程信息

x

显示当前用户在所有终端下的进程信息

e

显示系统内所有进程信息

I

使用长格式显示进程信息

f

使用完整的(Full)格式显示进程信息

1 BSD风格(free BSD)
# ps au 命令的输出结果解释  

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

# PID: 进程ID(Process ID),唯一标识一个进程  

# %CPU: 进程占用的CPU百分比  

# %MEM: 进程占用的物理内存百分比  

# VSZ: 进程使用的虚拟内存大小(KB)  

# RSS: 进程使用的物理内存大小(KB)  

# TTY: 进程使用的终端类型  

# STAT: 进程状态(例如 S=休眠, R=运行, Z=僵尸, T=停止, I=空闲)  

# START: 进程启动时间  

# TIME: 进程使用的CPU时间(分钟:秒)  

# COMMAND: 启动进程的命令或程序名  



# 示例输出:  

[root@localhost ~]# ps au

USER        PID  %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND  

root        834  0.0  0.1 110220 1696 tty1     Ss+ 13:56   0:00 /sbin/agetty --noclear tty1 linux  

root       1432  0.0  0.3 115692 3460 pts/0    Ss   13:56   0:00 -bash  

root       1459  0.0  0.3 115560 3464 pts/1    Ss+  13:58   0:00 -bash  

root       1525  0.0  0.3 155464 3776 pts/0    R+   14:21   0:00 ps au
2.Unix(风格)
# 字段解释  

# F: 进程标志(通常表示进程类型,如普通进程(S)、内核线程(I)等)  

# S: 进程状态(如 S=休眠, R=运行, I=空闲, Z=僵尸等)  

# UID: 用户ID(通常是进程所有者的用户ID)  

# PID: 进程ID(每个进程唯一的标识)  

# PPID: 父进程ID(创建该进程的进程ID)  

# C: CPU使用率(进程使用的CPU时间百分比,近似值)  

# PRI: 优先级(内核调度的优先级)  

# NI: nice值(调整CPU调度的优先级)  

# ADDR: 进程的内存地址(内核空间地址)  

# SZ: 进程使用的内存大小(KB)  

# WCHAN: 进程等待的通道(进程当前睡眠的内核函数名)  

# STIME: 进程启动时间  

# TTY: 进程关联的终端类型(如果适用)  

# TIME: 进程使用的CPU时间(累计)  

# CMD: 启动进程的命令或程序名  

  

# 示例输出  

[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 -       32011 ep_pol   13:55 ?        00:00:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 22  

1 S root          2      0  0  80   0 -            0 kthrea   13:55 ?        00:00:00 [kthreadd]  

1 S root          3      2  0  80   0 -            0 kthrea   13:55 ?        00:00:00 [pool_workqueue_]  

1 I root          4      2  0  60 -20 -            0 rescue   13:55 ?        00:00:00 [kworker/R-rcu_g]  

1 I root          5      2  0  60 -20 -            0 rescue   13:55 ?        00:00:00 [kworker/R-slub_]  

1 I root          6      2  0  60 -20 -            0 rescue   13:55 ?        00:00:00 [kworker/R-netns]  

1 I root          9      2  0  60 -20 -            0 worker   13:55 ?        00:00:00 [kworker/0:0H-ev]  

1 I root         10      2  0  80   0 -            0 worker   13:55 ?        00:00:00 [kworker/u512:0-]
3.GNU风格(Gnu is Not Unix )
# 字段解释  

# PID: 进程ID(每个进程唯一的标识)  

# TTY: 进程关联的终端类型(如果适用)  

# TIME: 进程使用的CPU时间(累计)  

# CMD: 启动进程的命令或程序名  

  

# 示例输出  

[root@localhost ~]# ps --user root  

   PID TTY          TIME CMD  

     1 ?        00:00:00 systemd  

     2 ?        00:00:00 kthreadd  

     3 ?        00:00:00 pool_workqueue_  

     4 ?        00:00:00 kworker/R-rcu_g  

     5 ?        00:00:00 kworker/R-slub_  

  

# 解释  

# PID 1 是 systemd 进程,它是系统的初始化系统和服务管理器,负责启动系统进程和守护进程。  

# PID 2 是 kthreadd,这是内核工作线程的父线程,负责创建和管理其他内核线程。  

# PID 3 是 pool_workqueue_,这可能是与内核工作队列相关的线程,用于处理内核工作项。  

# PID 4 和 5 是 kworker 线程,它们是内核工作线程,用于在后台执行各种内核任务,如内存回收、I/O操作等。  

# TTY 列中的 ? 表示这些进程没有关联到任何终端。  

# TIME 列显示了这些进程到目前为止所使用的CPU时间。

1.top命令

# top 命令输出解释  

  

# 顶部信息  

top - 15:05:27 up  1:09,  2 users,  load average: 0.00, 0.00, 0.00  

# 时间戳:15:05:27  

# 系统运行时间:up 1:09,表示系统运行了1小时零9分钟  

# 用户数量:2 users  

# 系统负载平均值:0.00, 0.00, 0.00,分别是过去1分钟、5分钟、15分钟的平均负载  

  

# 任务和进程状态  

Tasks: 150 total,   2 running,  84 sleeping,   1 stopped,   0 zombie  

# 总任务数:150 total  

# 运行中的进程数:2 running  

# 睡眠中的进程数:84 sleeping  

# 停止的进程数:1 stopped  

# 僵尸进程数:0 zombie  

  

# CPU 使用情况  

%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st  

# 用户空间占用CPU百分比:0.0 us  

# 内核空间占用CPU百分比:0.0 sy  

# 用户进程空间内改变过优先级的进程占用CPU百分比:0.0 ni  

# 空闲CPU百分比:100.0 id  

# 等待输入/输出的CPU时间百分比:0.0 wa  

# 硬件中断服务占用CPU百分比:0.0
# 软件中断服务占用CPU百分比:0.0 si  

# 虚拟机占用CPU百分比:0.0 st  

  

# 内存使用情况  

KiB Mem :   961944 total,   638660 free,   184380 used,   138904 buff/cache  

# 物理内存总量:961944 KiB  

# 空闲物理内存:638660 KiB  

# 已使用的物理内存:184380 KiB  

# 用作缓冲和缓存的内存:138904 KiB  

  

# 交换空间使用情况  

KiB Swap:  4194300 total,  4194300 free,        0 used.   633556 avail Mem   

# 交换空间总量:4194300 KiB  

# 空闲交换空间:4194300 KiB  

# 已使用的交换空间:0 KiB  

# 可用内存(包括缓冲和交换):633556 KiB

9.1.2控制进程

1.启动进程

[root@localhost ~]# yum -y install mysql

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

正在解决依赖关系

--> 正在检查事务

---> 软件包 mariadb.x86_64.1.5.5.68-1.el7 将被 安装

--> 解决依赖关系完成



依赖关系解决



==============================================================================================================================================================================================

 Package                                     架构                                       版本                                               源                                            大小

==============================================================================================================================================================================================

正在安装:

 mariadb                                     x86_64                                     1:5.5.68-1.el7                                     c7-media                                     8.8 M



事务概要

==============================================================================================================================================================================================

安装  1 软件包



总下载量:8.8 M

安装大小:49 M

Downloading packages:

2.查看后台的进程

^Z                    #ctrl+z

[1]+  已停止               yum -y install mysql

[root@localhost ~]# jobs -l

[1]+  2355 停止                  yum -y install mysql

3.将后台的进程恢复运行

[root@localhost ~]# bg 1    #bg 命令可以将后台中暂停执行的任务恢复运行,继续后台运行

[1]+ yum -y install mysql &

[root@localhost ~]# Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  正在安装    : 1:mariadb-5.5.68-1.el7.x86_64                                                                                                                                             1/1

  验证中      : 1:mariadb-5.5.68-1.el7.x86_64                                                                                                                                             1/1



已安装:

  mariadb.x86_64 1:5.5.68-1.el7                                                                                                                                                               



完毕!



[1]+  完成                  yum -y install mysql



 

  

[root@localhost ~]# fg 1     #可以将后台任务重新恢复到前台运行

yum -y install mysql

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  正在安装    : 1:mariadb-5.5.68-1.el7.x86_64                                                                                                                                             1/1

  验证中      : 1:mariadb-5.5.68-1.el7.x86_64                                                                                                                                             1/1



已安装:

  mariadb.x86_64 1:5.5.68-1.el7                                                                                                                                                               



完毕!

[root@localhost ~]#

3.终止进程执行

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

(1)使用kill命令终止进程
[root@localhost ~]# yum -y install httpd  #httpd服务

[root@localhost ~]# systemctl start httpd #启动htpd服务

  

[root@localhost ~]# netstat -anpt | grep httpd  #查看httpd服务UIP

tcp6       0      0 :::8080                 :::*                    LISTEN      2092/httpd          

[root@localhost ~]# kill 2092

[root@localhost ~]# netstat -anpt | grep httpd

[root@localhost ~]#

以下是 kill 命令的常用参数和对应的数字信号的表格:

参数

描述

数字信号

-l

--list

列出所有可用的信号名称

无(列出所有信号)

-s <信号名称>

指定要发送的信号名称

无(与信号名称关联)

-p

仅打印进程ID,而不发送任何信号

无(仅打印PID)

-u <用户名>

向指定用户的所有进程发送信号

无(与用户关联)

<信号编号>

直接使用信号编号作为参数

多种(取决于具体编号)

PID

要接收信号的进程的ID

无(与进程关联)

接下来是常见的数字信号及其描述:

数字信号

名称

描述

1

SIGHUP

终端挂起或控制终端改变时收到此信号。启动进程收到它时,会重新读取配置文件,并重新打开日志文件。

2

SIGINT

用户按下Ctrl+C时发送此信号。进程收到此信号后,会立即停止当前的操作并退出。

3

SIGQUIT

用户按下Ctrl+\时发送此信号。进程收到此信号后,会生成一个核心转储文件(如果允许的话),然后退出。

9

SIGKILL

强制终止进程。此信号不能被进程捕获或忽略。

15

SIGTERM

请求进程正常终止。进程收到此信号后,会进行正常的清理操作并退出。

18

SIGCONT

继续一个被暂停(SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU)的进程。

19

SIGSTOP

停止一个进程的运行。此信号不能被进程捕获或忽略。

(2)使用killall命令终止进程

使用killall命令可以通过进程名称来终止进程

[root@localhost ~]# vim aaa         #创建一个aaa文件

[root@localhost ~]# ps              #查看进程

   PID TTY          TIME CMD

  1413 pts/0    00:00:00 bash

  2952 pts/0    00:00:00 vim

  3024 pts/0    00:00:00 ps

[root@localhost ~]# killall vim     #根据工具名字取消

[root@localhost ~]# ps

   PID TTY          TIME CMD

  1413 pts/0    00:00:00 bash

  2952 pts/0    00:00:00 vim

  3026 pts/0    00:00:00 ps

[root@localhost ~]# killall -9 vim  #如取消不了进程可以-9强制取消进程

[1]+  已杀死               vim aaa

[root@localhost ~]#
(3)使用pkill命令终止进程

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

[root@localhost ~]# useradd zhangsan               #创建用户

[root@localhost ~]# su zhangsan

                    #进入用户

[zhangsan@localhost root]$ pkill -U "zhangsan"     #杀死用户进程  -U表示用户名

[zhangsan@localhost root]$ pkill -9  -U "zhangsan" #-9强制杀死用户进程

已杀死

[root@localhost ~]#

9.2计划任务管理

在 Linux 操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划的系统管理任务(如定期备份、定期采集监测数据)

9.2.1安装at工具并使用

[root@localhost ~]# yum -y install at           #安装at工具

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

正在解决依赖关系

--> 正在检查事务

---> 软件包 at.x86_64.0.3.1.13-25.el7_9 将被 安装

--> 解决依赖关系完成



依赖关系解决



==============================================================================================================================================================================================

 Package                                 架构                                        版本                                                 源                                             大小

==============================================================================================================================================================================================

正在安装:

 at                                      x86_64                                      3.1.13-25.el7_9                                      c7-media                                       51 k



事务概要

==============================================================================================================================================================================================

安装  1 软件包



总下载量:51 k

安装大小:95 k

Downloading packages:

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  正在安装    : at-3.1.13-25.el7_9.x86_64                                                                                                                                                 1/1

  验证中      : at-3.1.13-25.el7_9.x86_64                                                                                                                                                 1/1



已安装:

  at.x86_64 0:3.1.13-25.el7_9                                                                                                                                                                 



完毕!



[root@bogon ~]# at 19:49  

at> echo aaaaa>test                   #向test输出aaaaa

at> <EOT>                             #任务设置完毕后按Ctrl+D

job 5 at Tue Jun  4 19:49:00 2024



[root@bogon ~]# ls

anaconda-ks.cfg  test

[root@bogon ~]# cat test              #查看结果

aaaaa

[root@bogon ~]#

9.2.3 crontab周期性任务设置

使用 crontab 命令设置的计划任务可以按预设的周期重复执行,从而大大减轻设置重复性系统管理任务的操作。

1.crontab的配置文件和目录

1.使用cat /etc/crontab查看文件的具体内容
[root@bogon ~]# cat /etc/crontab



 

# 这是一个注释行,使用 '#' 开头。它不会被执行,只是用来说明或解释文件的内容。  

  

#SHELL=/bin/bash  

# 指定用于执行命令的 shell。通常设置为 /bin/bash,但在此示例中它被注释掉了,意味着系统会使用默认的 shell。  

  

#PATH=/sbin:/bin:/usr/sbin:/usr/bin  

# 定义环境变量 PATH,用于指定在执行命令时搜索命令的目录列表。这里列出了常见的系统命令路径。同样,它也被注释掉了。  

  

#MAILTO=root  

# 当命令执行时产生输出(例如,错误消息或标准输出),该输出将通过邮件发送给指定的用户。在这里,它被设置为 root,但也被注释掉了。  

  

# For details see man 4 crontabs  

# 这是一个注释,建议用户查看 man 4 crontabs 以获取更详细的关于 crontab 的信息。  

  

# Example of job definition:  

# 这是一个注释,给出了 cron 作业定义的示例。  

  

# .---------------- minute (0 - 59)  

# |  .------------- hour (0 - 23)  

# |  |  .---------- day of month (1 - 31)  

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...  

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat  

# |  |  |  |  |  

# *  *  *  *  * user-name  command to be executed  

# 这是 cron 时间字段的解释。每个 * 代表一个可以指定值的位置。  

  

# 以下是这些字段的详细解释:  

# 1. 分钟 (0 - 59)  

# 2. 小时 (0 - 23)  

# 3. 日期 (1 - 31)  

# 4. 月份 (1 - 12) 或英文缩写(jan, feb, ...)  

# 5. 星期几 (0 - 6)(其中 0 和 7 都表示星期日)或英文缩写(sun, mon, ...)  

  

# 在这些字段之后,指定了要执行命令的用户名,然后是要执行的命令本身。

#根据/etc/crontab 配置文件中的设定,crond 将按照不同的周期重复执行相应目录中的任务脚本文件。
2.使用crontab命令管理用户的计划任务

设置用户的周期性计划任务列表主要通过 crontab命令进行,结合不同的选项可以完成不同的计划任务管理操作。常用的选项如下。

选项

描述

-e

编辑当前用户的计划任务列表。如果使用了

-u

选项,则编辑指定用户的计划任务列表。

-u username

指定所管理的计划任务属于哪个用户。只有 root 用户或具有相应权限的用户可以使用此选项。

-l

列表显示当前用户的计划任务。如果使用了

-u

选项,则显示指定用户的计划任务。

-r

删除当前用户的计划任务列表。如果使用了

-u

选项,则删除指定用户的计划任务列表。

[root@bogon ~]# crontab -e                    #进入编辑

30 22 * * * 1,3,5 /usr/sbin/shutdown -h now   #写入脚本

[root@bogon ~]# crontab -l                    #查看

30 22 * * * 1,3,5 /usr/sbin/shutdown -h now   

[root@bogon ~]#

#“30 22 * * * 1,3,5 /usr/sbin/shutdown -h now “这字段含义值

这个计划任务的意思是:在每周一、三、五的晚上10点30分(22:30),执行/usr/sbin/shutdown -h now     命令来立即关闭系统。

字段

含义

分钟

分钟数(0-59)

30

小时

小时数(0-23)

22

日期

一个月中的日期(1-31)

* (表示每一天)

月份

月份(1-12)

* (表示每个月)

星期

星期几(0-6,其中0和7都表示星期日)

1,3,5 (表示星期一、三、五)

命令

要执行的命令

/usr/sbin/shutdown -h now

标签:00,09,用户,任务,进程,root,CPU,localhost
From: https://blog.csdn.net/qq_51678989/article/details/139452996

相关文章

  • Linux学习笔记6 进程角度看内存泄露
    一,从进程角度看堆区内存申请与释放问题1,c语言中的内存泄漏内存溢出:申请内存时,没用足够的内存可以使用。 内存泄露:严格来说,只有对象不会再被程序用到了,但是GC又不能回收它们的情况,才叫内存泄漏                宽泛的讲,实际情况中很多时候一些不太好的实践......
  • 进程和任务管理器
    一、查看和控制进程1.1ps命令(1)ps命令——查看静态的进程统计信息(ProcessesStatistic)PIDTTYTIMECMD1579pts/100:00:00bash1730pts/100:00:00psPID:进程IDTTY  (进程id)TTY:表明该进程在哪个终端上运行。“?”表示未知或不需要终端。TIME:该进程占用的CPU时间C......
  • 进程任务管理
    一.  查看和控制进程    程序是保存在外部存储介质(如硬盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中处于动态执行的计算机程序。在Linux操作系统中,每个程序启动后可以创建一个或多个进程。列如,提供Web服务的httpd程序,当有大量用户同时访问Web页面时......
  • 线程池 + 回调 (进程赤用法类似)
    importosimportthreadingimporttimefromconcurrent.futuresimportThreadPoolExecutorfromfunctoolsimportwrapsThreadPool=ThreadPoolExecutor(max_workers=10)defthread_executor(a):print("Iamslave.Iamworking.Iamgoingtosleep3......
  • linux进程和计划任务管理
    一、查看和控制进程程序是保存在外部存储介质(如硬盘)中的可执行机器代码和数据的静态集合,而进程是在 CPU 及内存中处于动态执行状态的计算机程序。在 Linux 操作系统中,每个程序启动后可以创建一个或多个进程。例如,提供 Web 服务的 httpd 程序,当有大量用户同时访问Web......
  • Linux进程和计划任务管理
    查看和控制进程程序是保存在外部存储介质(如硬盘)中的可执行机器代码和数据的静态集合,而进程 是在CPU 及内存中处于动态执行状态的计算机程序。查看进程了解系统中进程的状态是对进程进行管理的前提,使用不同的命令工具可以从不同的 角度查看进程状态。1.ps命令——查看......
  • Python教程-快速入门基础必看课程09-文件处理
    该视频主要讲述了Python中文件的读写操作和pandas库中的subt函数来处理CSV文件。在Python中,文件的读写操作需要使用open函数打开文件,并指定路径和模式。读取文件时,可以使用f.read()方法读取内容,并使用f.close()方法关闭文件。写入文件时,可以使用f.write()方法写入内容,并使用......
  • python09 字符串切片
    字符串切片'''字符串切片(字符串截取)语法:[start:stop:step]1.start=>开始索引默认:02.stop=>结束索引,不包括stop默认:到最后3.step=>步长默认:1三个都有默认值,但注意不能一个都不写。text="hello,python"索引:0:h1:e2:l3:l4:o5:,6:p7:......
  • 任务大师什么配置能玩?Quest Master官方推荐配置一览
    QuestMaster/任务大师不仅将为玩家提供丰富的地牢挑战,还带来了地牢创造的丰富玩法,让勇士们的冒险欲望不断膨胀,勇闯混沌洞穴,击穿他人的设计或建造独一无二的幽深地牢。有感兴趣的玩家想知道QuestMaster/任务大师什么配置能玩,下面本文将为大家带来QuestMaster/任务大师的官方......
  • 2009年408真题解析
    2009年408真题解析【2009.1】为解决计算机主机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是。A.栈B.队列C.树D.图【知识点】栈和队列特点及应用。【答案】B......