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、5、15分钟的平均负载。
-
任务信息:
- 总任务数:当前系统中的进程总数。
- 运行状态:正在运行、睡眠、停止等状态的进程数量。
-
CPU使用情况:
- us:用户空间占用的CPU百分比。
- sy:内核空间占用的CPU百分比。
- id:空闲CPU百分比。
- wa:等待I/O的CPU百分比。
-
内存使用情况:
- 总内存:系统总内存大小。
- 已用内存:当前已使用的内存量。
- 空闲内存:当前未使用的内存量。
- 缓存:用于缓存的内存量。
-
进程列表:
- PID:进程ID。
- USER:进程所属用户。
- PR:优先级。
- NI:nice值,影响进程优先级。
- VIRT:虚拟内存使用量。
- RES:常驻内存使用量。
- SHR:共享内存使用量。
- S:进程状态(如R:运行,S:睡眠)。
- %CPU:CPU占用率。
- %MEM:内存占用率。
- TIME+:进程使用的总CPU时间。
- COMMAND:进程名称或命令。
- 在
top
命令的交互界面中可以使用一些快捷键来进行操作和切换显示内容。以下是一些常用的top
命令快捷键:
k
:杀死一个进程。输入该快捷键后,会提示输入要终止的进程的PID,然后按回车确认。r
:修改进程的优先级。输入该快捷键后,会提示输入要修改优先级的进程的PID和新的优先级值。q
:退出top
命令。1
:切换CPU核心显示模式,可以查看每个CPU核心的使用情况。H
:将线程(Thread)视图打开或关闭,显示或隐藏每个进程的线程信息。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
-
后台运行
- 使用
&
符号:在命令末尾加上&
,程序将在后台运行。例如:
./my_program &
- 将前台进程放到后台:
- 首先,按
Ctrl + Z
暂停当前前台进程。 - 然后,使用
bg
命令将其放到后台继续运行:bg
-
查看后台进程:使用
jobs
命令查看当前后台进程。 -
将后台进程带回前台:使用
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>
-
组合使用:可以将
nohup
和tail
结合使用,先用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系统日志文件及其作用:
-
/var/log/messages
:包含系统的常规运行消息,如启动、关机、登录等。 -
/var/log/syslog
:包含系统的所有日志信息,是rsyslogd
守护进程的默认日志文件。 -
/var/log/auth.log
:记录系统的认证信息,如用户登录、su切换用户等。 -
/var/log/kern.log
:记录内核信息,如硬件故障、内核错误等。 -
/var/log/boot.log
:记录系统启动过程中的日志信息。 -
/var/log/dmesg
:包含系统启动时内核环缓冲区的内容,记录了硬件检测和初始化信息。 -
/var/log/secure
:记录安全相关的信息,如SSH登录尝试、sudo使用等。 -
/var/log/cron
:记录定时任务(cron)的执行情况。 -
/var/log/audit/audit.log
:包含auditd
守护进程生成的审计日志。
服务管理工具systemctl
service和systemctl的位置
- centos7之前有service,之后有systemctl
service
和systemctl
都是用于管理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)机制。它通过定义和实施安全策略来增强系统的安全性,限制进程和用户对系统资源的访问。
主要特点
-
强制访问控制:SELinux通过定义策略来控制进程对文件、网络和其他资源的访问,即使用户具有root权限也无法绕过这些限制。
-
安全策略:SELinux使用安全策略来定义哪些进程可以访问哪些资源。策略可以是:
- 目标策略(Targeted Policy):只对特定的服务和进程实施限制。
- 完全策略(MLS/MCS Policy):对系统中的所有进程和资源实施限制。
-
上下文:每个文件、进程和资源都有一个安全上下文,包含用户、角色、类型和级别信息。访问控制基于这些上下文进行。
-
日志记录:SELinux会记录被拒绝的访问尝试,方便管理员进行审计和排查问题。
常用命令
-
查看当前状态:
sestatus
-
临时禁用SELinux:
setenforce 0
-
启用SELinux:
setenforce 1
-
查看和修改SELinux配置:
SELinux的配置文件通常位于/etc/selinux/config
,可以通过编辑该文件来设置SELinux的模式(如enforcing
、permissive
或disabled
)。
模式
- Enforcing:强制执行SELinux策略,拒绝不符合策略的访问。
- Permissive:不拒绝访问,但记录不符合策略的访问尝试。
- Disabled:完全禁用SELinux。
原文地址:https://blog.csdn.net/yuanymnl/article/details/143727283
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!