自学内容网 自学内容网

Linux进程管理

查看进程

概念:
在这里插入图片描述

  • 查看进程的命令:ps、pstree、top
ps

结论:进程也是树形结构;进程和权限有着密不可分的关系
常用参数:

-e:显示所有进程,包括其他用户的进程。
-f:显示完整格式,包括进程的详细信息。
-l:长格式显示,包括更多的信息如进程状态、CPU 使用情况等。
-u:显示用户相关的进程信息。
-a:显示终端上的所有进程。
-x:显示没有控制终端的进程。
-r:显示正在运行的进程。
-p:显示指定 PID 的进程信息。
-aux:结合多个参数,显示所有进程的详细信息。
-L: 显示线程(轻量级进程)信息。

pstree

pstree 命令用于以树状结构显示进程之间的父子关系,从而更直观地展示进程之间的层级关系。以下是关于 pstree 命令的一些信息:

pstree 命令的作用
  • 显示进程树:以树状结构显示当前系统中运行的进程及其父子关系。
  • 可视化进程关系:通过缩进和连接线的方式展示进程之间的层级关系,更直观地呈现进程树。
示例用法
pstree
示例输出
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─acpid
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─colord───2*[{colord}]
        ├─cron
        ├─...
注意事项
  • pstree 命令默认显示整个进程树,可以结合其他参数来过滤或调整显示内容。
  • 可以使用 man pstree 命令查看 pstree 命令的更多用法和选项。
top

在这里插入图片描述
top命令输出的各部分含义如下:

  1. 系统信息

    • 当前时间:系统当前的日期和时间。
    • 系统运行时间:系统自上次启动以来的运行时间。
    • 用户登录数:当前登录系统的用户数量。
    • 负载平均值:过去1、5、15分钟的平均负载。
  2. 任务信息

    • 总任务数:当前系统中的进程总数。
    • 运行状态:正在运行、睡眠、停止等状态的进程数量。
  3. CPU使用情况

    • us:用户空间占用的CPU百分比。
    • sy:内核空间占用的CPU百分比。
    • id:空闲CPU百分比。
    • wa:等待I/O的CPU百分比。
  4. 内存使用情况

    • 总内存:系统总内存大小。
    • 已用内存:当前已使用的内存量。
    • 空闲内存:当前未使用的内存量。
    • 缓存:用于缓存的内存量。
  5. 进程列表

    • PID:进程ID。
    • USER:进程所属用户。
    • PR:优先级。
    • NI:nice值,影响进程优先级。
    • VIRT:虚拟内存使用量。
    • RES:常驻内存使用量。
    • SHR:共享内存使用量。
    • S:进程状态(如R:运行,S:睡眠)。
    • %CPU:CPU占用率。
    • %MEM:内存占用率。
    • TIME+:进程使用的总CPU时间。
    • COMMAND:进程名称或命令。
  • top命令的交互界面中可以使用一些快捷键来进行操作和切换显示内容。以下是一些常用的top命令快捷键:
  1. k:杀死一个进程。输入该快捷键后,会提示输入要终止的进程的PID,然后按回车确认。
  2. r:修改进程的优先级。输入该快捷键后,会提示输入要修改优先级的进程的PID和新的优先级值。
  3. q:退出top命令。
  4. 1:切换CPU核心显示模式,可以查看每个CPU核心的使用情况。
  5. H:将线程(Thread)视图打开或关闭,显示或隐藏每个进程的线程信息。
  6. z:颜色/黑白模式切换,可以在彩色和黑白之间切换显示模式。

进程控制

nice和renice
  • nice命令用于启动新进程时设置其优先级。语法为nice -n <优先级> <命令>,其中优先级范围一般为-20(最高优先级)到19(最低优先级),默认为0。例如,nice -n 10 ./my_program会以较低的优先级启动my_program。
  • renice命令用于修改已经运行进程的优先级。语法为renice <优先级> -p <进程ID>,可以通过进程ID指定要调整优先级的进程。例如,renice -5 -p 1234会将进程ID为1234的进程优先级调整为较高。
程序前台后台运行
  • 前台运行
    直接在终端中输入命令并执行,程序会占用当前终端,直到程序结束。例如:

    ./my_program
    
  • 后台运行

    1. 使用&符号:在命令末尾加上&,程序将在后台运行。例如:
       ./my_program &
    
    1. 将前台进程放到后台
    • 首先,按Ctrl + Z暂停当前前台进程。
    • 然后,使用bg命令将其放到后台继续运行:
      bg
      
    1. 查看后台进程:使用jobs命令查看当前后台进程。

    2. 将后台进程带回前台:使用fg %<job_number>命令,例如:

       fg %1
      
jobs # 查看当前的工作

进程的通信方式与信号

  • kill命令可以发送不同的信号给目标进程,以下是常用的一些信号及其对应的编号:

SIGHUP(1):挂起信号,通常用于重新加载配置文件。
SIGINT(2):中断信号,通常由按下Ctrl + C发送给前台进程。
SIGQUIT(3):退出信号,通常由按下Ctrl + \发送给前台进程。
SIGKILL(9):强制终止进程,进程无法捕获或忽略。
SIGTERM(15):默认信号,请求进程正常终止。
SIGSTOP(19):停止进程的执行,但不终止。
SIGCONT(18):继续进程的执行,通常与SIGSTOP一起使用。
通过kill -l命令查看系统支持的所有信号及其编号。

守护进程

