mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5
1327 字
4 分钟
Linux操作大全(六):进程管理与服务管理详解
2026-05-25

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 aux
ps -ef
# 查看指定用户的进程
ps -u username
# 查看指定进程
ps -p 1234
# 查看进程树
ps auxf
ps -ejH
# 自定义输出格式
ps -eo pid,ppid,user,%cpu,%mem,command

ps aux输出详解

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 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
# 指定PID
top -p 1234

top界面操作

按键功能
q退出
h帮助
k杀死进程
r调整优先级
M按内存排序
P按CPU排序
1显示每个CPU核心
c显示完整命令
H显示线程

2.3 htop命令#

功能:增强版的top,更友好。

# 安装htop
sudo apt install htop
# 使用htop
htop
# 指定用户
htop -u username

htop优势

  • 彩色界面
  • 支持鼠标操作
  • 可以直接杀死进程
  • 树状视图

2.4 pgrep命令#

功能:按名称查找进程。

# 按名称查找PID
pgrep nginx
# 显示进程名
pgrep -l nginx
# 显示完整命令
pgrep -a nginx
# 精确匹配
pgrep -x nginx
# 指定用户
pgrep -u username nginx

2.5 pidof命令#

功能:查找程序的PID。

# 查找nginx的PID
pidof nginx
# 查找python的PID
pidof python3

三、进程控制#

3.1 终止进程:kill#

# 发送SIGTERM信号(优雅终止)
kill 1234
# 发送SIGKILL信号(强制终止)
kill -9 1234
# 发送SIGHUP信号(重新加载配置)
kill -1 1234
# 发送指定信号
kill -信号名 PID
# 查看所有信号
kill -l

常用信号

信号编号作用
SIGHUP1重新加载配置
SIGINT2中断(Ctrl+C)
SIGKILL9强制终止
SIGTERM15优雅终止(默认)
SIGSTOP19暂停进程
SIGCONT18继续进程

3.2 killall命令#

功能:按名称终止进程。

# 终止所有nginx进程
killall nginx
# 强制终止
killall -9 nginx
# 指定用户
killall -u username nginx

3.3 pkill命令#

功能:按模式终止进程。

# 终止匹配的进程
pkill nginx
# 强制终止
pkill -9 nginx
# 指定用户
pkill -u username
# 指定终端
pkill -t pts/0

3.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命令#

功能:创建可分离的终端会话。

# 安装screen
sudo apt install screen
# 创建新会话
screen -S session_name
# 分离会话(快捷键)
Ctrl+A, D
# 查看会话列表
screen -ls
# 重新连接会话
screen -r session_name
# 终止会话
screen -X -S session_name quit

4.4 tmux命令#

功能:更现代的终端复用器。

# 安装tmux
sudo 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 nginx

5.3 自定义服务文件#

服务文件位于 /etc/systemd/system//lib/systemd/system/

创建自定义服务

sudo vim /etc/systemd/system/myapp.service

服务文件内容:

[Unit]
Description=My Application
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/app
ExecStart=/usr/bin/python3 /home/ubuntu/app/main.py
ExecStop=/bin/kill -SIGTERM $MAINPID
Restart=always
RestartSec=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 myapp

5.4 常见系统服务#

服务名功能
nginxWeb服务器
apache2Web服务器
mysql数据库
sshdSSH服务
cron定时任务
docker容器服务
NetworkManager网络管理
systemd-resolvedDNS解析
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=7d
sudo journalctl --vacuum-size=500M

6.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
# 查看当前用户的cron
crontab -l
# 编辑指定用户的cron
sudo crontab -u username -e
# 删除所有cron
crontab -r

cron格式

分 时 日 月 周 命令

时间字段说明

字段范围说明
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/command

7.2 systemd定时器#

功能:systemd版本的定时任务。

创建定时器

# 创建服务文件
sudo vim /etc/systemd/system/backup.service
[Unit]
Description=Backup Service
[Service]
Type=oneshot
ExecStart=/home/user/backup.sh
# 创建定时器文件
sudo vim /etc/systemd/system/backup.timer
[Unit]
Description=Run backup daily
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target

启用定时器

sudo systemctl daemon-reload
sudo systemctl enable backup.timer
sudo systemctl start backup.timer
# 查看定时器状态
sudo systemctl status backup.timer
systemctl list-timers

7.3 at一次性任务#

功能:在指定时间执行一次命令。

# 安装at
sudo apt install at
# 5分钟后执行
echo "command" | at now + 5 minutes
# 指定时间执行
echo "command" | at 10:00 PM
# 交互式
at 10:00 PM
at> command
at> Ctrl+D
# 查看待执行任务
atq
# 删除任务
atrm 1

八、实战:部署Web应用#

8.1 创建应用服务#

sudo vim /etc/systemd/system/webapp.service
[Unit]
Description=Web Application
After=network.target mysql.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/app
ExecStart=/usr/bin/node /var/www/app/server.js
Restart=always
RestartSec=5
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target

8.2 启用服务#

sudo systemctl daemon-reload
sudo systemctl enable webapp
sudo systemctl start webapp
sudo systemctl status webapp

8.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

九、总结#

本章学习了:

  1. 进程查看:ps、top、htop、pgrep
  2. 进程控制:kill、killall、pkill
  3. 进程优先级:nice、renice
  4. 后台进程:nohup、screen、tmux
  5. systemd服务:systemctl管理服务
  6. 日志管理:journalctl、logrotate
  7. 定时任务:cron、systemd定时器、at

下一章预告:《Linux操作大全(七):Shell脚本编程详解》


如有疑问或发现错误,欢迎在评论区指出!

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Linux操作大全(六):进程管理与服务管理详解
https://emilia520.icu/posts/linux-manual-06-process/
作者
火花花
发布于
2026-05-25
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录