系统管理篇(3)-进程管理

2025 年 4 月 6 日 星期日(已编辑)
3
AI 生成的摘要
此内容由 AI 生成
这篇文章主要介绍了进程管理的各个方面,包括进程查看、内存查看、进程控制、系统日志和服务管理。进程查看使用命令如ps、pstree和top,内存查看命令如free。进程优先级通过nice和renice命令进行设置,进程作业控制使用&符号和jobs命令。进程间通信主要通过信号机制,常见信号包括SIGINT和SIGKILL。守护进程可以使用nohup命令运行,而系统日志存放在/var/log下。服务管理使用service和systemctl命令进行控制,配置文件存放在/usr/lib/systemd/system/,以便进行自动启动和服务操作。
这篇文章上次修改于 2025 年 4 月 6 日 星期日,可能部分内容已经不适用,如有疑问可询问作者。

系统管理篇(3)-进程管理

系统管理篇(3)- 进程管理

一、进程监控

1. 进程查看

进程概念

  • 运行中的程序,从程序开始运行到终止的整个生命周期是可管理的
  • 终⽌的⽅式并不唯⼀,分为正常终⽌和异常终⽌
    • 正常终⽌也分为从 main 返回、调⽤ exit 等⽅式
    • 异常终⽌分为调⽤ abort、接收信号等

进程查看命令

  • ps

    ps # 当前终端中的进程,PID为进程的唯一标识
    ps -e | more # 所有进程,centos7的1号进程是systemd,而centos6为init
    ps -ef | more # UID为进程的有效用户id(不一定是创建者),PPID为父进程的PID
    ps -eLf | more # LWP线程
    

    当计算机资源不足时,可以查看是否是进程过多或线程过多导致的。

  • pstree

    # 默认没有安装,需要先安装
    yum install -y psmisc
    
    pstree | more
    
  • top

    top
    # up 33min - 上次开机后已经运行时间
    # load average: 0.04 0.05 0.06 - 1,5,15分钟平均负载,可以把负载1想象成一个塞满的车道
    # Tasks - 运行的进程
    # %Cpu(s) - us用户态,sy系统态(进程间状态交互),id空闲态,wa等待磁盘操作。按数字1可以分别看逻辑cpu
    # KiB Mem - 内存使用情况
    # KiB Swap - swap使用情况
    
    top -p PID
    
  • 总结:进程也是树形结构;进程和权限有着密不可分的关系

2. 内存查看

常用命令介绍

  • free

    free -m
    free -mh
    
  • top

    top 
    
    top -p PID
    

二、进程控制

1. 进程优先级

  • nice

    • 范围从-20到19,值越小优先级越高,抢占资源就越多
    # 运行提供的脚本
    nice -n 10 ./loop.sh
    
  • renice

    • 重新设置优先级
    renice -n 15 PID
    

2. 进程的作业控制

  • &符号

    # 后台运行提供的脚本
    ./loop.sh &
    
  • jobs

    jobs
    
    # 切换后台进程到前台
    fg [JOB_ID] # JOB_ID为jobs命令查看到的作业id
    
    # 切换前台进程到后台,在内存中挂起
    ctrl + z
    
    # 恢复前台执行
    jobs
    fg [JOB_ID]
    
    # 恢复后台执行
    jobs
    bg [JOB_ID]
    

3. 进程间通信

  • 信号是进程间通信⽅式之⼀,典型⽤法是:终端⽤户输⼊中断命令,通过信号机制 停⽌⼀个程序的运⾏。
  • 使⽤信号的常⽤快捷键和命令
  • kill -l
    • SIGINT 通知前台进程组终⽌进程 ctrl + c
    • SIGKILL ⽴即结束程序,不能被阻塞和处理 kill -9 pid

三、系统日志

1. 守护进程

  • 使⽤ nohup 与 & 符号配合运⾏⼀个命令

    • nohup 命令使进程忽略 hangup(挂起)信号,即关掉终端也不会结束进程

      nohup tail -f /var/log/messages &
      
  • 守护进程(daemon)和⼀般进程

    • 随Linux开机自动启动
    • 无需终端启动
    • 只占用根目录
    • 日志输出到系统日志中
    cd /proc/PID
    ls -l CWD
    ls -l FD
    

2. 系统日志

  • 常见的系统日志
    • /var/log
    • message
    • cron
    • secure

四、服务管理程序

1. 服务基本概念

服务(提供常⻅功能的守护进程)集中管理⼯具

2. service

  • 启动脚本位置/etc/init.d/

3. systemctl

  • systemctl 常⻅操作

    • systemctl start | stop | restart | reload | enable | disable 服务名称

    • 软件包安装的服务单元 /usr/lib/systemd/system/

    • systemctl 的服务配置

      位置/usr/lib/systemd/system/

    • 案例:loop脚本开机自动启动

    cd /usr/lib/systemd/system/
    vi loopd.service # 通常可以复制sshd.service修改
    
    [Unit]
    Description=Loop service
    After=network.target
    
    [Service]
    Type=simple # Daemon进程使用forking
    User=root
    WorkingDirectory=/root
    ExecStart=/bin/bash /root/loop.sh
    ExecStop=/usr/bin/kill -s QUIT $MAINPID
    ExecReload=/usr/bin/kill -s HUP $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    
    
    systemctl start loopd
    systemctl stop loopd
    systemctl enable loopd
    
  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...