文章目录
前言一、程序与进程关系1.1 程序1.2 进程1.2.1 查看进程信息ps1.2.1.1 ps命令1.2.1.2 查看进程
1.2.2 查看进程信息top1.2.2.1 top命令
1.2.3 查看进程信息pgrep1.2.3.1 pgrep命令
1.2.4 查看进程信息pstree1.2.4.1 pstree命令
1.2.5 进程的启动方式1.2.5.1 手工启动1.2.5.2 调度启动
1.2.6 进程的前后台调度1.2.6.1 Ctrl+Z组合键1.2.6.2 jobs命令1.2.6.3 fg命令
1.2.7 终止进程的运行1.2.7.1 Ctrl+C组合键1.2.7.2 kill、killall命令
1.2.8 操作验证1.2.9 终止进程的运行2-21.2.9.1 pkill命令1.2.9.2 常用命令选项
二 计划任务管理2.1 at命令2.2 crontab命令2.2.1 按照预先设置的时间周期(分钟,小时,天....)重复执行用户指定的命令操作2.2.2 属于周期性计划任务2.2.3 主要设置文件
2.3 管理crontab计划任务2.3.1 编辑计划任务2.3.2 查看计划任务2.3.3 删除计划任务
2.4 crontab任务配置的格式2.4.1 命令格式2.4.2 时间周期说明2.4.3 时间数值的特殊表示方法
2.5 ntpdate2.5.1 ntpdate:时间同步 (针对设备时间不同步的现象)2.5.2 解决方法
总结
前言
通过之前的学习,了解了Linux系统的引导过程,以及如何控制系统服务,优化系统服务。但这仍然是远远不够的,本文就对如何掌握crontab 计划任务管理,学会查看管理进程进行了简单的讲解。
一、程序与进程关系
1.1 程序
1.保存在硬盘,光盘等介质中的可执行代码和数据
2.静态保存的代码
1.2 进程
1.在CPU及内存中运行的程序代码
2.动态执行的代码
3.父,子进程
4.每个程序可以创建一个或多个进程(多个依赖包程序)
1.2.1 查看进程信息ps
1.2.1.1 ps命令
查看静态的进程统计信息
[root@localhost
~]#ps aux
1.2.1.2 查看进程
ps a 显示当前终端下的所有进程信息
u 显示以用户为主的格式显示进程信息
x 显示当前用户在所有终端下的进程信息
-e 显示系统内的所有进程信息
-l 使用长格式显示进程信息
-f 使用完整格式显示进程信息
例: ps aux ps -elf 二选一
ps aux
| grep sshd
ps aux 列出当前sshd用户在所有终端下进程信息
进程号使用CPU量使用内存量 命令
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 125500 4116 ? Ss 22:46 0:00 /usr/lib/systemd/systemd --switched-root --system --
root 2 0.0 0.0 0 0 ? S 22:46 0:00 [kthreadd]
1.2.2 查看进程信息top
1.2.2.1 top命令
查看动态的进程排名信息
[root@localhost
~]#top
查看进程动态信息(动态更新)
top 将CPU,内存排名比较高,占用比较高的排在前面,占用低的排在后面
1.2.3 查看进程信息pgrep
1.2.3.1 pgrep命令
根据特定条件查询进程PID信息
-l:显示进程号
-U;指定特定用户
-t:指定终端
查询进程信息
pgrep -l ”xxx” 输出进程名中包含xxx的进程及进程号(pid)
-U aaa 输出由用户aaa运行的进程及进程号(pid)
-t tty1 输出tty1终端上运行的进程及pid号
例如:
查看sshd的输出进程
pgrep
-l
"sshd"
查看root用户的进程
pgrep
-U root
[root@client1
~]# pgrep
-U zjq 查看用户运行的进程及进程号,无反应,原因
;没有启动过
[root@client1
~]# su zjq 切换用户
[zjq@client1 root
]$ su
密码: 输入密码,代表用户已登录
[root@client1
~]# pgrep
-U zjq
3844
3881
[root@client1
~]# pgrep
-l
-U zjq
3844 bash 用户登录先加载shell
3881 su
pgrep
-l
-t pts
/0
1.2.4 查看进程信息pstree
1.2.4.1 pstree命令
以树形结构列出进程信息
pstree
-aup
-a
:显示完整信息
-u:列出对应用户名
-p
:列出对应PID号
pstree
-aup 把当前所有进程列出,并以父子形式显示
1.2.5 进程的启动方式
1.2.5.1 手工启动
前台启动:用户输入命令,直接执行程序(执行过程可见,删除,新建...)默认都是前台
后台启动:在命令行尾加入“&”符号 (执行过程不可见)
[root@localhost
~]# cp
/dev
/cdrom mycd
.iso
&
[1] 28454
输出信息中包括后台任务序号、PID号
1.2.5.2 调度启动
使用at命令,设置一次性计划任务
使用crontab命令,设置周期性计划任务
1.2.6 进程的前后台调度
1.2.6.1 Ctrl+Z组合键
将当前进程挂起,即调入后台并停止执行
1.2.6.2 jobs命令
查看处于后台的任务列表
1.2.6.3 fg命令
将后台进程恢复到前台运行,可指定任务序号
例如:
[root@localhost
~]# jobs
-l
[1]- Stopped cp
/dev
/cdrom mycd
.iso
[2]+ Stopped top
[root@localhost
~]# fg
1
jobs -l 查看处于后台的任务列表
vim 1.txt 在定义1.txt时按Ctrl+Z 将其挂起并调入后台
fg 2 将后台进程2恢复到前台运行
1.2.7 终止进程的运行
1.2.7.1 Ctrl+C组合键
中断正在执行的命令
1.2.7.2 kill、killall命令
kill用于终止指定PID号的进程
killall用于终止指定名称的所有进程
-9选项用于强制终止
例如: jobs -l 查看处于后台的任务列表 kill 3645 杀死进程3645,无反应 kill -9 3645 强制杀死3645
vim
3.txt 在定义
3.txt时按Ctrl
+Z 将其挂起并调入后台
vim
5.txt 在定义
5.txt时按Ctrl
+Z 将其挂起并调入后台
jobs
-l 查看处于后台的任务列表
killall
-9 vim 强制杀死所有vim名称的进程
1.2.8 操作验证
yum
-y install httpd 安装一个httpd 程序
服务启动
systemctl start httpd
显示当前终端下所有进程
ps aux
| grep httpd
强制杀死指定名称httpd的所有进程
killall
-9 httpd
查看处于后台的任务列表
jobs
-l
1.2.9 终止进程的运行2-2
1.2.9.1 pkill命令
根据特定条件终止相应的进程
1.2.9.2 常用命令选项
-U: 根据进程所属的用户名终止相应进程 -t: 根据进程所在的终端终止相应进程
例如
[root@localhost
~]# pgrep
-I
-U
"hackli" 确认进程
3045 bash
[root@localhost
~]# pkill
-9 -U
"hackli" 强制删除进程
[root@localhost
~]# pgrep
-l
-U
"hackli" 查看进程
二 计划任务管理
2.1 at命令
一次性计划任务
at
[HH
:MM
] [yyyy
-mm
-dd
]
时 分 年 月 日
例如: 1.
[root@localhost
~]# date 获取当前的时间
Sun May
7 10:33:13 EDT
2017
[root@localhost
~]# at
10:35 2017-05-07
at
> pgrep
-U root
| wc
-I
> /tmp
/ps
.root
pgrep
:查看进程信息
-U
:指定特定用户
wc
:统计
-l:统计行数
at
> <EOT
> 按CtrI
+D键提交任务
job
1 at Sun May
7 10:35:002017
[root@localhost
~]# cat
/tmp
/ps
.root
2.在当天的21:30时自动关闭当前系统
[root@localhost
~]# at
21:30
at
> shutdown
-h now 自动关闭
at
> <EOT
>
job
2 at Sun May
7 21:30:00 2017
[ropt@localhost
~]# atq 查看未执行的任务列表
2 ) Sun May
7 21:30:00 2017 a root
[root@localhost
~]# atrm
2 删除第
2条任务
[root@localhost
~]# atq
[root@client1
~]# at
14:20 2020-10-20
at
> touch
/root
/a1
.txt 创建文件
at
> mkdir
/root
/aaa 创建目录
at
> reboot 重启
at
> <EOT
>
job
3 at Tue Oct
20 14:20:00 2020
[root@client1
~]# ls
-lh 查看
[root@client1
~]# date 查看当前日期
2020年
10月
20日 星期二
14:23:55 CST
[root@client1
~]# at
15:29 2020-10-20
at
> touch
/root
/az
.txt 创建文件
at
> mkdir
/root
/ab 创建目录
at
> reboot 重启
at
> <EOT
>
job
8 at Tue Oct
20 15:29:00 2020
[root@client1
~]# atq 查看未执行的任务进程
8 Tue Oct
20 15:29:00 2020 a root
[root@client1
~]# atrm
8 删除第
8条任务
[root@client1
~]# atq
2.2 crontab命令
root用户可以查看其它用户设置的任务计划,其它用户没有权限查看root用户设置的任务计划
2.2.1 按照预先设置的时间周期(分钟,小时,天…)重复执行用户指定的命令操作
2.2.2 属于周期性计划任务
2.2.3 主要设置文件
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名
vi
/etc
/crontab 定义文件
SHELL
=/bin
/bash
PATH
=/sbin
:/bin
:/usr
/sbin
:/usr
/bin 环境变量
MAILTO
=root 文件发送目标
cd
/etc
/cron
.*/
cd
/var
/spool
/cron
/
2.3 管理crontab计划任务
2.3.1 编辑计划任务
crontab
-e
[-u 用户名
]
2.3.2 查看计划任务
crontab
-l
[-u 用户名
]
2.3.3 删除计划任务
crontab
-r
[-u 用户名
]
root用户可以查看,删除其他用户的任务计划 -u :指定用户
2.4 crontab任务配置的格式
2.4.1 命令格式
时间周期设置 任务内容设置
50 3 2 1 * run_command
分钟 小时 日期 月份 星期 命令
2.4.2 时间周期说明
字段 说明
分钟 取值为从0到59之间的任意整数
小时 取值为从0到23之间的任意整数
日期 取值为从1到31之间的任意整数
月份 取值为从1到12之间的任意整数
星期 取值为从0到7之间的任意整数,0或7代表星期日
命令 要执行的命令或程序脚本(绝对路径,使用which)
2.4.3 时间数值的特殊表示方法
* :表示该范围的任意时间
,:表示间隔的多个不连续时间点
- :表示一个连续的时间范围
/ :表示间隔的时间频率
例如:
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一,三,五的8点30分
0 8-18/2 * * * 8点到18点之间每2小时
0 * */3 * * 每3天
which touch 查看绝对路径
date 查看当前时间
crontab
-e 编辑任务计划
09 16 * * * /usr
/bin
/touch ky07 在
16:09创建一个文件叫ky07
crontab
-l 查看计划任务
su zjq 切换用户
crontab
-e 编辑计划任务
* * * * * /usr
/bin
/touch zjq
crontab
-l 查看计划任务
crontab
-l
-u root 指定查看root的交换任务
must be privileged to use
-u 没有权限
su root 切换到root用户
密码: 输入密码
crontab
-l
-u zjq 查看用户zjq的计划任务
crontab
-r
-u zjq 删除用户zjq的计划任务
crontab
-l
-u zjq 查看用户zjq的计划任务
no crontab
for zjq 查询不到用户zjq的计划任务
2.5 ntpdate
2.5.1 ntpdate:时间同步 (针对设备时间不同步的现象)
2.5.2 解决方法
date 获取当前日期
ntpdate ntp
.aliyun
.com 与阿里的服务器域名时间同步
20 Oct
16:28:12 ntpdate
[3608]: step time server
203.107.6.88 offset
2.725085 sec
which ntpdate 查看ntpdate的绝对路径
/usr
/sbin
/ntpdate
crontab
-e 编辑计划任务
*/30 * * * * /usr
/sbin
/ntpdate ntp
.aliyun
.com
每
30分钟 与阿里的服务器域名时间同步
30 * * * * :意思是
30分钟为限(例如:
1:30,2:30,
...)进行操作
总结
通过以上知识命令的理论,命令的讲解,总体可以理解进程与计划任务管理的基础结构。