Linux的进程管理

Linux的进程管理

1.什么时进程?什么是线程?

进程是程序的一次运行实例,是操作系统分配资源(如内存、CPU 时间片、文件描述符等)的基本单位。

线程是进程内的执行单元,是操作系统进行 CPU 调度的基本单位。一个进程可以包含多个线程,这些线程共享该进程的资源。

2.进程状态

运行态(R, Running/Runnable)

可中断睡眠态(S, Interruptible Sleep)

不可中断睡眠态(D, Uninterruptible Sleep)

停止态(T, Stopped)

僵死态(Z, Zombie)

追踪态(t, Traced)

死亡态(X, Dead)

3.进程查看命令
bash 复制代码
# 1、ps
# 2、pidof
[root@localhost mnt]# vim &
[1] 27942
[root@localhost mnt]# pidof  vim
27942

[1]+  已停止               vim

# 3、pgrep
root@localhost mnt]# su - lee
[lee@localhost ~]$ vim &
[1] 28012
[lee@localhost ~]$ vim &
[2] 28013

[1]+  已停止               vim
[lee@localhost ~]$ vim ^

[2]+  已停止               vim
[lee@localhost ~]$ vim &
[3] 28015

[root@localhost ~]# pgrep  -lu lee
27979 bash
28012 vim
28013 vim
28015 vim

# 4、top
4.进程前后台调用
bash 复制代码
[root@localhost mnt]# ping www.baidu.com
PING www.a.shifen.com (183.2.172.177) 56(84) 比特的数据。
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=1 ttl=128 时间=45.9 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=2 ttl=128 时间=53.5 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=3 ttl=128 时间=48.6 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=4 ttl=128 时间=51.4 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=5 ttl=128 时间=48.9 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=6 ttl=128 时间=41.6 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=7 ttl=128 时间=44.7 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=8 ttl=128 时间=46.6 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=9 ttl=128 时间=44.7 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=10 ttl=128 时间=46.2 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=11 ttl=128 时间=46.8 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=12 ttl=128 时间=43.8 毫秒
^Z  #ctrl+z 标识把占用终端的进程打入后台停止
[1]+  已停止               ping www.baidu.com
[root@localhost mnt]# ps
    PID TTY          TIME CMD
   1732 pts/0    00:00:00 bash
  28027 pts/0    00:00:00 ping
  28028 pts/0    00:00:00 ps
[root@localhost mnt]# jobs
[1]+  已停止               ping www.baidu.com
root@localhost mnt]# jobs
[1]+  已停止               ping www.baidu.com
[root@localhost mnt]# fg 1
ping www.baidu.com
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=13 ttl=128 时间=45.2 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=14 ttl=128 时间=48.1 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=15 ttl=128 时间=61.4 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=16 ttl=128 时间=41.8 毫秒
^Z
[1]+  已停止               ping www.baidu.com

[root@localhost mnt]# bg 1
[1]+ ping www.baidu.com &
[root@localhost mnt]# 64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=17 ttl=128 时间=38.6 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=18 ttl=128 时间=38.2 毫秒

[root@localhost mnt]# 64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=19 ttl=128 时间=37.3 毫秒


[root@localhost mnt]# vim &
5.进程优先级

在 Linux 系统中,进程优先级决定了 CPU 分配时间片的先后顺序,优先级高的进程会优先获得 CPU 资源执行。

nice 值

范围:-20 ~ 19,共 40 个级别。

规则:nice 值越小,优先级越高 ;默认情况下,新进程的 nice 值为 0。

注意:普通用户只能提高自己进程的 nice 值 (比如从 0 调到 5),只有 root 用户可以设置负的 nice 值(降低 nice 值,提升优先级)。

6.进程信号

在 Linux 系统中,信号(Signal) 是一种进程间通信(IPC)机制,用于通知进程发生了某个异步事件,进程可以对信号做出相应的响应(捕获、忽略或执行默认操作)。

信号是内核向进程发送的短小消息,它不携带复杂数据,仅传递 "事件发生" 的通知。信号可以由以下几种方式触发:

  • 内核触发:如进程访问非法内存(触发 SIGSEGV)、CPU 执行异常、定时器到期。
  • 用户触发:如终端按下 Ctrl+C(触发 SIGINT)、kill 命令发送信号。
  • 进程触发:一个进程通过 kill() 系统调用向另一个进程发送信号。

常用信号列表如下:

信号编号 信号名称 触发场景 默认操作
1 SIGHUP 终端关闭或进程所属会话结束 终止进程
2 SIGINT 终端按下 Ctrl+C 终止进程
3 SIGQUIT 终端按下 Ctrl+\ 终止进程并生成核心转储文件
9 SIGKILL kill -9 <PID> 强制终止 强制终止进程,无法捕获 / 忽略
11 SIGSEGV 进程访问非法内存地址 终止进程并生成核心转储文件
15 SIGTERM kill 命令默认发送的信号 终止进程(可捕获)
17 SIGCHLD 子进程终止或停止 忽略
19 SIGSTOP 暂停进程 强制暂停进程,无法捕获 / 忽略
20 SIGCONT 恢复暂停的进程 继续执行进程
7.守护进程
守护进程 功能
systemd 系统初始化守护进程,负责启动和管理其他系统服务
sshd 提供 SSH 远程登录服务
crond 管理定时任务(cron 任务)
rsyslogd 系统日志收集与转发服务
nginx/httpd Web 服务守护进程,监听 HTTP 请求
mysqld MySQL 数据库服务守护进程
bash 复制代码
# 启动 sshd 服务
sudo systemctl start sshd
# 停止 sshd 服务
sudo systemctl stop sshd
# 重启 sshd 服务
sudo systemctl restart sshd
# 设置开机自启
sudo systemctl enable sshd
# 查看服务状态
sudo systemctl status sshd
8、项目实践

1、

2、

编写shell脚本:

相关推荐
寻道模式9 分钟前
【运维心得】完整教程:绕过Win11限制让老机焕发新生
运维·操作系统·win11
程序员梅雨11 分钟前
ZooKeeper面经总结
java·大数据·linux·分布式·后端·zookeeper·中间件
zzu123zsw14 分钟前
从 proxy_pass 末尾斜杠到 WebAssembly 预压缩:深挖 Nginx 生产环境四大高频踩坑点
运维·nginx·wasm·webassembly·devops·运维排错
中屹指纹浏览器svip14 分钟前
打开账号环境网页报错,常见原因有哪些?
服务器·开发语言·php·中屹指纹浏览器
lingran__15 分钟前
Linux进程万字详解(二)|进程状态深度剖析:调度队列、内核链表、D状态设计哲学、僵尸孤儿进程与Slab机制
linux·进程管理·内核链表·pcb·僵尸进程·孤儿进程·进程状态
2401_8685347826 分钟前
以太网物理层标准
服务器·网络
tg_xianheyun32 分钟前
亚马逊云服务器部署网站的步骤与上线检查清单
服务器·阿里云·云计算
张洛闻Eren35 分钟前
Ansible【第一课】:Ansible介绍
运维·数据库·云原生·kubernetes·github·ansible
GeW1 小时前
以Linux为基、数据库为核:新质生产力路线图下的企业架构升级
linux
郝亚军1 小时前
RK3562 中有 mosquitto、nginx 了,还需要 http,ftp,tftp 等协议吗?
运维·nginx·http