Yang's blog Yang's blog
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

xiaoyang

编程爱好者
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • System

    • HomeBrew介绍
  • Git

    • Git 命令入门指南
  • shell

    • shell编程中常用的符号
  • docker

    • Docker介绍
    • Dockerfile :构建自己的 Docker 镜像
    • Docker Compose :容器编排工具
  • Linux

    • Linux基础知识
    • Linux 文件系统
    • Linux 用户管理
    • Linux 权限与安全
    • Linux 网络管理
    • Linux 进程管理
      • 1. 什么是进程?进程 vs 线程
        • (1)进程(Process)
        • (2)线程(Thread)
      • 2. 前台进程与后台进程(&,nohup,jobs,bg,fg)
        • (1)后台运行进程
        • (2)查看后台进程
        • (3)将进程转入后台
        • (4)将后台进程恢复到前台
        • (5)使用 `nohup` 保持进程运行
      • 3. 进程状态与信号(ps, top, kill, nice, renice)
        • (1)查看进程信息
        • (2)监控进程
        • (3)终止进程
        • (4)调整进程优先级
      • 4. systemd 进程管理(systemctl,service)
        • (1)启动、停止、重启服务
        • (2)查看服务状态
        • (3)启用/禁用开机启动
        • (4)使用 `service` 命令管理进程
      • 5. 定时任务管理(crontab, at, anacron)
        • (1)使用 `crontab`
        • (2)使用 `at`
        • (3)使用 `anacron`(适用于非 24 小时运行的机器)
    • Linux 常用命令
  • 命令手册
  • Linux
xiaoyang
2025-03-03
目录

Linux 进程管理

# Linux 进程管理

本章全面介绍 Linux 进程管理,包括进程与线程的区别、前后台进程管理、进程状态与信号、systemd 进程管理,以及定时任务管理(crontab、at、anacron)。


# 1. 什么是进程?进程 vs 线程

# (1)进程(Process)

进程是计算机中执行的程序实例,每个进程都有自己的内存空间、文件描述符和资源。进程是独立的,进程之间不能直接共享内存。

查看当前系统的进程数:

ps aux | wc -l
1

# (2)线程(Thread)

线程是进程中的执行单元,一个进程可以包含多个线程(多线程)。线程共享进程的资源(如内存、文件句柄),但有独立的执行栈和 CPU 寄存器。

多线程示例:

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

void* thread_func(void* arg) {
    printf("Thread %ld is running\n", (long)arg);
    return NULL;
}

int main() {
    pthread_t tid;
    pthread_create(&tid, NULL, thread_func, (void*)1);
    pthread_join(tid, NULL);
    return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

编译并运行:

gcc -pthread thread.c -o thread
./thread
1
2

# 2. 前台进程与后台进程(&,nohup,jobs,bg,fg)

# (1)后台运行进程

使用 & 让进程在后台运行:

ping google.com > ping.log &
1

# (2)查看后台进程

jobs -l
1

# (3)将进程转入后台

Ctrl + Z  # 暂停前台进程
bg %1     # 让任务号 1 的进程在后台继续运行
1
2

# (4)将后台进程恢复到前台

fg %1
1

# (5)使用 nohup 保持进程运行

nohup 让进程在退出终端后仍然运行:

nohup my_script.sh &
disown -h %1  # 让任务号 1 的进程脱离终端
1
2

# 3. 进程状态与信号(ps, top, kill, nice, renice)

# (1)查看进程信息

ps aux  # 查看所有进程
ps -ef  # 以不同格式显示进程
1
2

# (2)监控进程

top  # 实时监控进程
htop  # 更美观的进程监控工具(需安装)
1
2

# (3)终止进程

kill -9 <PID>  # 强制杀死进程
kill -15 <PID> # 发送 SIGTERM 信号(优雅终止)
1
2

# (4)调整进程优先级

nice 设置进程优先级:

nice -n 10 myscript.sh
1

renice 调整运行中的进程优先级:

renice -n 5 -p <PID>
1

# 4. systemd 进程管理(systemctl,service)

# (1)启动、停止、重启服务

systemctl start nginx
systemctl stop nginx
systemctl restart nginx
1
2
3

# (2)查看服务状态

systemctl status nginx
1

# (3)启用/禁用开机启动

systemctl enable nginx
systemctl disable nginx
1
2

# (4)使用 service 命令管理进程

service nginx status
1

# 5. 定时任务管理(crontab, at, anacron)

# (1)使用 crontab

crontab -e  # 编辑当前用户的定时任务
crontab -l  # 查看当前用户的定时任务
1
2

示例:每天凌晨 2 点执行备份:

0 2 * * * /usr/bin/backup.sh
1

# (2)使用 at

echo "echo Hello > /tmp/hello.txt" | at now + 5 minutes
1

# (3)使用 anacron(适用于非 24 小时运行的机器)

编辑 /etc/anacrontab:

1   5   backup-job   /usr/bin/backup.sh
1
编辑 (opens new window)
上次更新: 2025/04/01, 01:48:12

← Linux 网络管理 Linux 常用命令→

最近更新
01
操作系统
03-18
02
Nginx
03-17
03
后端服务端主动推送消息的常见方式
03-11
更多文章>
Theme by Vdoing | Copyright © 2023-2025 xiaoyang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式