文章目录
一,查看进程
1.程序和进程的关系
程序
保存在硬盘,光盘等介质中的可执行代码和数据
静态保存的代码
进程
在cpu及内存中运行的程序代码
动态执行代码
父,子进程
每个程序可以创建一个或者多个进程
2.PS --查看静态的进程统计信息
ps | 选项 | 功能 |
---|---|---|
ps | a | 显示当前终端下所有进程信息 |
ps | u | 显示以用户为主的格式显示进程信息 |
ps | x | 显示当前用户所在终端下的进程信息 |
ps | -e | 显示系统内的所有进程信息 |
ps | -l | 使用长格式显示进程信息 |
ps | -f | 使用完整格式显示进程信息 |
例如
ps : 当前会话中打开的进程
ps aux :以简单列表的形式显示进程信息
ps -elf :以长格式显示系统中的进程信息
ps aux | grep 进程名 :查询某一个进程信息
3.top—查看进程的动态信息(动态的进程排名信息)
top
4.pgrep—查询进程信息
命令选项 | 功能 |
---|---|
pgrep -l “xxx” (-l 输出对应的进程名) | 输出进程名中包含xxx的进程及进程号pid |
pgrep -U aaa (-U 特定用户) | 输出由用户aaa运行的进程及进程号pid |
pgrep -t tty1(-t 特定终端) | 输出tty1终端运行的进程及pid号 |
pgrep -l "log" // 查询进程名中包含log
ogrep -l -U teacher-t tty1 //查询teacher 在tty1上运行的进程及进程号pid
5. pstree—查看进程树
pstree -aup //查看当前系统的进程树
选项 | 功能 |
---|---|
a | 列出完整命令信息 |
u | 列出对应的用户名 |
p | 列出其对应的pid号 |
二,控制进程
1. 启动进程
手工启动
前台启动 : 用户输入命令,直接执行程序
后台启动 :在命令行尾加入&符号
例如后台启动:
cp /dev/cdrom mycd.iso & // 将复制镜像文件的任务后台启动
调度启动(进程的调度启动可以通过at, crontab命令进行设置下面笔记会有)
2.改变进程的运行方式
1,挂起当前进程 (ctrl Z)
当程序正在前台执行时(运行尚未结束),按Ctrl +Z 组合键可以将当前进程挂起(调入后台并停止执行)
2,查看后台进程 (jobs -l)
3, 将后台的进程恢复运行(bg 或者fg )
选项 | 功能 |
---|---|
bg | 在后台中暂停执行的任务恢复运行,继续在后台工作 |
fg | 可将后台任务重新恢复到前台运行 |
注意; 这里如果后台任务只有一个的话可以用 bg 1 或者 fg 1 ,但如果是多个任务同时进行时,需要将任务编号作为参数
例如:在下载某软件包的时候,发现速度较慢,为了不耽误其他操作,可用ctrl +Z 将其调入后台并暂停执行
wget ftp://173,17,17,13/Firefox-latest.tar.bz2
此时按ctrl +Z 进行调动并停止
jobs -l // 查看当前挂起的下载任务信息
fg 1 //将后台的进程信息恢复运行
3.终止执行进程
在前台执行某个进程时,可以按ctrl +C 强行中断,但这个命令执行有限。所以以下三种:
1, kill命令终止进程 (kill 进程号 或者 kill -9 进程号)
通过kill 命令终止进程时,需要使用进程的PID号作为参数
例如:SSH服务的sshd 进程的PID号为2869,则执行 kill 2869可将其中止
pgrep -l "sshd" // 查询目标进程的PID号
kill 2869 // 杀死进程
pgrep -l "sshd" // 确认进程已中止,查询已无结果
2,killall 终止进程 (killall 进程名 )
当后台有多个相同名称的进程时可用
vi testfile 1
Ctrl Z
vi testfile 2
Ctrl Z
jobs -l
kill -9 vim // 这时以杀死以上创建的两个vim
3,pkill 命令终止进程
可根据进程的名称,运行该进程的用户,进程所在终端等多种属性终止特定进程。
命令选项
pkill -l “xxx” (-l 输出对应的进程名)
pkill -U aaa (-U 特定用户)
pgrep -l -U “hackli” // 确认目标进程相关信息
3045 bash
pkill -9 -U "hackli" // 强行终止用户hackli的进程
pgrep -l -U “hackli” //确认目标进程已被禁止
4.计划任务管理
1,at 一次性任务设置
使用at 命令设置的计划任务只在指定的时间点执行一次,前提是对应的系统服务atd必须已经运行,需要注意的是,计划执行任务的时间,日期必须安排在当前系统的时刻之后,否则将无法正确设置计划任务。
例如:统计该时间点系统中由root用户运行的进程数量,并将该数值保存到/tmp/ps.root文件中
[ root ]date // 调出时间
[root ]at 14:55 2020-05-05
at>pgrep -u root | wc -l > /tmp/ps.root
at><EOT> //任务设置完成后按ctrl+D 组合键提交
job l at 2016-05-05 14:55
[root ] cat /tmp/ps,root // 等过了计划时间之后验证命令结果
63
例如:设置当天的21:30自动关闭当前系统
【root】at 21:30
at>shutdown -h now
at><EOT>
job 2 at 2016-05-05 21:30
对已经设置了但还未执行的计划任务,可以用atq查询,但已执行过的at任务将不会在表中
[root] atq
若要删除指定编号的at任务,可以使用atrm命令,删除后的at命令将不会被执行,并且不会显示在atq命令的显示结果中,但已经执行过的就无法删除
2,crontab 周期性任务设置
使用crontab 命令·设置的计划任务可以按照预设的周期重复执行,执行软件包:/etc/crontab, 有一个前提条件就是 : 对应的系统服务crond必须已经执行
crontab的配置文件和目录
/etc/crontab ----系统任务配置文件
/etc/cron.*/ ------系统默认设置cron任务的配置文件存放目录
/etc/cron.hourly/ -----存放的是每小时要做的任务
/etc/cron.daily/ ------ 存放的是系统每天要做的任务
/etc/cron.weekly/----- 每周要做的任务
/etc/cron.monthly ---- 每月做的任务
这些目录存放的是可执行脚本,不是配置文件,crond 服务通过run-parts 工具调用执行这些脚本文件,所以要确保位于这些目录位置下的脚本具有可执行权,否则不能运行
/var/spool/cron/ ------用户cron 任务的配置文件存放目录
用户任务计划存储路径 /var/spool/cron/用户名,由用户自行设置的cron计划任务将被保存到目录/var/spool/cron/中,当使用crontab命令创建任务计划,就会在/var/spool/cron/目录下生成一个与用户名相同的文件,例如:root 用户的cron计划任务保存在配置文件/var/spool/cron/root 中
使用crontab命令管理用户的计划任务
选项 | 功能 |
---|---|
crontab -e | 编辑任务计划表 |
crontab -u | 指定所管理的计划任务属于哪个用户,默认时针对当前用户(自己)一般只有root用户有权限使用此选项(用于编辑,删除其他用户的计划任务) |
crontab -l | 列表显示计划任务 |
crontab -r | 删除计划任务列表 |
#crontab -l -u 用户名 root 用户可以查看普通用户做的任务计划,但是普通用户没有权限
查看root用户做的计划
选项 | 功能 |
---|---|
*/ | 代表每间隔 ( */3 每隔3) |
* | 代表任意的意思 |
- | 代表连续的意思 |
, | 代表不连续的意思 |
编辑任务计划:
crontab -e
分钟 时 日期 月份
星期 绝对路径的命令 (操作)