管理进程
一:了解系统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 ~]#