Linux系统的进程管理

简介: Linux系统的进程管理

一、系统进程介绍

1.进程概念

进程process是指正在执行的程序;是程序正在运行的一个实例。它由程序指令,和从文件、其它程序中读取的数据或系统用户的输入组成。

2.进程特点

①进程是加载到内存中的一段指令
②进程ID(PID)是唯一标识进程
③子进程集成父进程的属性信息

3.进程类型

①前台进程(也称为交互式进程):这些进程由终端会话初始化和控制。换句话说,需要有一个连接到系统中的用户来启动这样的进程;它们不是作为系统功能/服务的一部分自动启动。
②后台进程(也称为非交互式/自动进程: 这些进程没有连接到终端;它们不需要任何用户输入。
③守护进程:这是后台进程的特殊类型,它们在系统启动时启动,并作为服务一直运行;它们不会死亡。它们自发地作为系统任务启动(作为服务运行)。但是,它们能被用户通过 init 进程控制。

二、查看系统进程

1.PS命令

#PS 查看进程信息
-a 查看所有终端的进程
-u 打印进程的所有者信息
-x 查看不属于任何终端的进程
-e 查看系统的所有进程
-f 查看额外的信息
-o 指定格式输出
--sort 指定排序的参数,例如: --sort=-%mem 按照内存大小降序
常用组合为: ps aux 或者 ps -ef

2.查看系统进程

[root@node1 ~]# ps aux |head
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.5 176372 10932 ?        Ss   15:22   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root          2  0.0  0.0      0     0 ?        S    15:22   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        I<   15:22   0:00 [rcu_gp]
root          4  0.0  0.0      0     0 ?        I<   15:22   0:00 [rcu_par_gp]
root          6  0.0  0.0      0     0 ?        I<   15:22   0:00 [kworker/0:0H-kblockd]
root          8  0.0  0.0      0     0 ?        I<   15:22   0:00 [mm_percpu_wq]
root          9  0.0  0.0      0     0 ?        S    15:22   0:00 [ksoftirqd/0]
root         10  0.0  0.0      0     0 ?        R    15:22   0:00 [rcu_sched]
root         11  0.0  0.0      0     0 ?        S    15:22   0:00 [migration/0]
[root@node1 ~]# ps -ef |head
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 15:22 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root          2      0  0 15:22 ?        00:00:00 [kthreadd]
root          3      2  0 15:22 ?        00:00:00 [rcu_gp]
root          4      2  0 15:22 ?        00:00:00 [rcu_par_gp]
root          6      2  0 15:22 ?        00:00:00 [kworker/0:0H-kblockd]
root          8      2  0 15:22 ?        00:00:00 [mm_percpu_wq]
root          9      2  0 15:22 ?        00:00:00 [ksoftirqd/0]
root         10      2  0 15:22 ?        00:00:00 [rcu_sched]
root         11      2  0 15:22 ?        00:00:00 [migration/0]

3.ps aux结果说明

USER 用户
PID 进程ID
%CPU CPU占用
%MEM 内存占用
VSZ 项内存申请地址空间
RSS 实际使用内存
TTY 使用终端
STAT 进程状态
START 进程开始时间
TIME 进程持续时间
进程命令 COMMAND
S 休眠
D 不可中断
R 正在运行
Z 僵尸进程
T 停止
s 子进程
< 高优先级
n 低优先级
+ 后台进程
I 锁定进程

4.top命令

①top命令使用方法

[root@node1 ~]# top
top - 18:47:52 up  3:25,  2 users,  load average: 0.61, 0.66, 0.71
Tasks: 237 total,   2 running, 235 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1966.1 total,    854.9 free,    537.0 used,    574.2 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1275.0 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                       
   835 root      20   0 1277568  52788  23924 S   0.7   2.6   0:18.12 containerd                                                                                    
   821 zabbix    20   0  710536  30140  15880 S   0.3   1.5   0:55.17 zabbix_agent2                                                                                 
  4887 root      20   0       0      0      0 I   0.3   0.0   0:00.01 kworker/0:1-events                                                                            
     1 root      20   0  176372  10932   8104 S   0.0   0.5   0:01.11 systemd                                                                                       
     2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd                                                                                      
     3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                                                                        
     4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp

② top命令选项

按键盘数字1,可监控每个逻辑CPU状况
C 切换显示命令名称和完整命令行
M 可按内存占用情况进程排序
P 根据CPU使用百分比大小进程排序
T 根据时间/累计时间进程排序
f 可以选择显示的内容

5.pgerp命令

# pgrep
-U 查找摸个用户的进程ID
-G 查找某个组的进程ID
-P 根据父进程ID,查找所有子进程ID
-l 不仅打印pid,也打印进程名
-o 表示该程序有多个程序正在运行,则只查招老的,即最先启动,(多个进程时即父进程PID)
-n 表示该程序有多个程序正在运行,则查找最新的
-d 定义多个进程之间的分隔符,如果不定义则使用换行符

[root@node1 ~]# pgrep -l sshd
819 sshd
2882 sshd
2884 sshd
2887 sshd
2905 sshd
3669 sshd
3671 sshd
3673 sshd
3689 sshd

6.pidof

[root@node1 ~]# ps -p $(pidof sshd)
   PID TTY      STAT   TIME COMMAND
   819 ?        Ss     0:00 /usr/sbin/sshd -D -oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,
  2882 ?        Ss     0:00 sshd: root [priv]
  2884 ?        S      0:00 sshd: root@pts/1
  2887 ?        Ss     0:00 sshd: root [priv]
  2905 ?        S      0:00 sshd: root@notty
  3669 ?        Ss     0:00 sshd: root [priv]
  3671 ?        S      0:00 sshd: root@pts/2
  3673 ?        Ss     0:00 sshd: root [priv]
  3689 ?        S      0:00 sshd: root@notty
[root@node1 ~]# 

三、signal信号的管理

1.signal信号的介绍

对进程的操作可以通过发送不同的信号来实现。

2.给进程发送信号

kill 信号 pid
killall 信号 comm
pikill [-signal] pattern

3.man 7 signal

Signal     Value     Action   Comment
       ──────────────────────────────────────────────────────────────────────
       SIGHUP        1       Term    Hangup detected on controlling terminal
                                     or death of controlling process
       SIGINT        2       Term    Interrupt from keyboard
       SIGQUIT       3       Core    Quit from keyboard
       SIGILL        4       Core    Illegal Instruction
       SIGABRT       6       Core    Abort signal from abort(3)
       SIGFPE        8       Core    Floating-point exception
       SIGKILL       9       Term    Kill signal
       SIGSEGV      11       Core    Invalid memory reference
       SIGPIPE      13       Term    Broken pipe: write to pipe with no
                                     readers; see pipe(7)
       SIGALRM      14       Term    Timer signal from alarm(2)
       SIGTERM      15       Term    Termination signal
       SIGUSR1   30,10,16    Term    User-defined signal 1
       SIGUSR2   31,12,17    Term    User-defined signal 2
       SIGCHLD   20,17,18    Ign     Child stopped or terminated
       SIGCONT   19,18,25    Cont    Continue if stopped
       SIGSTOP   17,19,23    Stop    Stop process
       SIGTSTP   18,20,24    Stop    Stop typed at terminal
       SIGTTIN   21,21,26    Stop    Terminal input for background process
       SIGTTOU   22,22,27    Stop    Terminal output for background process

4.常用信号

signal 15 终止
signal 9 立即终止
signal 1 重读配置文件
[root@tianyi ~]# kill -l
 1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
 6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX    

四、进程的优先级

1.进程优先级介绍

调度优先级决定对CPU的访问,进程的nice值影响优先级。
nice值为-20到19 ,缺省为0,低nice值意味着高CPU优先级

2.查看进程优先级

[root@node1 ~]# ps -eo pid,comm,nice --sort=-nice |head
   PID COMMAND          NI
    23 khugepaged       19
   766 alsactl          19
    22 ksmd              5
     1 systemd           0
     2 kthreadd          0
     9 ksoftirqd/0       0
    10 rcu_sched         0
    11 migration/0       -
    12 watchdog/0        -

3.优先级修改

①当启动进程时

[root@node1 ~]# nice -n 5 vim file.txt

②当启动进程后

[root@node1 ~]# pidof vim
5330
[root@node1 ~]# ps -eo pid,comm,nice |grep vim
  5330 vim               0
[root@node1 ~]# renice 5 5330
5330 (process ID) old priority 0, new priority 5
[root@node1 ~]# ps -eo pid,comm,nice |grep vim
  5330 vim               5

五、作业控制

1.后台运行一个程序

[root@node1 ~]# firefox &
[1] 5397
[root@node1 ~]# Running without a11y support!

2.显示后台程序

[root@node1 ~]# jobs
[1]+  Running                 firefox &

3.停止运行程序

[root@node1 ~]# kill 15 5397
[root@node1 ~]# jobs
[1]+  Terminated              firefox

4.后台和前台恢复程序

[root@tianyi ~]# 
[root@tianyi ~]# jobs
[1]-  Running                 ping www.baidu.com > /dev/null &
[2]+  Stopped                 ping www.jd.com > /dev/null
[root@tianyi ~]# bg 2
[2]+ ping www.jd.com > /dev/null &
[root@tianyi ~]# jobs
[1]-  Running                 ping www.baidu.com > /dev/null &
[2]+  Running                 ping www.jd.com > /dev/null &
[root@tianyi ~]# fg 2
ping www.jd.com > /dev/null
^Z
[2]+  Stopped                 ping www.jd.com > /dev/null
[root@tianyi ~]# jobs
[1]-  Running                 ping www.baidu.com > /dev/null &
[2]+  Stopped                 ping www.jd.com > /dev/null
相关文章
|
1月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
136 3
Linux系统禁用swap
|
1月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
184 3
|
2月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
2月前
|
存储 Ubuntu Linux
「正点原子Linux连载」第二章Ubuntu系统入门
在图2.8.2.4中,我们使用命令umount卸载了U盘,卸载以后当我们再去访问文件夹/mnt/tmp的时候发现里面没有任何文件了,说明我们卸载成功了。
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
155 0
Linux系统初始化脚本
|
2月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
153 18
|
1月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
150 1
|
1月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
616 1
|
2月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
970 10
|
2月前
|
安全 Linux 数据安全/隐私保护
为Linux系统的普通账户授予sudo访问权限的过程
完成上述步骤后,你提升的用户就能够使用 `sudo`命令来执行管理员级别的操作,而无需切换到root用户。这是一种更加安全和便捷的权限管理方式,因为它能够留下完整的权限使用记录,并以最小权限的方式工作。需要注意的是,随意授予sudo权限可能会使系统暴露在风险之中,尤其是在用户不了解其所执行命令可能带来的后果的情况下。所以在配置sudo权限时,必须谨慎行事。
395 0

热门文章

最新文章