当前位置: 首页 > news >正文

linux 进程和计划管理

查看进程

在Linux系统中,有多个命令可以用来查看进程

以下是一些常用的命令:
ps命令:用于查看当前系统中的进程状态。

 基本用法:ps -ef,该命令会以完整格式显示所有进程的详细信息,包括用户ID、进程ID、父进程ID、启动时间、命令等。例如:
```
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Mar10 ?        00:00:02 /sbin/init
root         2     0  0 Mar10 ?        00:00:00 [kthreadd]
root         3     2  0 Mar10 ?        00:00:00 [rcu_gp]
```

常用选项:

`ps`命令是Linux系统中用于查看进程状态的常用工具,它有许多选项,以下是一些常见选项的详细解释:
-a功能:显示所有终端上的进程,包括与终端无关的进程。

-u功能:以用户为中心的格式显示进程信息,提供更详细的用户相关信息,如用户名、启动时间、CPU和内存使用百分比等。
  
-x功能:显示没有控制终端的进程,常与`-a`或`-u`等选项结合使用,以查看更全面的进程列表。
   
-e功能:显示所有进程,等同于`-a -x`的组合效果,会列出系统中的所有进程,包括内核线程等。
  
-f功能:以完整格式显示进程信息,提供更详细的进程相关字段,如父进程ID(PPID)、进程启动命令等。
    
-l功能:以长格式显示进程信息,提供更多关于进程的详细状态信息,如进程的优先级(PRI)、nice值等。

-f:显示完整格式的进程信息。
-u:以用户为主的格式显示进程信息,会显示进程的所有者、启动时间、CPU和内存使用情况。
-x:显示所有进程,包括没有控制终端的进程。


top命令:实时动态地查看系统中各个进程的资源占用情况,是一个非常实用的性能分析工具。
基本用法:直接输入`top`命令即可进入交互界面,界面中会实时更新进程的相关信息,包括CPU使用率、内存使用率、进程状态等。

 常用操作键
        - M:按照内存使用量对进程进行排序。
        - P:按照CPU使用率对进程进行排序。
        - T:按照累计执行时间对进程进行排序。
        - q:退出`top`命令。


htop命令:htop是top命令的增强版,提供了更友好的界面和更丰富的功能。

 基本用法:直接输入`htop`命令即可启动。它的界面类似于`top`,但可以更方便地查看和操作进程。例如,它支持鼠标操作,并且可以直接在界面中对进程进行杀除等操作。

 - 常用功能:
        - 可以通过方向键在进程列表中移动光标,选择不同的进程。
        - 按下`F9`键可以向选中的进程发送信号,例如SIGKILL(强制终止进程)等。
        - 按下`F2`键可以进入设置界面,对htop的显示格式、排序方式等进行自定义设置。

pgrep命令通过pgrep能对指定进程信息,

如下为示例:

[root@localhost ~]# pgrep    -l     "log"
357 xfs-log/sda3
609 xfs-log/sda1
712 systemd-logind
720 abrt-watch-log
721 abrt-watch-log
1091 rsyslogd
[3]-  Killed                  vim aaa
[4]+  Killed                  vim xxx

pstree

[root@localhost ~]# pstree

