1327 字
4 分钟
Linux操作大全(六):进程管理与服务管理详解
Linux操作大全(六):进程管理与服务管理详解
本文是Linux操作大全系列的第六篇,详细讲解进程管理、服务管理和定时任务。
一、进程基础概念
1.1 什么是进程?
进程是正在运行的程序的实例。每个进程有:
- PID:进程ID,唯一标识
- PPID:父进程ID
- 用户:进程的所有者
- 状态:运行中、睡眠、停止等
- 资源占用:CPU、内存等
1.2 进程状态
| 状态 | 含义 |
|---|---|
| R (Running) | 运行中 |
| S (Sleeping) | 睡眠中(可中断) |
| D (Disk Sleep) | 磁盘睡眠(不可中断) |
| T (Stopped) | 已停止 |
| Z (Zombie) | 僵尸进程 |
1.3 前台与后台进程
- 前台进程:在终端中运行,占用终端
- 后台进程:在后台运行,不占用终端
二、查看进程
2.1 ps命令
功能:Process Status,查看进程状态。
# 查看当前终端的进程ps
# 查看所有进程ps auxps -ef
# 查看指定用户的进程ps -u username
# 查看指定进程ps -p 1234
# 查看进程树ps auxfps -ejH
# 自定义输出格式ps -eo pid,ppid,user,%cpu,%mem,commandps aux输出详解:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.1 169432 11804 ? Ss May20 0:05 /sbin/init各列含义:
- USER:进程所有者
- PID:进程ID
- %CPU:CPU使用率
- %MEM:内存使用率
- VSZ:虚拟内存大小
- RSS:实际内存大小
- TTY:终端
- STAT:进程状态
- START:启动时间
- TIME:累计CPU时间
- COMMAND:命令
2.2 top命令
功能:实时监控进程状态。
# 基本使用top
# 指定刷新间隔(秒)top -d 1
# 指定用户top -u username
# 指定PIDtop -p 1234top界面操作:
| 按键 | 功能 |
|---|---|
q | 退出 |
h | 帮助 |
k | 杀死进程 |
r | 调整优先级 |
M | 按内存排序 |
P | 按CPU排序 |
1 | 显示每个CPU核心 |
c | 显示完整命令 |
H | 显示线程 |
2.3 htop命令
功能:增强版的top,更友好。
# 安装htopsudo apt install htop
# 使用htophtop
# 指定用户htop -u usernamehtop优势:
- 彩色界面
- 支持鼠标操作
- 可以直接杀死进程
- 树状视图
2.4 pgrep命令
功能:按名称查找进程。
# 按名称查找PIDpgrep nginx
# 显示进程名pgrep -l nginx
# 显示完整命令pgrep -a nginx
# 精确匹配pgrep -x nginx
# 指定用户pgrep -u username nginx2.5 pidof命令
功能:查找程序的PID。
# 查找nginx的PIDpidof nginx
# 查找python的PIDpidof python3三、进程控制
3.1 终止进程:kill
# 发送SIGTERM信号(优雅终止)kill 1234
# 发送SIGKILL信号(强制终止)kill -9 1234
# 发送SIGHUP信号(重新加载配置)kill -1 1234
# 发送指定信号kill -信号名 PID
# 查看所有信号kill -l常用信号:
| 信号 | 编号 | 作用 |
|---|---|---|
| SIGHUP | 1 | 重新加载配置 |
| SIGINT | 2 | 中断(Ctrl+C) |
| SIGKILL | 9 | 强制终止 |
| SIGTERM | 15 | 优雅终止(默认) |
| SIGSTOP | 19 | 暂停进程 |
| SIGCONT | 18 | 继续进程 |
3.2 killall命令
功能:按名称终止进程。
# 终止所有nginx进程killall nginx
# 强制终止killall -9 nginx
# 指定用户killall -u username nginx3.3 pkill命令
功能:按模式终止进程。
# 终止匹配的进程pkill nginx
# 强制终止pkill -9 nginx
# 指定用户pkill -u username
# 指定终端pkill -t pts/03.4 进程优先级:nice和renice
# 以低优先级启动程序nice -n 10 command
# 以高优先级启动程序(需要root)sudo nice -n -10 command
# 修改运行中进程的优先级renice -n 10 -p 1234
# 修改用户所有进程的优先级renice -n 10 -u username优先级范围:-20(最高)到 19(默认为0)
四、后台进程管理
4.1 &符号
# 在后台运行命令command &
# 示例sleep 300 &4.2 nohup命令
功能:使进程在终端关闭后继续运行。
# 基本使用nohup command &
# 指定输出文件nohup command > output.log 2>&1 &
# 示例nohup python3 app.py > app.log 2>&1 &4.3 screen命令
功能:创建可分离的终端会话。
# 安装screensudo apt install screen
# 创建新会话screen -S session_name
# 分离会话(快捷键)Ctrl+A, D
# 查看会话列表screen -ls
# 重新连接会话screen -r session_name
# 终止会话screen -X -S session_name quit4.4 tmux命令
功能:更现代的终端复用器。
# 安装tmuxsudo apt install tmux
# 创建新会话tmux new -s session_name
# 分离会话(快捷键)Ctrl+B, D
# 查看会话列表tmux ls
# 重新连接会话tmux attach -t session_name
# 终止会话tmux kill-session -t session_name五、systemd服务管理
5.1 什么是systemd?
systemd是Linux系统的初始化系统和服务管理器,负责:
- 系统启动
- 服务管理
- 日志管理
- 定时任务
5.2 systemctl命令
# 启动服务sudo systemctl start nginx
# 停止服务sudo systemctl stop nginx
# 重启服务sudo systemctl restart nginx
# 重新加载配置sudo systemctl reload nginx
# 查看服务状态sudo systemctl status nginx
# 启用服务(开机自启)sudo systemctl enable nginx
# 禁用服务sudo systemctl disable nginx
# 查看所有服务systemctl list-units --type=service
# 查看所有运行中的服务systemctl list-units --type=service --state=running
# 查看服务是否启用systemctl is-enabled nginx
# 查看服务是否活跃systemctl is-active nginx5.3 自定义服务文件
服务文件位于 /etc/systemd/system/ 或 /lib/systemd/system/。
创建自定义服务:
sudo vim /etc/systemd/system/myapp.service服务文件内容:
[Unit]Description=My ApplicationAfter=network.target
[Service]Type=simpleUser=ubuntuWorkingDirectory=/home/ubuntu/appExecStart=/usr/bin/python3 /home/ubuntu/app/main.pyExecStop=/bin/kill -SIGTERM $MAINPIDRestart=alwaysRestartSec=5
[Install]WantedBy=multi-user.target参数说明:
- [Unit]:
Description:服务描述After:在什么之后启动
- [Service]:
Type:服务类型(simple、forking、oneshot等)User:运行用户WorkingDirectory:工作目录ExecStart:启动命令ExecStop:停止命令Restart:重启策略(always、on-failure等)RestartSec:重启间隔
- [Install]:
WantedBy:在什么目标下启用
启用自定义服务:
# 重新加载systemd配置sudo systemctl daemon-reload
# 启动服务sudo systemctl start myapp
# 启用开机自启sudo systemctl enable myapp
# 查看状态sudo systemctl status myapp5.4 常见系统服务
| 服务名 | 功能 |
|---|---|
| nginx | Web服务器 |
| apache2 | Web服务器 |
| mysql | 数据库 |
| sshd | SSH服务 |
| cron | 定时任务 |
| docker | 容器服务 |
| NetworkManager | 网络管理 |
| systemd-resolved | DNS解析 |
| ufw | 防火墙 |
5.5 service命令(旧版)
service 是SysVinit时代的服务管理命令,现在很多系统仍支持(实际调用systemctl)。
# 启动服务sudo service nginx start
# 停止服务sudo service nginx stop
# 重启服务sudo service nginx restart
# 查看服务状态sudo service nginx status
# 查看所有服务状态service --status-all提荐:新系统建议使用
systemctl命令代替service。
六、日志管理
6.1 journalctl命令
功能:查看systemd日志。
# 查看所有日志journalctl
# 查看指定服务的日志journalctl -u nginx
# 实时查看日志journalctl -f
# 实时查看指定服务日志journalctl -u nginx -f
# 查看今天的日志journalctl --since today
# 查看最近1小时的日志journalctl --since "1 hour ago"
# 查看指定时间范围journalctl --since "2026-05-25 10:00:00" --until "2026-05-25 12:00:00"
# 查看错误日志journalctl -p err
# 查看指定PID的日志journalctl _PID=1234
# 清理旧日志sudo journalctl --vacuum-time=7dsudo journalctl --vacuum-size=500M6.2 日志文件位置
# 系统日志/var/log/syslog
# 认证日志/var/log/auth.log
# 内核日志/var/log/kern.log
# 应用日志/var/log/nginx//var/log/mysql/
# 软件安装日志/var/log/dpkg.log/var/log/apt/6.3 logrotate日志轮转
功能:自动轮转、压缩、删除旧日志。
配置文件:/etc/logrotate.conf 和 /etc/logrotate.d/
示例配置:
/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript}手动测试:
# 测试轮转sudo logrotate -d /etc/logrotate.conf
# 强制轮转sudo logrotate -f /etc/logrotate.d/nginx七、定时任务
7.1 cron定时任务
功能:按时间计划执行命令。
# 编辑当前用户的cron<a id="crontab"></a>crontab -e
# 查看当前用户的croncrontab -l
# 编辑指定用户的cronsudo crontab -u username -e
# 删除所有croncrontab -rcron格式:
分 时 日 月 周 命令时间字段说明:
| 字段 | 范围 | 说明 |
|---|---|---|
| 分 | 0-59 | 分钟 |
| 时 | 0-23 | 小时(24小时制) |
| 日 | 1-31 | 日期 |
| 月 | 1-12 | 月份 |
| 周 | 0-7 | 星期(0和7都是周日) |
特殊字符:
| 字符 | 含义 |
|---|---|
* | 任意值 |
, | 列表(1,3,5) |
- | 范围(1-5) |
/ | 步长(*/5) |
常用示例:
# 每分钟执行* * * * * /path/to/command
# 每小时执行0 * * * * /path/to/command
# 每天凌晨3点执行0 3 * * * /path/to/command
# 每周一执行0 0 * * 1 /path/to/command
# 每月1号执行0 0 1 * * /path/to/command
# 每5分钟执行*/5 * * * * /path/to/command
# 工作日执行0 9 * * 1-5 /path/to/command
# 多个时间点0 8,12,18 * * * /path/to/command7.2 systemd定时器
功能:systemd版本的定时任务。
创建定时器:
# 创建服务文件sudo vim /etc/systemd/system/backup.service[Unit]Description=Backup Service
[Service]Type=oneshotExecStart=/home/user/backup.sh# 创建定时器文件sudo vim /etc/systemd/system/backup.timer[Unit]Description=Run backup daily
[Timer]OnCalendar=*-*-* 03:00:00Persistent=true
[Install]WantedBy=timers.target启用定时器:
sudo systemctl daemon-reloadsudo systemctl enable backup.timersudo systemctl start backup.timer
# 查看定时器状态sudo systemctl status backup.timersystemctl list-timers7.3 at一次性任务
功能:在指定时间执行一次命令。
# 安装atsudo apt install at
# 5分钟后执行echo "command" | at now + 5 minutes
# 指定时间执行echo "command" | at 10:00 PM
# 交互式at 10:00 PMat> commandat> Ctrl+D
# 查看待执行任务atq
# 删除任务atrm 1八、实战:部署Web应用
8.1 创建应用服务
sudo vim /etc/systemd/system/webapp.service[Unit]Description=Web ApplicationAfter=network.target mysql.service
[Service]Type=simpleUser=www-dataWorkingDirectory=/var/www/appExecStart=/usr/bin/node /var/www/app/server.jsRestart=alwaysRestartSec=5Environment=NODE_ENV=production
[Install]WantedBy=multi-user.target8.2 启用服务
sudo systemctl daemon-reloadsudo systemctl enable webappsudo systemctl start webappsudo systemctl status webapp8.3 配置日志轮转
sudo vim /etc/logrotate.d/webapp/var/log/webapp/*.log { daily missingok rotate 30 compress delaycompress notifempty create 0640 www-data adm postrotate systemctl reload webapp endscript}8.4 配置定时备份
crontab -e添加:
# 每天凌晨3点备份数据库0 3 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
# 每周日凌晨清理日志0 0 * * 0 find /var/log -name "*.gz" -mtime +30 -delete九、总结
本章学习了:
- 进程查看:ps、top、htop、pgrep
- 进程控制:kill、killall、pkill
- 进程优先级:nice、renice
- 后台进程:nohup、screen、tmux
- systemd服务:systemctl管理服务
- 日志管理:journalctl、logrotate
- 定时任务:cron、systemd定时器、at
下一章预告:《Linux操作大全(七):Shell脚本编程详解》
如有疑问或发现错误,欢迎在评论区指出!
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Linux操作大全(六):进程管理与服务管理详解
https://emilia520.icu/posts/linux-manual-06-process/ 部分信息可能已经过时
相关文章 智能推荐
1
Linux操作大全(三):用户与权限管理详解
Linux常见操作 深入讲解Linux用户管理、组管理、sudo权限、PAM认证等知识,让你彻底搞懂Linux的权限体系
2
Linux操作大全(五):网络配置与管理详解
Linux常见操作 全面讲解Linux网络配置,包括IP地址、DNS、防火墙、SSH、网络诊断等知识,让你轻松管理Linux网络
3
Linux操作大全(八):磁盘与存储管理详解
Linux常见操作 全面讲解Linux磁盘管理、文件系统、RAID、LVM等知识,让你轻松管理Linux存储
4
Linux操作大全(二):文件与目录操作详解
Linux常见操作 详细讲解Linux文件和目录的各种操作,包括创建、复制、移动、删除、查找、压缩等,每个命令都有实际示例
5
Linux操作大全(四):软件包管理详解
Linux常见操作 全面讲解Linux软件包管理,包括apt、yum、dnf、snap、源码编译安装等,让你轻松管理Linux上的软件








