文章目录
服务管理及进程管理
一.linux系统中的服务管理
1.服务管理的统一工具
centOS6 service 程序名 start/stop
centOS7 systemctl start/stop 程序名
2.服务管理的常见操作
systemctl 指令 程序名
start # 启动服务
stop # 停止服务
restart # 重启服务。服务停止
reload # 平滑重启。服务不停止,只重新加载配置文件
status # 查看服务状态
-l # 显示详细信息
Active状态:
dead # 服务处于关闭状态
running # 正在运行
failed # 运行失败
enable # 设置开机自启动
--now # 当前立即启动
disable # 取消开机自启动
is-enabled # 查询某程序是否开机自启
list-unit-files #查看所有服务的开机自启状态
3.systemctl服务配置文件
作用:哪些服务需要被systemctl管理,则必须得有配置文件
/usr/lib/systemd/system/ # 存放systemctl需要管理的服务的配置文件的 只有.service .target两种后缀
# 配置文件详解
vim /usr/lib/systemd/system/sshd.service
[Unit] # 定义服务运行依赖环境
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=notify # Type字段定义启动类型
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS # 定义服务启动命令
ExecReload=/bin/kill -HUP $MAINPID # 定义服务重启命令
KillMode=process # 关闭进程的模式
control-groups:所有都杀
process: 只杀主进程
Restart=on-failure # 服务程序退出后,systemd的重启方式
no:默认模式,退出后不会重启
on-success:只有正常退出时才会重启
on-failure:非正常退出时才会重启
RestartSec=42s # 重启的延时等待
[Install] # 设定本服务enabled后在哪个运行级别下开机自启
WantedBy=multi-user.target
## 重载配置文件
systemctl daemon-reload
二.linux系统中的进程管理
1.什么是进程?什么是程序?什么是守护进程?
程序:后端语言编写的可以运行的软件
进程:程序运行起来后在内存中的表现状态为进程
PID:进程号
内存空间:用于存储进程运行过程中产生的数据
守护进程:某一个需要一直处于运行状态,在后台运行的进程,用于提供某些系统功能。
2.进程的生命周期
初始进程:派生,回收所有父进程
PID:0 systemd
父进程:派生,回收子进程
子进程:工作进程,实际处理任务的进程
僵尸进程:父进程无法管理的子进程。占用系统资源,不干活。
解决办法:将父进程手动关闭,使其变成孤儿进程被初始进程接管回收。
孤儿进程:父进程意外退出。被初始进程接管回收
3.ps命令
作用:查看系统进程运行状态
1.ps -ef
用户态进程的运行用户 | 进程号 | 父进程的进程号 | cpu使用情况 | 启动时间 | 来源终端 | 运行多久 | 进程的启动命令 |
---|---|---|---|---|---|---|---|
UID | PID | PPID | C | STIME | TTY | TIME | CMD |
root | 1(初始进程) | 0(没有进程) | 0 | 08:51 | ?(内核态进程) | 00:00:03 | /usr/lib/systemd/systemd --switched-root --system --deserialize 22 |
root | 1346 | 1(初始进程) | 0 | 15:41 | tty1(用户态进程) | 00:00:00 | /sbin/agetty --noclear tty1 linux |
2.ps aux
用户态进程的运行用户户 | 进程号 | CPU使用率 | 内存使用率 | 虚拟内存使用情况 | 物理内存使用情况 | 来源终端 | 进程的状态 | 开始运行时间 | 运行时间 | 进程的启动命令 |
---|---|---|---|---|---|---|---|---|---|---|
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
root | 1(初始进程) | 0.0 | 0.2 | 125896 | 4460 | ? | Ss | 15:41 | 0:03 | /usr/lib/systemd/systemd --switched-root --system --deserialize 22 |
root | 1346 | 0.0 | 0.0 | 110204 | 848 | tty1(用户态进程) | Ss+ | 15:41 | 0:00 | /sbin/agetty --noclear tty1 linux |
3.进程的状态
# 常见进程状态
S:可中断的睡眠进程
R:正在运行的进程
D:不可中断的睡眠进程
T:暂停的进程。ctrl+z
Z:僵尸进程
s:该进程是一个父进程
+:前台进程
<:高优先级进程
N:低优先级进程
三.进程的管理
1.停止进程
kill PID
-1 #平滑重启。重载配置文件
-3 #平滑停止
-9 #强制杀死
-15 #默认
pkill 平滑批量杀死
killall 批量杀死。支持指定信号
安装 yum install psmisc -y
杀死共同的父进程可以批量杀死子进程
2.进程中前后台管理
1-&:将前台进程放置后台
用在一个命令的最后,可以把这个命令放到后台执行。但输出结果会显示在前台。
nohup 结合&使用
将后台输出结果写进nohup.out文件
nohup ping www.baidu.com &
2-ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停
3-jobs
查看当前有多少在后台运行的命令
4-fg
将后台中的命令调至前台继续运行
如果后台有多个命令,可以用fg %jobnumber将选中的命令调出。
%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
5-bg
将一个在后台暂停的命令,变成继续执行
3.screen实现多终端管理进程
# 安装screen命令
yum install screen -y
screen 直接执行开启新终端
-list #查看前后台终端
-r 终端号码 #切换终端
ctrl a+d #回退到之前的终端
在screen中运行的进程是在另一终端中运行的,不算后台运行,无法被前后台管理