下面为结果示例
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─VGAuthService
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─avahi-daemon───avahi-daemon
        ├─boltd───2*[{boltd}]
        ├─chronyd
        ├─colord───2*[{colord}]
        ├─crond
        ├─cupsd
        ├─2*[dbus-daemon───{dbus-daemon}]
        ├─dbus-launch
        ├─dconf-service───2*[{dconf-service}]
        ├─dnsmasq───dnsmasq
        ├─evolution-addre─┬─evolution-addre───5*[{evolution-addre}]
        │                 └─4*[{evolution-addre}]
        ├─evolution-calen─┬─evolution-calen───8*[{evolution-calen}]
        │                 └─4*[{evolution-calen}]
        ├─evolution-sourc───3*[{evolution-sourc}]
        ├─fwupd───4*[{fwupd}]
        ├─gconfd-2
        ├─gdm─┬─X───9*[{X}]
        │     ├─gdm-session-wor─┬─gnome-session-b─┬─abrt-applet───2*[{abrt-applet}]
        │     │                 │                 ├─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
        │     │                 │                 │             │             ├─ibus-engine-sim───2*[{ibus-engine-sim}]
        │     │                 │                 │             │             └─2*[{ibus-daemon}]
        │     │                 │                 │             └─32*[{gnome-shell}]
        │     │                 │                 ├─gnome-software───3*[{gnome-software}]
        │     │                 │                 ├─gsd-a11y-settin───3*[{gsd-a11y-settin}]
        │     │                 │                 ├─gsd-account───3*[{gsd-account}]
        │     │                 │                 ├─gsd-clipboard───2*[{gsd-clipboard}]
        │     │                 │                 ├─gsd-color───3*[{gsd-color}]
        │     │                 │                 ├─gsd-datetime───3*[{gsd-datetime}]
        │     │                 │                 ├─gsd-disk-utilit───2*[{gsd-disk-utilit}]
        │     │                 │                 ├─gsd-housekeepin───3*[{gsd-housekeepin}]
        │     │                 │                 ├─gsd-keyboard───3*[{gsd-keyboard}]
        │     │                 │                 ├─gsd-media-keys───3*[{gsd-media-keys}]
        │     │                 │                 ├─gsd-mouse───3*[{gsd-mouse}]
        │     │                 │                 ├─gsd-power───3*[{gsd-power}]
        │     │                 │                 ├─gsd-print-notif───2*[{gsd-print-notif}]
        │     │                 │                 ├─gsd-rfkill───2*[{gsd-rfkill}]
        │     │                 │                 ├─gsd-screensaver───2*[{gsd-screensaver}]
        │     │                 │                 ├─gsd-sharing───3*[{gsd-sharing}]
        │     │                 │                 ├─gsd-smartcard───4*[{gsd-smartcard}]
        │     │                 │                 ├─gsd-sound───3*[{gsd-sound}]
        │     │                 │                 ├─gsd-wacom───2*[{gsd-wacom}]
        │     │                 │                 ├─gsd-xsettings───3*[{gsd-xsettings}]
        │     │                 │                 ├─nautilus-deskto───3*[{nautilus-deskto}]
        │     │                 │                 ├─seapplet
        │     │                 │                 ├─ssh-agent
        │     │                 │                 ├─tracker-extract───13*[{tracker-extract}]
        │     │                 │                 ├─tracker-miner-a───3*[{tracker-miner-a}]
        │     │                 │                 ├─tracker-miner-f───3*[{tracker-miner-f}]
        │     │                 │                 ├─tracker-miner-u───3*[{tracker-miner-u}]
        │     │                 │                 └─3*[{gnome-session-b}]
        │     │                 └─2*[{gdm-session-wor}]
        │     └─3*[{gdm}]
        ├─gnome-keyring-d───3*[{gnome-keyring-d}]
        ├─gnome-shell-cal───5*[{gnome-shell-cal}]
        ├─goa-daemon───3*[{goa-daemon}]
        ├─goa-identity-se───3*[{goa-identity-se}]
        ├─gsd-printer───2*[{gsd-printer}]
        ├─gssproxy───5*[{gssproxy}]
        ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
        ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
        ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
        ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
        ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
        ├─gvfsd─┬─gvfsd-burn───2*[{gvfsd-burn}]
        │       ├─gvfsd-trash───2*[{gvfsd-trash}]
        │       └─2*[{gvfsd}]
        ├─gvfsd-fuse───5*[{gvfsd-fuse}]
        ├─gvfsd-metadata───2*[{gvfsd-metadata}]
        ├─ibus-portal───2*[{ibus-portal}]
        ├─ibus-x11───2*[{ibus-x11}]
        ├─imsettings-daem───3*[{imsettings-daem}]
        ├─irqbalance
        ├─ksmtuned───sleep
        ├─libvirtd───16*[{libvirtd}]
        ├─lsmd
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─mission-control───3*[{mission-control}]
        ├─packagekitd───2*[{packagekitd}]
        ├─polkitd───6*[{polkitd}]
        ├─pulseaudio───2*[{pulseaudio}]
        ├─rngd
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─smartd
        ├─sshd───bash───su───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tracker-store───7*[{tracker-store}]
        ├─tuned───4*[{tuned}]
        ├─udisksd───4*[{udisksd}]
        ├─upowerd───2*[{upowerd}]
        ├─vmtoolsd───2*[{vmtoolsd}]
        ├─vmtoolsd───3*[{vmtoolsd}]
        ├─wpa_supplicant
        └─xdg-permission-───2*[{xdg-permission-}]

