一,查看进程和控制进程
1,查看进程
1,程序和进程的关系
- 程序
- 保存在硬盘,光盘等介质中的可执行代码和数据
- 静态保存的代码
- 进程
- 1,在cpu及内存中运行的程序代码
- 2,动态执行代码
- 3,父,子进程
- 4,每个程序可以创建一个或者多个进程
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号 |
2,控制进程
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” //确认目标进程已被禁止
二,计划任务管理
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命令的显示结果中,但已经执行过的就无法删除
【root】atrm 2 //删除第2条at执行任务
【root】atq // 确认第2条任务已被删除
2,crontab 周期性任务设置
使用crontab 命令·设置的计划任务可以按照预设的周期重复执行,执行软件包:/etc/crontab, 有一个前提条件就是 : 对应的系统服务crond必须已经执行
1,crontab的配置文件和目录
1, /etc/crontab ----系统任务配置文件
[root@server1 ~]# cat /etc/crontab
SHELL=/bin/bash //设置执行计划任务的shell环境
PATH=/sbin:/bin:/usr/sbin:/usr/bin //定义可执行命令及程序的路径
MAILTO=root // 将任务输出信息发送到指定用户的邮箱
HOME=/ // 执行任务计划时使用的主目录
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
[root@server1 ~]#
2,/etc/cron.*/ ------系统默认设置cron任务的配置文件存放目录
- /etc/cron.hourly/ -----存放的是每小时要做的任务
- /etc/cron.daily/ ------ 存放的是系统每天要做的任务
- /etc/cron.weekly/----- 每周要做的任务
- /etc/cron.monthly ---- 每月做的任务
这些目录存放的是可执行脚本,不是配置文件,crond 服务通过run-parts 工具调用执行这些脚本文件,所以要确保位于这些目录位置下的脚本具有可执行权,否则不能运行。
3,/var/spool/cron/ ------用户cron 任务的配置文件存放目录
用户任务计划存储路径 /var/spool/cron/用户名
由用户自行设置的cron计划任务将被保存到目录/var/spool/cron/中,当使用crontab命令创建任务计划,就会在/var/spool/cron/目录下生成一个与用户名相同的文件,
例如:root 用户的cron计划任务保存在配置文件/var/spool/cron/root 中
2,使用crontab命令管理用户的计划任务
选项 | 功能 |
---|---|
crontab -e | 编辑任务计划表 |
crontab -u | 指定所管理的计划任务属于哪个用户,默认时针对当前用户(自己)一般只有root用户有权限使用此选项(用于编辑,删除其他用户的计划任务) |
crontab -l | 列表显示计划任务 |
crontab -r | 删除计划任务列表 |
#crontab -l -u 用户名 root 用户可以查看普通用户做的任务计划,但是普通用户没有权限查看root用户做的计划
选项 | 功能 |
---|---|
*/ | 代表每间隔 ( */3 每隔3) |
* | 代表任意的意思 |
- | 代表连续的意思 |
, | 代表不连续的意思 |
- 编辑任务计划:
crontab -e
分钟 时 日期 月份 星期 绝对路径的命令 (操作)