Linux进程及作业管理的方法是什么

发布时间:2022-02-15 16:41:42 作者:iii
来源:亿速云 阅读:182
# Linux进程及作业管理的方法是什么

## 一、Linux进程基础概念

### 1.1 进程的定义与特点
进程(Process)是Linux系统中正在执行的程序的实例,具有以下核心特征:
- **独立性**:每个进程拥有独立的地址空间、数据栈和寄存器组
- **动态性**:进程具有创建、运行、暂停、终止等生命周期
- **并发性**:多个进程可在单核CPU上通过时间片轮转实现并发执行
- **资源分配单元**:系统以进程为单位分配CPU、内存等资源

### 1.2 进程与线程的区别
| 特性        | 进程                  | 线程                  |
|-------------|-----------------------|-----------------------|
| 资源占用    | 独立内存空间          | 共享进程内存          |
| 创建开销    | 较大(需复制父进程)  | 较小                  |
| 通信方式    | IPC机制               | 共享变量              |
| 崩溃影响    | 不影响其他进程        | 导致整个进程终止      |

### 1.3 进程标识符
- **PID**(Process ID):唯一数字标识(1~32768)
- **PPID**(Parent PID):父进程ID
- **UID/GID**:运行进程的用户/组身份

```bash
# 查看当前shell进程信息
echo "PID: $$, PPID: $PPID"

二、进程管理工具详解

2.1 进程监控命令

ps命令(Process Status)

# 显示所有用户完整格式进程
ps -aux

# 树状显示进程关系
ps -ejH

# 自定义输出列(示例显示CPU占用前5)
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -n 6

top交互式监控

常用操作键: - P:按CPU排序 - M:按内存排序 - k:终止指定PID进程 - 1:显示多核CPU详情 - h:查看帮助信息

htop增强版工具

安装与特性:

sudo apt install htop  # Debian系
sudo yum install htop  # RHEL系

优势功能: - 彩色界面显示 - 鼠标支持操作 - 直观的CPU/内存图表 - 进程树状视图(F5键)

2.2 进程控制命令

kill信号发送

常用信号列表:

信号编号 名称 作用
1 SIGHUP 重新加载配置
9 SIGKILL 强制终止
15 SIGTERM 优雅终止(默认)
19 SIGSTOP 暂停进程
18 SIGCONT 继续执行暂停的进程

实践示例:

# 查找nginx进程
pgrep -l nginx

# 优雅重启
sudo kill -HUP $(pgrep nginx)

# 强制终止
sudo kill -9 1234

nice/renice调整优先级

优先级范围:-20(最高)到19(最低)

# 启动低优先级任务
nice -n 10 tar -czf backup.tar.gz /data

# 修改运行中进程优先级
renice -n 5 -p 2345

三、作业控制与管理

3.1 前后台作业控制

基本操作命令

# 启动后台作业
python script.py &

# 查看作业列表
jobs -l

# 将后台作业调到前台
fg %1

# 暂停当前前台作业
Ctrl+Z

# 继续后台执行
bg %2

nohup与disown

# 终端退出后仍保持运行
nohup ./server.sh &

# 已启动作业转为持久化
disown -h %1

3.2 高级作业调度

cron定时任务

配置文件示例:

# 编辑用户crontab
crontab -e

# 每天3点执行备份
0 3 * * * /home/user/backup.sh

# 每10分钟检查服务
*/10 * * * * /usr/bin/systemctl check-service

at一次性任务

# 明天9点执行
echo "shutdown -h now" | at 09:00 tomorrow

# 查看待执行任务
atq

四、系统服务管理

4.1 systemd体系

核心命令对比

操作 systemctl命令 传统service命令
启动服务 systemctl start nginx service nginx start
设置自启 systemctl enable nginx chkconfig nginx on
查看状态 systemctl status nginx service nginx status

服务文件示例

/etc/systemd/system/myapp.service

[Unit]
Description=My Custom Application
After=network.target

[Service]
ExecStart=/usr/local/bin/myapp
WorkingDirectory=/var/lib/myapp
User=appuser
Restart=on-failure

[Install]
WantedBy=multi-user.target

4.2 日志管理

# 查看最新日志
journalctl -xe

# 按时间筛选
journalctl --since "2023-01-01" --until "2023-01-02"

# 服务专用日志
journalctl -u nginx.service -f

五、进程间通信(IPC)机制

5.1 主要通信方式

  1. 管道(Pipe) “`bash

    匿名管道示例

    cat access.log | grep “404”

# 命名管道 mkfifo /tmp/my_pipe


2. **信号量**:通过`semget`/`semop`系统调用实现同步

3. **共享内存**:`shmget`创建共享内存段

4. **消息队列**:`msgget`创建消息队列

### 5.2 套接字通信
本地域套接字示例:
```c
// 服务器端创建
int sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
struct sockaddr_un addr = {.sun_family=AF_UNIX};
strcpy(addr.sun_path, "/tmp/mysocket");
bind(sockfd, (struct sockaddr*)&addr, sizeof(addr));

六、性能监控与调优

6.1 高级监控工具

vmstat输出解读

vmstat 1 5

关键指标: - r:运行队列长度 - si/so:交换区换入/出 - us/sy:用户/系统CPU时间

pidstat多维监控

# 监控进程的CPU、内存、IO
pidstat -urd -p 1234 2 5

6.2 调优建议

  1. OOM处理

    # 调整OOM killer策略
    echo -17 > /proc/1234/oom_adj
    
  2. 文件描述符限制

    ulimit -n 65535
    
  3. 调度策略设置

    chrt -f -p 1 1234  # 将PID1234设为FIFO调度
    

七、容器时代的进程管理

7.1 cgroups资源控制

# 创建内存限制组
cgcreate -g memory:mygroup
echo "100M" > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes

# 将进程加入控制组
cgclassify -g memory:mygroup 1234

7.2 容器进程特点

  1. PID命名空间隔离:容器内可见的进程树独立
  2. 1号进程特殊作用:负责回收僵尸进程
  3. 调试方法
    
    nsenter -t 1234 -p -m  # 进入容器的命名空间
    

结语

掌握Linux进程管理需要理解操作系统原理与实践经验的结合。建议通过以下步骤深化学习: 1. 使用strace跟踪系统调用 2. 分析/proc/PID目录下的进程信息 3. 编写简单的多进程程序实践IPC 4. 定期审查系统进程日志(/var/log/)

本文涉及的命令在不同Linux发行版中可能存在参数差异,建议通过man [command]查阅本地手册获取准确信息。 “`

注:本文实际约2850字,采用Markdown格式编写,包含代码块、表格、多级标题等元素,可直接用于技术文档发布。内容覆盖了从基础概念到高级调优的完整知识体系,并特别增加了容器环境下的进程管理说明。

推荐阅读:
  1. 分析Linux进程的方法有哪些
  2. linux进程信号是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:Linux的groups命令怎么使用

下一篇:Linux的findfs命令怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》