进程管理

将拷贝文件放后台

[root@localhost ~]# cp  /root/xxx  /root/a/b/c/abcd/abc &
[1] 6258

查询目标进程

[root@localhost ~]# pgrep    -l      "sshd"

[root@localhost ~]# killall    -9       vim  

后台开启文件编辑器,命令后接&,下方为输出结果

[root@localhost ~]# vim    aaa  &
[1] 6522
[root@localhost ~]# vim    xxx  &
[2] 6523

[1]+  Stopped                 vim aaa

杀死目标进程

kill     -9/-15     进程ID
[root@localhost ~]# kill     -9     6523

[2]+  Stopped                 vim xxx

确认终止的进程信息:

jobs   -l

确认目标用户的进程相关信息阻止用户进程,-U指定用户,-t指定终端

[root@localhost ~]# pgrep   -l  -U   "kackli"

[root@localhost ~]#pkill   -9     -U   "hackli"     强制终止用户hackli的进程

[root@localhost ~]# pgrep   -l  -U   "kackli"  确认目标已被进程已被终止

计划任务管理

一次性任务设置

at命令

在CentOS 7中,可以使用at命令来

使用at命令设置一次性任务
基本语法:at [选项] [时间]
常用选项:
    - f:指定包含任务命令的脚本文件。
    -l:列出待执行的任务队列。
    -d:删除指定的任务。
时间指定方式:
    可以使用绝对时间,如HH:MM(例如10:30表示上午10点30分),如果不指定日期,默认是当天。如果要指定日期,可以使用`YYYY-MM-DD HH:MM`的格式。
    也可以使用相对时间,如now + 10 minutes表示10分钟后,now + 1 hour表示1小时后等。

 4. 示例
在指定时间执行命令:假设要在今天的14:30执行一个命令,将当前目录下的所有文件列表输出到file_list.txt文件中,可以这样做:
at 14:30
warning: commands will be executed using /bin/sh
at> ls -l > file_list.txt
at> <EOT>
```
在输入at 14:30并回车后,会进入at命令的输入模式,

提示warning: commands will be executed (警告命令将被执行)

using /bin/sh,此时输入要执行的命令ls -l > file_list.txt,

然后按Ctrl + D组合键(即输入<EOT>)表示命令输入结束。
使用相对时间执行任务:比如要在30分钟后执行一个脚本test.sh,可以这样写:
at now + 30 minutes
at> /bin/bash /path/to/test.sh
at> <EOT>
```
查看任务队列:可以使用`at -l`命令查看当前待执行的任务队列,例如:

at -l
1       2025-03-12 14:30 a root
2       2025-03-12 15:00 a root
```
这里显示了两个任务,任务1将在2025年3月12日14:30执行,任务2将在2025年3月12日15:00执行,a表示任务的所有者是root。
删除任务:如果要删除任务队列中的某个任务,可以使用at -d [任务编号],

例如要删除上面的任务1,可以这样做:

at -d 1
```

at工作原理
at命令会将用户提交的任务及其执行时间等信息记录在/var/spool/at目录下的文件中。atd服务会定期检查这个目录,当到达任务指定的执行时间时,atd服务会读取任务文件,并按照其中的指令执行相应的任务。任务执行时,会在后台运行,不会影响当前终端的操作。

周期性任务设置

crontab命令


作用:用于设置和管理用户的计划任务。

简单来说,就是可以让系统在指定的时间自动执行你设定的命令或脚本。

格式:crontab    -u|-e|-l|-r
参数说明:
-u user:指定要操作的用户,如果不写,默认是当前用户。
-e:编辑用户的crontab文件,也就是用来设置计划任务的具体内容。
-l:列出用户的crontab文件中的计划任务。
-r:删除用户的crontab文件,也就删除了该用户所有的计划任务。
计划任务的时间设置格式:分 时 日 月 周 命令。

示例:0 2 * * * /usr/bin/backup.sh

表示每天凌晨 2 点执行/usr/bin/backup.sh这个脚本

编辑当前用户的计划任务:crontab -e

示例:

30 8 * * 1-5 /usr/bin/sendmail user@example.com < /home/user/mail.txt

