Linux进程和计划管理命令

查看进程
查看静态的进程统计信息
命令:ps
选项
a:显示当前终端下的所有进程信息
u:使用以用户为主的格式输出进程信息
x:显示当前用户在所有
-e:显示系统内的所有进程信息
-l:使用长格式显示进程信息
-f:使用完整的格式显示进程信息


示例:
若想以用户为主的格式查看当前终端下的所有进程信息,可以使用命令 ps au,会看到类似如下的输出(部分示例数据):
plaintext
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  16960  3440?        Ss   09:00   0:00 /sbin/init
root         2  0.0  0.0      0     0?        S    09:00   0:00 [kthreadd]
使用 ps -ef 命令能以完整格式显示系统内的所有进程信息,输出示例如下(部分示例数据):
plaintext
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:00?        00:00:00 /sbin/init
root         2     0  0 09:00?        00:00:00 [kthreadd]


查看进程动态信息
命令:top


示例:在终端输入 top 命令后,会实时显示系统中各个进程的资源占用情况,包括 CPU 使用率、内存使用量等信息。如下是一个简单的 top 命令输出示例(部分示例数据):
plaintext
top - 09:10:00 up 1 day,  2:10,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 128 total,   1 running, 127 sleeping,   0 stopped,   0 zombie
%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
KiB Mem :  8192760 total,  1023400 free,  5124360 used,  2044996 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2503400 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0   16960   3440   2500 S   0.0  0.0   0:00.00 init
    2 root      20   0       0      0     0 S   0.0  0.0   0:00.00 kthreadd


查询进程信息
命令:pgrep
选项
-l:同时输出对应的进程名(否则只输出 PID)
格式:pgrep -l "进程名"


示例:假设我们想查询名为 bash 的进程信息,可以使用命令 pgrep -l "bash",如果系统中有运行 bash 进程,可能会得到类似这样的输出:
plaintext
1234 bash
5678 bash
表示 PID 为 1234 和 5678 的进程名为 bash。


查看进程数
命令:pstree
选项
-aup:显示各进程对应的 PID、用户名、完整命令等信息
pstree [选项] [用户名](可用用户名作为参数)


示例:使用 pstree -aup 命令,会显示系统中进程的树形结构以及各进程的 PID、用户名和完整命令等信息,部分输出示例如下:
plaintext
systemd,1 root /sbin/init
├─agetty,1234 root --noclear tty1
├─bash,5678 user1
│  └─ps,7890 user1 -ef
├─sshd,9012 root /usr/sbin/sshd -D
│  └─sshd,11111 root sshd: user2 [priv]
│      └─bash,12222 user2
│          └─top,13333 user2
└─systemd-journal,2345 root /lib/systemd/systemd-journald


控制进程
挂起当前的进程
Ctrl+Z 组合键(调入后台并停止执行)


查看后台的进程
命令:jobs -l


示例:当你在前台运行一个命令(如 sleep 60),按下 Ctrl+Z 挂起该进程后,输入 jobs -l 命令,会显示后台进程的任务编号、PID 等信息,可能的输出如下:
plaintext
[1]+  Stopped                 sleep 60 [1] 12345


表示任务编号为 1 的进程(PID 为 12345)已被挂起。
将后台的进程恢复运行


命令:fg [进程任务编号]


示例:对于上述挂起的进程(任务编号为 1),使用命令 fg 1 可以将其恢复到前台继续运行。


使用 “kill” 命令终止进程
格式:kill [进程的 PID]
选项
-9:强制终止
示例:若要终止 PID 为 12345 的进程,可以使用命令 kill 12345。如果该进程比较顽固,无法正常

终止,可以使用 kill -9 12345 进行强制终止。


使用 “killall” 命令终止进程
格式:killall [进程名]
说明:可以将所有名为这个进程名的进程都终止
选项
-9:强制终止


示例:若要终止系统中所有名为 firefox 的进程,可以使用命令 killall firefox。若需要强制终止,则使用 killall -9 firefox。


使用 “pkill” 命令终止进程
格式:pkill -U [用户名]
说明:终止这个用户的所有进程
选项
-9:强制终止


示例:假设要终止用户名为 testuser 的所有进程,可以使用命令 pkill -U testuser。如果需要强制终止这些进程,则使用 pkill -9 -U testuser。


计划任务管理
at 一次性任务设置
格式:at [时间] [年月日]
输入后进入交互模式,设置命令或脚本任务后,Ctrl+D 提交

atq:   可以查看已执行at的任务

atrm  (指定编号)       //删除at计划


示例:若想在明天(假设今天是 2025 年 3 月 12 日)上午 10 点执行一个脚本 /home/user/scripts/test.sh,可以输入命令 at 10:00 2025-03-13,进入交互模式后输入 /home/user/scripts/test.sh,然后按下 Ctrl+D 提交任务。


crontab 周期性任务设置
命令:crontab -e 或 vim /var/spool/cron/(用户名)
编辑文件时的格式:分 时 日 月 周 [命令或脚本的绝对路径]

其中,时间设置部分的符号解释如下:
分(0 - 59):表示分钟数,取值范围是 0 到 59。例如 0 表示整点,15 表示 15 分。
时(0 - 23):表示小时数,采用 24 小时制,取值范围是 0 到 23。例如 0 表示凌晨 0 点,12 表示中午 12 点。
日(1 - 31):表示一个月中的日期,取值范围是 1 到 31。但要注意不同月份的天数不同,如 2 月可能是 28 天或 29 天。
月(1 - 12):表示月份数,取值范围是 1 到 12。例如 1 表示 1 月,12 表示 12 月。
周(0 - 6):表示一周中的星期几,0 表示星期日,1 表示星期一,以此类推,6 表示星期六。
特殊符号说明:
*:代表 “任意值”。例如在 “分” 这一列使用 *,表示每分钟都会执行任务;在 “月” 这一列使用 *,表示每个月都会执行任务。
-:表示一个区间范围。例如 10-20 在 “时” 这一列,表示在 10 点到 20 点之间的每个小时都会执行任务。
,:表示多个不连续的值。例如 1,3,5 在 “日” 这一列,表示在每个月的 1 日、3 日和 5 日会执行任务。
/:表示间隔时间。例如 */5 在 “分” 这一列,表示每隔 5 分钟执行一次任务。


示例:如果希望每天凌晨 2 点 30 分执行一个备份脚本 /home/user/scripts/backup.sh,可以使用 crontab -e 命令编辑当前用户的计划任务列表,添加一行内容 30 2 * * * /home/user/scripts/backup.sh,保存退出后,系统就会按照设定的时间自动执行该脚本。
查看用户的计划任务列表


格式:crontab -l -u [用户名]
示例:若要查看用户 testuser 的计划任务列表,可以使用命令 crontab -l -u testuser,如果该用户设置了计划任务,会显示相应的任务内容。
删除此用户的所有计划任务列表
格式:crontab -r


示例:当要删除当前用户的所有计划任务时,直接输入 crontab -r 命令即可。如果要删除指定用户(如 testuser)的所有计划任务,需要先切换到该用户(su - testuser),然后再执行 crontab -r 命令。

你可能感兴趣的:(linux)