Linux基础学习之Day5-关于进程 process

本文详细介绍了Linux中的进程概念,包括进程的组成、生命周期、状态以及如何通过`ps`、`top`和`netstat`等工具查看和管理进程。此外,还讲解了作业控制、信号发送以及进程间通信的基础知识,对于理解Linux系统管理和优化至关重要。
摘要由CSDN通过智能技术生成

Linux基础学习之从入门到精通Day5

关于进程 process

什么是进程?

进程是已启动的可执行程序的运行实例,进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态。
程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/local/nginx/sbin/nginx
进程: 是程序运行的过程, 动态,有生命周期及运行状态。

进程的生命周期

在这里插入图片描述
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性
之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:
Centos5/6: init
Centos7: systemd

子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec
自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,
子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩
余的结构,然后继续执行其自己的程序代码。

进程状态

在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU 时间和资源分配的要求
会不断变化,从而为进程分配一个状态,它随着环境要求而改变。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看进程 process

了解如进程的:

• PID,PPID
• 当前的进程状态
• 内存的分配情况
• CPU和已花费的实际时间
• 用户UID,他决定进程的特权
netstat -anptu 查看端口

静态查看进程 ps

[root@~]# ps aux |less
USER       PID %CPU %MEM    VSZ   RSS TTY     STAT START   TIME COMMAND
root         1     0.0     0.0          2164   648 ?          Ss   08:47     0:00 init [5] 

USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (/STATE)
R 运行
S 可中断睡眠 Sleep
D 不可中断睡眠 (usually IO)
T 停止的进程
Z 僵尸进程
X 死掉的进程
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名

[root@]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:47 ? 00:00:00 init [5]

//自定义显示字段

[root@~]# ps axo user,pid,ppid,%mem,command |grep httpd

动态查看进程 top

[root@~]# top
[root@~]# top -d 1
[root@~]# top -d 1 -p 10126					    查看指定进程的动态信息
[root@~]# top -d 1 -p 10126,1
[root@~]# top -d 1 -u apache				        查看指定用户的进程

第一部分:系统整体统计信息

top - 14:15:04 up 47 min,  2 users,  load average: 0.25, 0.18, 0.12
Tasks: 235 total,   1 running, 234 sleeping,   0 stopped,   0 zombie
Cpu(s):  8.9%us,  1.0%sy,  0.0%ni, 90.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   7944064k total,   746164k used,  7197900k free,    35724k buffers
Swap:  1048568k total,        0k used,  1048568k free,   261492k cached

load average: 0.86, 0.56, 0.78 CPU最近 1分钟,5分钟,15分钟平均负载

第二部分:进程信息

命令
h|?帮助
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
1 显示所有CPU的负载

< 向前

向后
z 彩色
W 保存top环境设置 ~/.toprc

netstat

netstat用来查看系统当前系统网络状态信息,包括端口,连接情况等,常用方式如下:
netstat -atunlp,各参数含义如下:
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(LISTEN状态的套接字)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序
-n : 不进行DNS解析
-a 显示所有连接的端口• 1

一般该指令会与grep配合使用,比如查找端口22,就用netstat -tunlp | grep 22 或者干脆netstat -an | grep 22就可以了,查看其它端口类似,当然也可以通过端口状态查找即netstat -anp | grep TIME_WAIT,即只会显示含有TIME_WAIT字符串的条目

lsof

lsof的作用是列出当前系统打开文件(list open files),不过通过-i参数也能查看端口的连接情况,-i后跟冒号端口可以查看指定端口信息,直接-i是系统当前所有打开的端口
lsof -i:22 #查看22端口连接情况,默认为sshd端口

使用信号控制进程

kill,killall,pgrep,pkill,top

在这里插入图片描述

给进程发送信号

[root@]# kill -l //列出所有支持的信号
编号 信号名

  1. SIGHUP 重新加载配置 PID不变
  2. SIGINT 键盘中断^C
  3. SIGQUIT 键盘退出
  4. SIGKILL 强制终止
  5. SIGTERM 终止(正常结束),缺省信号
  6. SIGCONT 继续
  7. SIGSTOP 停止
    20)SIGTSTP 暂停^Z
给vsftpd进程发送信号1,15
vsftpd信号测试
[root@~]# yum -y install vsftpd
[root@~]# systemctl start vsftpd
[root@~]# ps aux |grep vsftpd
root      9160  0.0  0.0  52580   904 ?        Ss   21:54   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

[root@~]# kill -1 9160			//发送重启信号,例如vsftpd的配置文件发生改变,希望重新加载
root      9160  0.0  0.0  52580   904 ?        Ss   21:54   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

[root@~]# kill 9160			    //发送停止信号,vsftpd服务有停止的脚本 systemctl stop vsftpd
[root@ ~]# ps aux |grep vsftpd

作业控制 jobs

作业控制是一个命令行功能,允许一个shell 实例来运行和管理多个命令。
如果没有作业控制,父进程fork()一个子进程后,将sleeping,直到子进程退出。
使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让 shell 可以在子进程运行期间返回接受其他命令。
在这里插入图片描述

foreground, background, and controlling terminal

foreground: 前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘产生的输入和信号,并允许从终端读取或写入到终端。
background: 后台进程没有控制终端,它不需要终端的交互。

[root@~]# sleep 3000 &		                //运行程序(时),让其在后台执行
[root@ ~]# sleep 4000			                //^Z,将前台的程序挂起(暂停)到后台
[2]+  Stopped             sleep 4000

[root@ ~]# ps aux |grep sleep
root      8895  0.0  0.0 100900   556 pts/0    S    12:13   0:00 sleep 3000
root      8896  0.0  0.0 100900   556 pts/0    T    12:13   0:00 sleep 4000

[root@~]# jobs 						            //查看后台作业
[1]-  Running                sleep 3000 &
[2]+ Stopped                sleep 4000

[root@~]# bg %2					            //让作业2在后台运行
[root@~]# fg %1					            //将作业1调回到前台

[root@~]# kill %1					            //kill 1,终止PID为1的进程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值