12-进程-系统性能和计划任务
系统进程
确认init进程
- init:第一个进程,从 CentOS7 以后为 systemd - 进程:都由其父进程创建,fork(),父子关系,CoW:Copy On Write (读时共享,写时复制)
which init
ll /usr/sbin/init
进程优先级
- pstree是一个在类Unix系统中广泛使用的命令行工具,pstree以树状图的形式显示进程及其子进程的层次结构,清晰地表达了进程间的父子关系。这种展示方式比简单的列表(如ps命令的输出)更加直观,有助于用户快速理解进程的继承关系
- ps的英文全称是process status,意为进程状态。通过ps命令,用户可以获取当前系统中正在运行的进程的各种详细信息,如进程ID(PID)、进程状态、CPU使用情况、内存占用、运行时间等。
可以查看进程当前状态的快照,默认显示当前终端中的进程,Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中
pstree,ps
ps axo pid,cmd,nice |head
top | head
nice -n 11 ping www.baidu.com
ps axo pid,cmd,nice | grep ping
renice -n -10 3887
ps axo pid,cmd,nice |grep 3734
renice -n -30 3887
pstree -p
ps aux|head -3
ps -ef|head -3
ps -eFH|head -3
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
ps -axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -x
ps auxf|head
ps aux k -%cpu
ps axo pid,cmd,%cpu,%mem k -%cpu
ps axo pid,cmd,%cpu,%mem --sort -%mem
ps axo pid,cmd,%cpu,%mem,user,euser,ruser|grep passwd
ps axo pid,cmd,%cpu,%mem,user,euser,ruser|grep passwd
ps -fU apache
ps -fU 48
ps -fu user01
ps -fu 1000
ps -U root -u root
ps -fG nginx
ps -fg mysql
ps -fg 27
ps -fp 1234
ps -f --ppid 1234
ps -fp 1204,1239,1263
ps -ft pts/0
ps -e --forest
ps -f --forest -C sshd
ps -ef --forest|grep -v grep|grep sshd
ps -fL -C nginx
ps L
ps -eo pid,ppid,user,cmd
ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime
ps -p 1244 -o comm
ps -C sshd,bash
ps -C httpd,sshd,-o pid
ps -eo comm,etime,user|grep nginx
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem |head
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu |head
ps -eM
ps --context
ps -eo euser,ruser,suser,fuser,f,comm,label
watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem |head'
prtstat
prtstat命令是一个用于打印指定进程统计信息的工具。它通过读取/proc/PID/stat文件(在Linux系统中),来获取并显示指定进程的统计信息。这些信息对于了解进程的运行状态、资源占用情况等非常有用。
可以显示进程信息,来自于psmisc包
pidof ping
prtstat 3610
prtstat -r 3610
优先级
进程优先级调整
- 静态优先级:100-139
- 进程默认启动时的nice值为0,优先级为120
- 只有根用户才能降低nice值(提高优先性)
nice命令用于在程序启动时修改其运行时的优先级。进程的优先级决定了它被CPU执行的先后顺序,优先级越高的进程占用CPU的次数越多。
nice -n 11 ping www.baidu.com
ps axo pid,cmd,nice|grep ping
renice -n -10 3887
ps axo pid,cmd,nice|grep 3734
renice -n -30 3887
进程搜索
pgrep
pgrep是Linux/Unix系统中一个用于查找与给定模式匹配的进程的命令。pgrep命令的名字来源于“process grep”的缩写,它使用pgrep来搜索与给定模式匹配的进程ID(PID)。该命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程ID。每一个进程ID以一个十进制数表示,通过一个分隔符(默认为换行符)和下一个ID分开。
pgrep -at pts/1
pgrep -f ".*sshd.*"
pgrep -o sshd
pgrep -n sshd
ps aux|grep user01
pgrep -u user01
pidof
pidof命令是Linux系统中的一个实用工具,用于查找当前正在运行的程序的进程ID(PID).
pidof命令通过进程名称来查找对应的进程ID,并将结果输出到终端上。它通常用于脚本中,以确定特定的程序是否正在运行,或者在启动或停止服务之前获取其PID。
pstree -p |grep nginx
pidof -x /usr/sbin/nginx
pidof nginx
pidof -s nginx
kill -9 $(pidof nginx)
pidof nginx
pidof -x /usr/bin/systemd
进程状态
top
top 命令是一个在类 Unix 操作系统(如 Linux 和 macOS)中广泛使用的命令行工具,用于实时显示系统的运行状况,特别是各个进程的资源和性能使用情况。它提供了一个动态更新的视图,帮助系统管理员和用户监控系统的健康状态。
top
top -d 10
top -u user01
top -Hp 992
top -p 992 -c
top -n 1
top -b -n 1
htop
htop是一个交互式的系统监视工具,用于查看Linux系统中正在运行的进程和资源使用情况。它提供了比传统的top命令更丰富的信息和功能,并以彩色方式展示进程列表,使得用户可以更直观地了解系统的运行状态。
注意:htop 是增强版的 top 命令,在 centos 中来自于 epel 源, ubuntu 中可以直接安装
htop
htop -d 5
free
free命令是Linux系统中用于显示内存使用情况的常用工具。free命令能够显示Linux系统中空闲的、已用的物理内存及swap内存,以及被内核使用的buffer和cache。它提供了系统内存使用情况的快照,帮助用户了解系统的内存资源分配和消耗情况。
free
free -m
free -h
#清理缓存
cat /proc/sys/vm/drop_caches
free -m
echo 3 > /proc/sys/vm/drop_caches
free -m
pmap
pmap命令是一个用于报告Linux进程内存映射关系的工具,它显示了进程的内存使用情况,包括代码段、数据段、堆栈等详细信息。这个命令对于理解进程内存布局和排查内存问题非常有帮助。
pmap实际上是一个Sun OS上的命令,Linux系统仅支持其有限的功能。
pstree -p|grep sshd
pmap 1134
pmap -x 1134
pmap -pd 1134
pmap -pd 1134 -A 00007f7504778000,00007f75047bd000
cat /proc/1134/maps
vmstat
vmstat命令生成的报告可用于平衡系统负载活动,帮助用户快速获取当前系统的负载情况,进行系统性能调优、故障排查等操作。具体来说,它可以:
- 监测系统的整体负载情况:
了解系统的CPU、内存、磁盘、网络等性能指标,以及进程数量和状态等信息。
- 分析系统性能问题:
通过观察系统的CPU使用率、内存占用、磁盘I/O等指标,快速定位系统的性能瓶颈,找到导致系统负载过高、响应变慢等问题的原因。
- 监测系统的稳定性:
通过连续监测系统的负载情况,识别出系统的周期性波动,以及系统负载变化的规律,从而更好地管理系统资源,保证系统的稳定性。
vmstat
vmstat 1
vmstat -s
lsof
lsof:list open files,查看当前系统文件的工具。在linux环境下,一切皆文件,用户通过文件不仅可以访问常规数据,还可以访问网络连接和硬件如传输控制协议 (TCP) 和用户数据报协议 (UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符
yum install nginx -y
systemctl start nginx
ps aux|grep nginx
pstree -p |grep nginx
netstat -tnulp|grep nginx
lsof -Pti :80
lsof |head
lsof /var/log/messages
lsof /dev/pts/1
lsof `tty`
lsof -p 1270
lsof -c httpd
lsof -u root|more
lsof +D /var/log
lsof +d /var/log
lsof -i -n
lsof [email protected]
lsof -i :80 -n
lsof -i -n -a -p 9527
lsof -n -p -i TCP -s TCP:ESTABLISHED
从内存中恢复已删除的文件
tail -f /var/log/messages
rm -rf /var/log/messages
ls /var/log/messages
ps aux|grep tail
ll /proc/6037/fd #6037为ps aux|grep tail显示出的第二列数字
cat /proc/6037/fd/3
cat /proc/6037/fd/3 > /var/log/messages
ll /var/log/messages
kill
kill命令是在Unix和类Unix操作系统(如Linux)中使用的命令,主要用于向进程发送信号,通常用于终止进程。
- kill命令:
用于终止指定进程的运行。
需要通过"进程ID"(PID)来指定要终止的进程。
可以发送多种信号给进程,其中SIGTERM(默认)和SIGKILL是两种常用的信号。
- killall命令:
用于终结指定名称的所有进程。
通过"进程名称"来匹配并终止进程,而不是进程ID。
同样可以发送多种信号,但默认也是发送SIGTERM信号。
- pkill命令:
用于根据进程名或信号终止进程,功能类似于killall,但提供了更多选项。
可以直接跟进程名称,也可以跟其他选项来指定终止条件。
同样可以发送多种信号。
高级功能:
可以根据终端号踢出用户登录。
可以根据用户名终止所有进程。
可以使用模糊匹配来终止进程名包含特定字符串的进程。
kill -l
trap -l
killall -0 ping
echo $?
killall -0 ping
echo $?
pkill -t pts/1
pgrep -a '^p'
pkill '^p'
pgrep -a '^p'
lsof -i :80
fuser -k -9 80/tcp
lsof -i:80
作业管理
Linux的作业控制
- 前台作业:通过终端启动,且启动后一直占据终端
- 后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)
ping ww.baidu.com
ps aux|grep ping
jobs
fg
fg2
jobs
bg
bg 1
jobs
echo $BASHPID
pstree -p|grep a.sh
ping 127.0.0.1 &
ps aux|grep ping
ps aux|grep ping
jobs
./a.sh 123 &
jobs
killall -19 a.sh
jobs
killall -18 a.sh
jobs
标签:ps,grep,pid,nginx,常用命令,进程,上篇,lsof
From: https://blog.csdn.net/m0_73940847/article/details/143884155