进程
大约 3 分钟linuxcentos
systemctl
# 列出正在运行的Unit
systemctl list-units,可以直接使用systemctl
# 列出所有Unit,包括没有找到配置文件的或者启动失败的
systemctl list-units --all
# 列出所有没有运行的 Unit
systemctl list-units --all --state=inactive
# 列出所有加载失败的 Unit
systemctl list-units --failed
# 列出所有正在运行的、类型为service的Unit
systemctl list-units --type=service
# 显示某个 Unit 是否正在运行
systemctl is-active application.service
# 显示某个 Unit 是否处于启动失败状态
systemctl is-failed application.service
# 显示某个 Unit 服务是否建立了启动链接
systemctl is-enabled application.service
# 立即启动一个服务
sudo systemctl start apache.service
# 立即停止一个服务
sudo systemctl stop apache.service
# 重启一个服务
sudo systemctl restart apache.service
# 重新加载一个服务的配置文件
sudo systemctl reload apache.service
# 重载所有修改过的配置文件
sudo systemctl daemon-reload
按照名称查找进程
ps -aux|grep huachongjin
# 表示查找名称为 huanchongjin 的进程,显示如下内容
root 8180 0.0 0.0 112812 976 pts/0 S+ 10:46 0:00 grep --color=auto huachongjin
root 22231 0.1 6.4 5730196 517588 ? Ssl Sep06 20:51 /usr/local/jdk1.8/bin/java -DSERVICE_LOG_FOLDER=/projs/huachongjin/log -jar /projs/huachongjin/backend/huachongjin.jar
# 忽略上面第一个 root 行,第二行才是真实的进程信息
# root - 进程所有者
# 22231 - 进程PID,唯一标识符
# 0.1 - 进程当前的CPU占用率
# 6.4 - 进程当前的内存占用率
# 5730196 - 进程的虚拟内存使用量,单位KB
# 517588 - 进程的物理内存使用量,单位KB,此时大概是505M
# ? - 不确定是什么
# Ssl - 进程状态,S表示进程当前正在运行,l表示是一个多线程的进程
# Sep06 - 进程启动日期
# 20:51 - 进程启动时间
# 最后一个是进程的启动命令+参数
查看所有进程
ps -ef
# 查看所有守护进程的服务
systemctl list-units --type=service
使用PID查看进程详情
# 查看进程相关的文件
ps aux|grep 进程号
# 查看进程完整信息
ll /proc/PID
# cwd符号链接的是进程运行目录;
# exe符号连接就是执行程序的绝对路径;
# cmdline就是程序运行时输入的命令行命令;
# environ记录了进程运行时的环境变量;
# fd目录下是进程打开或使用的文件的符号连接。
杀掉进程
杀掉单个
kill -9 进程PID # 强制杀掉,立即关闭进程
kill -15 进程PID # 优雅杀掉,等当前任务执行完毕再关闭进程
批量杀掉
ps -ef | grep redis-server | grep -v grep | awk '{print $2}' | xargs kill -15
# ps -ef [获取当前系统的所有进程]
# grep redis-server [过滤出与 redis-server类似的进程]
# grep -v grep [除去本次操作所造成的影响,-v 表示反向选择]
# awk '{print $2}' [表示筛选出后面要用到的进程PID,$2表示每行的第二个参数,那么在本命令中就是进程PID]
# xargs kill -15 [中的xargs表示用前面命令的输出结果,即进程PID作为 kill -15 的参数]