nohup命令
  • 功能nohup命令用于在后台运行程序,并使其忽略SIGHUP信号,确保即使用户注销或关闭终端,程序仍然继续运行。

  • 基本用法

    nohup <command> &
    

    在终端关闭,父进程结束之后,子进程变成孤儿进程,会自动被1号进程收留。

  • 输出重定向:默认情况下,nohup会将输出重定向到nohup.out文件。如果需要自定义输出文件,可以使用重定向:

    nohup <command> > output.log 2>&1 &
    

    这里2>&1表示将标准错误输出重定向到标准输出。

  • 查看运行的进程:可以使用ps命令查看后台运行的进程:

    ps aux | grep <command>
    
tail命令
  • 功能tail命令用于查看文件的最后几行,常用于查看日志文件的最新内容。

  • 基本用法

    tail <file>
    
  • 常用选项

    • -n <num>:显示文件末尾的指定行数。例如,显示最后20行:
      tail -n 20 <file>
      
    • -f:实时跟踪文件内容的变化,适合查看日志文件的实时更新。例如:
      tail -f <file>
      
    • -c <num>:从文件末尾开始显示指定字节数的内容。例如,显示最后100字节:
      tail -c 100 <file>
      
  • 组合使用:可以将nohuptail结合使用,先用nohup运行程序,然后用tail -f查看输出日志:

    nohup ./my_program > output.log 2>&1 &
    tail -f output.log
    
screen

screen命令是一个终端多重复用工具,可以在一个终端窗口中创建多个虚拟终端,并在这些虚拟终端中运行不同的程序或命令。使用screen命令可以实现以下功能:

  • 创建新会话:通过screen命令创建一个新的screen会话。
  • 分离会话:可以在screen会话中运行程序,然后分离会话,让程序在后台继续运行。
  • 恢复会话:可以重新连接到之前分离的screen会话,继续查看或操作其中的程序。
  • 多窗口管理:可以在一个screen会话中创建多个窗口,方便在不同窗口中切换和管理多个任务。
  • 会话共享:多个用户可以共享同一个screen会话,方便协作和共享工作环境。

基本的screen命令用法如下:
在这里插入图片描述

  • 启动screen会话

    screen
    
  • 创建具有自定义名称的screen会话

    screen -S session_name
    
  • 列出所有screen会话

    screen -ls
    
  • 重新连接到指定screen会话

    screen -r session_name
    

系统日志

系统日志通常存储在/var/log/目录下,不同的日志文件记录不同类型的信息。以下是一些常见的Linux系统日志文件及其作用:

  1. /var/log/messages:包含系统的常规运行消息,如启动、关机、登录等。

  2. /var/log/syslog:包含系统的所有日志信息,是rsyslogd守护进程的默认日志文件。

  3. /var/log/auth.log:记录系统的认证信息,如用户登录、su切换用户等。

  4. /var/log/kern.log:记录内核信息,如硬件故障、内核错误等。

  5. /var/log/boot.log:记录系统启动过程中的日志信息。

  6. /var/log/dmesg:包含系统启动时内核环缓冲区的内容,记录了硬件检测和初始化信息。

  7. /var/log/secure:记录安全相关的信息,如SSH登录尝试、sudo使用等。

  8. /var/log/cron:记录定时任务(cron)的执行情况。

  9. /var/log/audit/audit.log:包含auditd守护进程生成的审计日志。

服务管理工具systemctl

service和systemctl的位置
在这里插入图片描述

  • centos7之前有service,之后有systemctl

servicesystemctl都是用于管理Linux系统服务的命令,但它们适用于不同的初始化系统。

service命令
  • 功能:用于管理传统的SysVinit服务。
  • 基本用法
    service <service_name> <action>
    
    例如,启动、停止或重启服务:
    service httpd start
    service httpd stop
    service httpd restart
    
systemctl命令
  • 功能:用于管理systemd初始化系统的服务,systemd是现代Linux发行版的默认初始化系统。

  • 基本用法

    systemctl <action> <service_name>
    

    例如,启动、停止或重启服务:

    systemctl start httpd
    systemctl stop httpd
    systemctl restart httpd
    
  • 其他常用命令

    systemctl status <service_name>   # 查看服务状态
    systemctl enable <service_name>   # 启用服务开机自启
    systemctl disable <service_name>  #禁用服务开机自启
    

SELinux

SELinux(Security-Enhanced Linux)是Linux内核中的一种安全模块,提供了强制访问控制(MAC)机制。它通过定义和实施安全策略来增强系统的安全性,限制进程和用户对系统资源的访问。
在这里插入图片描述

主要特点
  1. 强制访问控制:SELinux通过定义策略来控制进程对文件、网络和其他资源的访问,即使用户具有root权限也无法绕过这些限制。

  2. 安全策略:SELinux使用安全策略来定义哪些进程可以访问哪些资源。策略可以是:

    • 目标策略(Targeted Policy):只对特定的服务和进程实施限制。
    • 完全策略(MLS/MCS Policy):对系统中的所有进程和资源实施限制。
  3. 上下文:每个文件、进程和资源都有一个安全上下文,包含用户、角色、类型和级别信息。访问控制基于这些上下文进行。

  4. 日志记录:SELinux会记录被拒绝的访问尝试,方便管理员进行审计和排查问题。

常用命令
  • 查看当前状态

    sestatus
    
  • 临时禁用SELinux

    setenforce 0
    
  • 启用SELinux

    setenforce 1
    
  • 查看和修改SELinux配置
    SELinux的配置文件通常位于/etc/selinux/config,可以通过编辑该文件来设置SELinux的模式(如enforcingpermissivedisabled)。

模式
  • Enforcing:强制执行SELinux策略,拒绝不符合策略的访问。
  • Permissive:不拒绝访问,但记录不符合策略的访问尝试。
  • Disabled:完全禁用SELinux。

原文地址:https://blog.csdn.net/yuanymnl/article/details/143727283

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!