程序和进程的关系
程序
·保存在硬盘、光盘等介质中的可执行代码和数据
·静态保存的代码
进程
·在CPU及内存中运行的程序代码
·动态执行的代码
·父、子进程
·每个程序可以创建一个或多个进程
查看静态的进程统计信息命令 ps
ps命令是Linux系统中最为常用的进程查看工具,主要用于显示包含挡圈运行的各个进程完整信息的静态快照。
a:显示当前终端下所有进程信息,包含其他用户进程。与“x”选项结合时显示系统中所有进程信息
u:使用以用户为主的格式输出进程信息
x:显示当前用户在所有终端下的进程信息
-e:显示系统内的所有进程信息
-l:使用长格式显示进程信息
-f:使用完整的格式显示进程信息
ps的命令常用组合为 ps aux
进程信息:
USER:启动该进程的用户账号的名称。
PID:该进程在系统中的数字ID,在当前系统中是唯一的 ##kill -9 PID号。
TTY:表明该进程在哪个终端上运行,“?”表示不需要终端。
STAT:显示进程当前的状态,例如:S(休眠)、R(运行)、Z(僵尸) 、<(高优先级) 、N(低优先级)、s(父进程)、 +(前台进程)。(僵尸进程要手动关闭)
START:启动该进程的时间。
TIME:该进程占用的CPU时间。
COMMAND:启动该进程的命令名称。
%CPU:占用CPU百分比。
%MEM:占用内存百分比。
VSZ:占用虚拟机内存大小(swap)。
RSS:占用虚拟内存的大小(物理内存)。
查看动态的 进程排名信息命令 top
使用该命令后可以看到当前CPU、内存占用等,而且是实时变化的,在这里看到的信息也更准确。当不用进行操作的时候,使用top,可以使一些会掉线的服务不掉线。换言之,当没有要做的操作时,用top命令开在那就好。
根据特定条件查询进程PID信息命令 pgrep
-l:显示进程名
-U:指定特定用户
-t:指定终端
例:
[root@localhost~]# pgrep -l “log”
2538 rsyslogd
2113 mcelog
[root@localhost~]# pgrep -l -U teacher -t tty1
以树形结构列出进程信息命令 pstree
pstree
-a:显示完整信息
-u:列出对应用户名
-p:列出对应PID号
当系统中没有pstree命令时,可以通过线网安装:
yum -y install psmisc (安装pstree命令)
进程的启动方式
手工启动
·前台启动:用户输入命令,直接执行程序
·后台启动:在命令行尾加入“&”符号(例:cp /dev/cdrom mycd.iso &)
例:wget https://dw.fjweite.cn/syt/windows_x_xxxxxx_x64_2020.iso
(下载线网的一个镜像文件)
进程的前后台调度
Ctrl+Z 挂起 (将当前进程挂起,调入后台并停止执行,进程没有终止)
bg 1 (将后台挂起的进程在前台运行,但Ctrl+Z和Ctrl+C不好用了,一般不用这个)
fg 1 (将后台进程恢复到前台运行,Ctrl+Z和Ctrl+C可以使用,一般用这个)
jobs -l (查看当前终端后台运行的进程任务)
终止进程的运行
Ctrl+C组合键 (中断正在执行的命令)
kill、killall命令
·kill用于终止指定PID号的进程
·killall用于终止指定名称的所有进程
·-9 选项用于强制终止
pkill命令
·根据特定条件终止相应的进程
·常用命令选项
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
打开另一个终端:
su -tom (切入tom终端)
在前一个终端操作:
pgrep -l -U “tom” (查看tom运行的进程)
pkill -9 -U “tom” (强行终止tom运行的进程)
pgrep -l -U “tom” (再次查看tom运行的进程)
计划任务管理
at命令
一次性计划任务
at [HH:MM][yyyy-mm-dd]
例:
[root@localhost~]# date
Sun May 7 10:33:13 EDT 2017
[root@localhost~]# at 10:35 2017-05-07
at>pgrep -U root |wc -l > /tmp/ps.root
at><EOT> (按Ctrl+D组合键提交任务)
job 1 at Sun May 7 10:35:00 2017
[root@localhost~]# cat /tmp/ps.root
202
案例:
·在当天的21:30的时候自动关闭当前系统
[root@localhost~]# at 21:30
at> shutdown -h now
at><\EOT>
job 2 at Sun May 7 21:30:00 2017
[root@localhost~]# atq (查看未执行的任务列表)
2Sun May 7 21:30:00 2017 a root
[root@localhost~]# atrm 2 (删除第2条任务)
[root@localhost~]# atq
crontab命令
·按照预先设置的时间周期(分钟、小时、天…)重复执行用户指定的命令操作
·属于周期性计划任务
·主要设置文件:
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名
管理crontab计划任务
·编辑计划任务
crontab -e [-u 用户名]
·查看计划任务
crontab -l [-u 用户名]
·删除计划任务
crontab -r [-u 用户名]
cat /etc/crontab 计划任务配置文件
systemctl staus crond.serive 查看计划任务程序的状态
systemctl start crond.serive 启动计划任务程序
systemctl stop crond.serive 停止计划任务程序
crontab任务配置的格式
时间周期设置 任务内容设置
【50(分钟) 3(小时) 2(日期) 1(月份) *(星期) run_command(命令)】
字段 | 说明 |
---|---|
分钟 | 取值为从0到59之间的任意整数 |
小时 | 取值为从0到23之间的任意整数 |
日期 | 取值为从1到31之间的任意整数 |
月份 | 取值为从1到12之间的任意整数 |
星期 | 取值为从0到7之间的任意整数,0或7代表星期日 |
命令 | 要执行的命令或程序脚本 |
时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
应用实例
0 17 * * 15 (周一到周五每天17:00)
30 8 * * 1,3,5 (每周一、三、五的8点30分)
0 8-18/2 * * * (8点到18点之间每2小时)
0 * */3 * * (每三天)