管理进程

一:了解系统linux中系统的进程

1:进程的概念

进程是系统管理事务的基本单元,是操作系统执行特点任务的动态实体,一般情况下,每个运行的程序都有一个进程组成,比如vim编辑文件时,也会生成一个进程

进程:就是这个可执行的程序运行起来,到结束前,它就是一个进程

3种类型的进程

1)交互进程

是由shell启动的进程,可以在前台和后台都可以运行

2)批处理进程

是一个进程序列,与终端没有关系

3)守护进程

是指在系统启动时就执行的进程,并且在后台运行

2:进程号

每一个进程都有一个进程号标识pid,范围为(0~32767)pid是系统在创建进程时给每一个进程的唯一标识,一个进程终止后,进程号也会被释放,分配给下一个进程使用

(1):idle进程

进程号为0,是系统创建的第一个进程,也是唯一一个没有通过fork或者kernel_thread产生的进程

(2):systemd进程

进程号为1,是有0进程创建的,用于完成系统的初始化,,是系统中所有进程的祖先进程,系统启动完成后,就会变成守护进程,用于监时系统中的其他进程

(3):kthreadd进程

进程号为2,是管理和调度其他内核进程,会循环执行kthread函数,所有的内核线程都直接或间接的以其为父进程

 

二:服务器状态监控

(1):linux操作系统的性能分析工具

#top
[root@server /]# top 
top - 16:46:50 up 20 min,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 249 total,   1 running, 248 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2032156 total,   944508 free,   619976 used,   467672 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1197188 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                        
  2114 root      20   0  377648  18232  14516 S   0.3  0.9   0:01.50 vmtoolsd                                       
  2881 root      20   0  157820   2352   1564 R   0.3  0.1   0:00.03 top                                            
     1 root      20   0  193580   6728   3960 S   0.0  0.3   0:02.05 systemd    



top 命令的每个参数的分析
第一行 top 系统指标,显示当前的时间为16:46:50,已经开机了20分钟,三个user,平均负载,分别为1分钟前,5分钟前,15分钟前

第二行 tasks 进程指标。这里显示系统正在运行的进程总数为249个,1个正在运行,248个睡眠,

第三行 cpu的占用率 user 的占用率,system系统占用率,ni改变优先级后,用户的占用率,id为空闲的cpu,wa 为等待i|o操作完成占用的cpu

第四行 mem 内存占用比 total 为物理内存总量,free为空闲内存总量,userd为用户使用了内存总量,buff为缓存量

第五行 swap 交换内存  

(2):监控系统进程状态的命令(ps)

常用的选项

ps -aux 显示所有程序,以用户为主的格式

[root@server /]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.1  0.3 193580  6728 ?        Ss   16:26   0:02 /usr/lib/systemd/systemd --switched-root --system -
root          2  0.0  0.0      0     0 ?        S    16:26   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    16:26   0:00 [ksoftirqd/0]

每个参数的解释:
user 当前进程的用户
pid  进程的pid
%cpu 进程所占用的百分比
%mem  进程所占用的百分比
rss       为进程的状态
tty    当前的终端 

ps -ef 显示父进程和子进程

[root@server /]# ps -ef 
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 16:26 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2      0  0 16:26 ?        00:00:00 [kthreadd]


ppid为父进程 

ps -axo user,nice,command,pid 可以自定义显示一些内容

[root@server /]# ps -axo user,nice,command,pid
USER      NI COMMAND                        PID
root       0 /usr/lib/systemd/systemd --      1
root       0 [kthreadd]                       2

(3)监控内存的使用状态

free命令用于查看主机的内存使用情况

常用的选项

free -th 

[root@server /]# free -th
              total        used        free      shared  buff/cache   available
Mem:           1.9G        621M        905M         10M        457M        1.1G
Swap:          4.0G          0B        4.0G
Total:         5.9G        621M        4.9G

total 为总内存的大小
mem 物理内存
swap 交换内存
used 已经被使用的内存
free 可用内存大小
shared 被共享使用的内存
buff 缓存使用的物理内存大小
available 还可以被应用程序使用的内存大小

(4)监控磁盘分区使用状态命令

常见的选项

df -hT

[root@server /]# df -hT
文件系统              类型      容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root xfs        16G  3.0G   13G   20% /
devtmpfs              devtmpfs  977M     0  977M    0% /dev
tmpfs                 tmpfs     993M  144K  993M    1% /dev/shm
tmpfs                 tmpfs     993M  9.0M  984M    1% /run
tmpfs                 tmpfs     993M     0  993M    0% /sys/fs/cgroups 

三:停止进程

用kill或者killall命令来杀死进程

1:kill命令

kill 信号 pid

信号 说明
1 重启
2 相当于ctrl+c,终止前台进程
9 强制终止进程
15 正常的结束这个进程
18 恢复暂停的进程
19 暂停前台的进程,ctrl+c

常用的用法:

#编辑一个文件将他放入后台 &
[root@server ~]# vim test.txt &
[1] 2813
#jobs命令查看后台的进程
[root@server ~]# jobs 
[1]+  已停止               vim test.txt
[root@server ~]# 
#使用kill命令时,先要将该进程的pid找出来
[root@server ~]# ps -aux | grep vim
root       2813  0.0  0.2 146904  4624 pts/1    T    22:10   0:00 vim test.txt
root       2837  0.0  0.0 112664   956 pts/1    S+   22:12   0:00 grep --color=auto vim
[root@server ~]#
#找到进程的pid后,使用kill命令杀死
[root@server ~]# kill -9 2813
[root@server ~]# jobs
[1]+  已杀死               vim test.txt
[root@server ~]# 

2:killall命令

killall命令不是通过pid来杀死进程的,而是用进程名来杀死进程的

常见的选项

选项 说明
i 询问是否杀死进程
I 忽略进程的大小写
u 杀死用户的所有进程

 

常见的操作:

#杀死vsftpd进程
[root@server ~]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2023-10-26 21:52:02 CST; 25min ago
  Process: 1177 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 1186 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─1186 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

10月 26 21:52:02 server systemd[1]: Starting Vsftpd ftp daemon...
10月 26 21:52:02 server systemd[1]: Started Vsftpd ftp daemon.
[root@server ~]# killall -9 vsftpd
#查看杀死后的vsftpd进程
[root@server ~]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: signal) since 四 2023-10-26 22:17:25 CST; 30s ago
  Process: 1177 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 1186 (code=killed, signal=KILL)

10月 26 21:52:02 server systemd[1]: Starting Vsftpd ftp daemon...
10月 26 21:52:02 server systemd[1]: Started Vsftpd ftp daemon.
10月 26 22:17:25 server systemd[1]: vsftpd.service: main process exited, code=killed, status=9/KILL
10月 26 22:17:25 server systemd[1]: Unit vsftpd.service entered failed state.
10月 26 22:17:25 server systemd[1]: vsftpd.service failed.
[root@server ~]# 

  

  

 

 

  

 

posted @ 2023-10-23 15:58  q_7  阅读(12)  评论(0编辑  收藏  举报