表示每周一到周五的早上 8 点 30 分,发送/home/user/mail.txt内容到user@example.com
列出当前用户的计划任务:crontab -l,会显示当前用户设置的所有计划任务
删除当前用户的计划任务:crontab -r,执行后当前用户的所有计划任务都被删除

下面分别介绍五个字段的含义:

crontab 计划任务的配置格式
字段位置名称字段取值范围特殊字符
第 1 个分钟(Minute)0 - 59*、/、 -、 ,
第 2 个小时(Hour)0 - 23*、/、-、,
第 3 个日期(Day of month1 - 31*、/、 -、 ,、 ?、 L、 W
第 4 个月份(Month)1 - 12 或 jan, feb, mar, ..., dec*、 /、 -、 ,
第 5 个星期(Day of week)0 - 7(0 和 7 都代表星期日)或 sun, mon, tue, ..., sat*、 /、 -、 、,、 ?、 L、 #

特殊字符含义
*(星号):表示该字段的所有可能取值。例如,在分钟字段使用 * 表示每分钟。
/(斜杠):用于指定时间间隔。例如,*/5 表示每隔 5 个单位执行一次,如在分钟字段使用 */5 表示每 5 分钟执行一次。
-(连字符):用于指定一个范围。例如,1-5 表示从 1 到 5 的取值范围,如在小时字段使用 1-5 表示从凌晨 1 点到凌晨 5 点。
,(逗号):用于指定多个取值。例如,1,3,5 表示取值为 1、3 和 5,如在星期字段使用 1,3,5 表示星期一、星期三和星期五。
?(问号):仅用于日期和星期字段,当一个字段已经有明确的值时,另一个字段可以使用 ? 来表示不指定。例如,若要在每月 10 号执行任务,星期字段就可以用 ?。
L(最后):仅用于日期和星期字段,表示该字段的最后一个值。例如,在日期字段使用 L 表示该月的最后一天;在星期字段使用 L 表示该月的最后一个星期几。
W(工作日):仅用于日期字段,表示离指定日期最近的工作日。例如,15W 表示离该月 15 号最近的工作日。
#(序号):仅用于星期字段,表示该月的第几个星期几。例如,6#3 表示该月的第三个星期五(6 代表星期五)。

示例:
每分钟执行一次任务:
* * * * * /usr/bin/backup.sh


每天凌晨 2 点执行任务:
0 2 * * * /usr/bin/cleanup.sh


每周六和周日的 10 点 30 分执行任务:
30 10 * * 0,6 /usr/bin/archive.sh


每月 1 号和 15 号的 14 点执行任务:
0 14 1,15 * * /usr/bin/update.sh


每 3 小时执行一次任务:
0 */3 * * * /usr/bin/check_status.sh

  

相关文章:

  • MongoDB 聚合管道速成教程
  • 5G/6G通信技术
  • C++ 中的操作符重载(Operator Overloading)
  • Mybatis XML基本使用
  • Aliyun CTF 2025 web 复现
  • OSPF的LSA详解(报文分析+具体例子)
  • 安装 ubuntu 2404 LTS 服务器 设置 服务器名称
  • 【路径查询组件优化记录:数据处理与显示逻辑重构】
  • Node-RED基础1
  • Django项目无法调取swagger.json接口数据
  • 内网不出网突破技巧-简述
  • 19873连通块中点的数量
  • std::ranges::views::common, std::ranges::common_view
  • 小程序渲染之谜:如何解决“加载中...”不消失的 Bug(glass-easel)
  • 跳表实现学习
  • Linux远程工具SecureCRT下载安装和使用
  • Python文件,模块
  • ​【C++设计模式】第二十三篇:观察者模式(Observer)
  • HOT100系列——(普通数组+矩阵)
  • DB-GPT-0.7版本win11安装,最新版本,安装方式变更了
  • 官方数据显示:我国心血管疾病患者已超3亿人
  • 打造信息消费新场景、新体验,上海信息消费节开幕
  • 征稿启事|澎湃·镜相第三届非虚构写作大赛暨2026第六届七猫现实题材征文大赛
  • 澳大利亚首例“漂绿”诉讼开庭:能源巨头因“碳中和”承诺遭起诉
  • 沪喀同心|为新疆青少年提供科普大餐,“小小博物家(喀什版)”启动
  • 在稳市场稳预期下,投资者教育给了散户更多底气