一,查看和控制进程
1:查看进程
(1):ps命令——查看静态的进程统计信息
ps
(Process Status)命令提供了关于系统中当前正在运行的进程的信息。它是一个瞬间快照,显示的是执行命令那一刻的进程状态。ps
的强大在于其丰富的选项,可以用来定制输出内容。
- 基本用法:
ps
:显示当前终端下的进程简略信息。ps -ef
或ps ax
:显示所有用户的全部进程,包括进程ID(PID)、父进程ID(PPID)、启动时间、终端类型、CPU占用时间、命令行等详细信息。ps -aux
:也是显示所有用户的进程,但格式略有不同,"a" 表示所有用户,"u" 表示以用户为主的格式输出,"x" 包含没有控制终端的进程。
(2):top命令——查看进程动态信息
top
是一个实时的系统监视器,能够显示系统中各个进程的资源占用状况,包括CPU使用率、内存使用量、虚拟内存大小、进程启动时间等,并且这些信息会持续更新。用户可以通过按键来排序显示内容、选择显示列或者杀死进程。
- 功能特点:
- 动态显示:自动更新显示内容,一般每几秒刷新一次。
- 排序:默认按CPU使用率排序,可以手动调整按内存或其他指标排序。
- 交互性:允许用户在运行时通过键盘输入命令来改变查看模式、排序方式或终止进程。
(3):pgrep命令——查询进程信息
pgrep
是一个基于名称查找并显示进程ID的工具。它比直接使用 ps
加管道到 grep
更简洁高效。
- 使用示例:
pgrep sshd
:查找所有名为sshd
的进程,并输出它们的PID。pgrep -f pattern
:使用模式匹配查找进程,其中-f
表示模式可以出现在命令行的任何位置,而不仅仅是进程名的开始。
(4):pstree命令——查看进程树
pstree
命令以树状图的形式展示系统中的进程关系,直观地展现了进程间的父子关系,对于理解和分析进程依赖关系非常有帮助。
- 使用示例:
pstree
:显示当前用户的进程树。pstree -p
或pstree -p PID
:除了显示进程名称外,还显示每个进程的PID。如果指定了PID,则从该进程开始绘制树。pstree -u username
:显示指定用户的进程树。
2:控制进程
(1)启动进程
1. 手工启动进程
- 直接在命令行启动:最直接的方式是在shell中直接输入命令启动进程,例如:
firefox & # 后面的&符号让Firefox在后台运行
- 使用nohup命令:使进程在用户退出终端后继续运行:
nohup long_running_process &> output.log &
2. 调度启动进程
- cron:定期执行任务,编辑crontab文件(
crontab -e
)来安排进程的自动启动,例如每天凌晨3点执行备份脚本:
0 3 * * * /path/to/backup_script.sh
- at:安排一次性任务在特定时间执行,如:
at 10:30 tomorrow
warning: commands will be executed using /bin/sh
at> /path/to/script.sh
at> <EOT> # 按Ctrl+D结束输入
(2)改变进程的运行方式
1. 挂起当前的进程
- 使用
Ctrl+Z
组合键可以立即挂起当前在前台运行的进程。
2. 查看后台的进程
- 使用
jobs
命令可以查看当前shell下被挂起或后台运行的进程状态。
3. 将后台的进程恢复运行
- 使用
fg
命令将最近一个挂起的进程放回前台:
fg
- 或者指定作业号放回前台:
fg %2
其中2
是通过jobs
命令看到的作业号。
(3)终止进程执行
a. 使用kill命令终止进程
- 终止指定PID的进程:
kill PID
- 强制终止(发送SIGKILL信号):
kill -9 PID
b. 使用killall命令终止进程
- 根据进程名终止所有相关进程:
killall process_name
- 强制终止所有匹配进程:
killall -9 process_name
c. 使用pkill命令终止进程
- 类似于
killall
,但可以根据正则表达式匹配进程名:
pkill process_pattern
- 强制终止:
pkill -9 process_pattern
二,计划任务管理
1. at
一次性任务设置
- 设置一次性任务:使用
at
命令配合时间参数设置一次性任务,例如在明天上午9点执行命令:
echo "command_to_run" | at 9am tomorrow
-
查看
at
队列:使用atq
命令查看当前用户计划的一次性任务列表。 -
删除
at
任务:使用atrm
命令后跟任务编号来删除指定的任务,例如删除任务编号5:
atrm 5
2. 安装顺序(此部分通常涉及软件包管理器操作,以下以Debian系为例)
- 安装at和cron服务:通常系统已经预装了这些工具,如果没有,可以通过包管理器安装,例如:
sudo apt-get update
sudo apt-get install at cron
3. crontab
周期性任务设置
(1)crontab的配置文件和目录
/etc/crontab
:系统级别的crontab配置文件,用于安排系统任务。/etc/cron.d/
:存放额外的系统cron任务配置文件。/etc/cron.hourly/
,/etc/cron.daily/
,/etc/cron.weekly/
,/etc/cron.monthly/
:存放按小时、天、周、月执行的脚本。/var/spool/cron/
:用户cron任务的配置文件存放目录,每个文件名对应一个用户名。
(2)使用crontab
命令管理用户的计划任务
- 编辑用户的计划任务列表:
crontab -e
这将打开当前用户的crontab文件进行编辑,可以添加、修改或删除定时任务。
- 查看用户的计划任务列表:
crontab -l
此命令会列出当前用户的crontab任务列表。
- 删除用户的计划任务列表:
- 编辑crontab文件时(
crontab -e
),可以直接删除不再需要的行。 - 若要清空整个crontab,可以在编辑模式下删除所有内容后保存,或者:
- 编辑crontab文件时(
crontab -r
注意,此命令会直接删除所有crontab条目,不可逆,请谨慎使用。
at
和cron
是Linux系统中强大的计划任务工具,通过合理配置,可以自动化执行各种重复性或一次性任务,极大地提高工作效率。