进程信息和定时任务
ps
显示当前系统中正在运行的进程的状态信息。
它是一个非常常用的命令行工具,可以帮助用户了解系统的活动情况,比如哪些进程正在运行、它们的资源消耗情况等。下面是一些关于 ps
命令的基础知识及其常用选项的介绍:
基本用法
-
查看当前终端的所有进程:
ps
-
查看当前用户的全部进程:
ps -u 用户名
-
查看系统中所有的进程:
ps -e 或 ps -A
-
-aux
:显示所有用户的进程,包括没有终端的进程。 -
-ef
:显示所有进程的完整信息,包括父进程和子进程的关系。
常用选项
-a
:显示所有终端机下执行的程序,除了阶段作业领导者之外。-x
:显示没有控制终端的进程。-u
:以用户的角度显示进程信息。-f
:显示完整的、长格式的输出。-l
:显示长格式的输出,与-f
类似但信息更多。-o
:自定义输出列,后面跟列名,如ps -o pid,ppid,cmd
。-p
:指定进程ID,可以指定多个,中间用逗号隔开。-t
:指定终端。-e
:显示所有进程,等同于-A
。-C
:指定命令名来过滤进程。
控制终端(Controlling Terminal)是指与进程关联的终端设备,通常是用户通过终端登录系统时打开的终端窗口。
没有控制终端的进程是指那些没有与任何终端设备关联的进程。这些进程通常是由守护进程(daemon)或后台任务创建的。
有控制终端的进程:通常是在终端窗口中启动的进程,TTY 列显示为终端设备名(如 pts/0)。
没有控制终端的进程:通常是由守护进程或后台任务创建的进程,TTY 列显示为 ?。
实例
-
查看所有进程的详细信息:
ps -ef
-
查看特定用户的进程:
ps -u username
-
查看特定命令相关的进程:
ps -C command_name
-
自定义输出列:
ps -eo pid,ppid,cmd,%mem,%cpu
-🌟 结合其他命令使用:
例如,可以将ps
命令与grep
结合使用,来查找特定的进程:ps -ef | grep mysql ps -ef | grep ip
-
ps -ef | grep user
- 功能:列出所有包含 “user” 字样的进程信息。
- 说明:
ps -ef
命令列出了系统中所有进程的详细信息,然后通过grep user
过滤出包含 “user” 的行。
-
ps -ef | grep user| grep -v grep
- 功能:列出除
grep
进程外的所有包含 “user” 字样的进程信息。 - 说明:先使用
ps -ef | grep user
获取包含 “user” 的所有进程信息,再通过grep -v grep
排除掉grep自身
产生的进程条目。
- 功能:列出除
kill 终止进程
基本语法
kill [选项] 进程号
功能描述:通过进程号杀死进程。
killall 进程名
功能描述:通过进程名杀死进程,也支持通配符。
选项说明
选项 | 功能 |
---|---|
-9 | 表示强制进程立即停止 |
实践案例
- (1)杀死浏览器进程
kill -9 5102
通过使用 kill
命令,用户可以手动终止系统中不需要的进程。kill -9
选项特别强大,因为它会强制终止进程,即使进程处于僵死状态也不例外。这种能力在处理顽固的进程或清理资源占用过高的程序时非常有用。然而,由于其强大的破坏力,应谨慎使用 kill -9
,以免误杀重要服务或导致系统不稳定。
crond 服务管理
systemctl restart crond
:重新启动crond
服务,以确保定时任务服务正常运行。crond
是 Linux 系统中负责管理定时任务的守护进程。
crontab 定时任务设置
- 基本语法:
crontab [选项]
用于管理用户的定时任务。
选项说明
-e
:编辑当前用户的 crontab 定时任务列表。执行该命令后会打开一个文本编辑器(通常是 vim)以编辑任务。-l
:列出当前用户的所有 crontab 定时任务。-r
:删除当前用户的所有 crontab 定时任务。
以下是关于 crond
服务和 crontab
命令的使用示例:
管理 crond
服务
重新启动 crond
服务
sudo systemctl restart crond
这条命令会重新启动 crond
服务,确保定时任务服务正常运行。
启动 crond
服务
sudo systemctl start crond
这条命令用于启动 crond
服务。
停止 crond
服务
sudo systemctl stop crond
停止 crond
服务,所有定时任务将暂停执行。
检查 crond
服务状态
sudo systemctl status crond
查看 crond
服务的当前运行状态。
使用 crontab
命令管理定时任务
查看当前用户的定时任务
crontab -l
显示当前用户的所有定时任务。
编辑当前用户的定时任务
crontab -e
打开当前用户的 crontab
编辑界面,通常使用 vim
编辑器。在该界面中可以添加或修改定时任务,格式如下:
* * * * * <command>
每个星号位置分别表示:分钟、小时、日、月、星期。比如:
-
每天凌晨2点执行备份脚本:
0 2 * * * /path/to/backup.sh
删除当前用户的所有定时任务
crontab -r
删除当前用户的所有定时任务,请小心使用,因为此操作不可撤销。
删除当前用户的特定任务
如果需要删除特定的任务,可以用 crontab -e
进入编辑界面,手动删除该任务的行,然后保存退出。
3. 设置系统定时任务的示例
每天凌晨 3 点清理临时文件
0 3 * * * rm -rf /tmp/*
这个任务会在每天凌晨 3 点清空 /tmp
目录中的文件。
每周日晚上 11 点备份数据库
0 23 * * 0 /path/to/backup_db.sh
每周日晚上 11 点运行 backup_db.sh
脚本备份数据库。