一. 定时任务
1.at 单次执行
两个核心用户文件:/etc/at.allow(白名单),/etc/at.deny(黑名单)
注:当两者同时存在时,at.allow的优先级大于at.deny,后者不生效,root特殊用户,不受名单限制
at [选项] [时间]
-m 当at 工作完成后,无论命令是否输出,都在用E-mail 通知执行 at 命令的用户
-c 工作标识号 显示改at 工作的实际内容
-f 指定所要提交的脚本文件
-t 在指定时间提交工作并执行
-l 列出当前所等待运行的工作
例:at 18:26 090324 表示在24年9月3号28:26 执行 年份有无都可
at 5pm+3 days 表示在三天之后的五点
at 17:00 tomorrow 表示第二天的17点
atq 查看当前等待运行的工作任务 等同于 at -l
atrm 工作号 删除指定工作任务
2.corntab 循环多次执行(安装完操作系统后,默认会安装crond的服务)
与at 相似 两个核心文件 /etc/cron.allow 和 /etc/cron.deny
crontab -e 进入crontab的编辑界面,会打开vim编辑你的任务
* * * * * command
分 时 日 月 周
第一个* 表示 每秒钟执行一次
第二个* 表示 每小时执行一次
第三个* 表示 每天执行一次
第四个* 表示 每月执行一次
第五个* 表示 每周执行一次
" ," 代表不连续的时间
"-" 表示连续的时间范围
"/" 表示每隔多久执行一次命令
"*"
/etc/crontab 文件的每一行定义了一个定时任务,每一行包含七个字段,每个字段用空格分隔开
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 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
查看定时任务
crontab -l
如果删除定时任务,先使用crontab -e进入,手工删除定时任务
在书写 crontab 定时任务时,需要注意以下几个事项:
1) 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
2) crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2021 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
3) 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容 易让管理员混淆。
4) 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。
3.anacron
anacron 通过维护一个状态文件来跟踪上次执行任务的时间,并确保每个任务至少每隔一定的时间间隔执行一次
二.进程管理
1.每个进程都有一个独一无二的pid
查看进程
ps -ef
ps -le (可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级)
ps -aux(查看系统中所有的进程)
选项:
a:显示一个终端的所有进程,除会话引线外;
u:显示进程的归属用户及内存的使用情况;
x:显示没有控制终端的进程;
l:长格式显示更加详细的信息;
e:显示所有进程
结束进程 kill pkill
kill [信号] PID
killall [选项] [信号] 进程名
信号选项
1 重新读取进程
2 中断进程相当于ctrl +C
9 强制结束程序都运行
15 正常结束进程的信号,kill命令的默认信号
2.top 持续监听进程运行状态
top [选项]
常见选项
-d: 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
-p: 进程PID:仅查看指定 ID 的进程;
-u: 用户名:只监听某个用户的进程;
- r:按照 PID 给某个进程重设优先级(Nice)值;
在top 的窗口还可以使用快捷键
- N:按照 PID 排序;
- P:按照 CPU 的使用率排序,默认就是此选项;
- M:按照内存的使用率排序;
Tasks: 217 total, 1 running, 117 sleeping, 3 stopped, 0 zombie
任务 全部 正在运行 睡眠的进程数 正在停止的进程 僵尸进程
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
0.0 us, 用户模式占用的 CPU 百分比
0.1%sy 系统模式占用的 CPU 百分比
0.0%ni 改变过优先级的用户进程占用的 CPU 百分比
99.7%id 空闲 CPU 占用的 CPU 百分比
0.1%wa 等待输入/输出的进程占用的 CPU 百分比
0.0%hi 硬中断请求服务占用的 CPU 百分比
0.1%si 软中断请求服务占用的 CPU 百分比,如果事件在处理时需要大量时间,就交由软终端处
0.0%st st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- PID:进程的 ID。
- USER:该进程所属的用户。
- PR:优先级,数值越小优先级越高。
- NI:优先级,数值越小、优先级越高。
- VIRT:该进程使用的虚拟内存的大小,单位为 KB。
- RES:该进程使用的物理内存的大小,单位为 KB。
- SHR:共享内存大小,单位为 KB。
- S:进程状态。
- %CPU:该进程占用 CPU 的百分比
- %MEM:该进程占用内存的百分比
- TIME+:该进程共占用的 CPU 时间
- COMMAND:进程的命令名
vmstat
vmstat 是一个常用的 Linux 命令行工具,用于报告有关系统虚拟内存、进程、中断和 CPU 活动的统计数据
procs -----------memory---------- ---swap-- -----io---- --system-- ------cpu-----
2 r b swpd free buff cache si so bi bo in cs us sy id wa st
3 2 0 0 1480660 2108 176612 0 0 9 2 56 107 0 0 100 0 0
-
procs
- r:正在运行或等待运行的进程数(runnable processes)。当前值为 2,意味着有两个进程正在运行或等待运行。
- b:在不可中断睡眠状态(blocked processes)。当前值为 0,意味着没有进程处于不可中断睡眠状态。
-
memory
- swpd:当前使用的虚拟内存(swap)大小。当前值为 0 KB,意味着没有进程被换出到磁盘。
- free:当前空闲的物理内存大小。当前值为 1480660 KB,意味着有大约 1.4 GB 的空闲内存。
- buff:当前用作缓冲区的物理内存大小。当前值为 2108 KB,意味着有大约 2 MB 的内存被用作缓冲区。
- cache:当前用作缓存的物理内存大小。当前值为 176612 KB,意味着有大约 176 MB 的内存被用作缓存。
-
swap
- si:从磁盘交换到内存的总页数。当前值为 0 KB/秒,意味着没有数据从磁盘交换到内存。
- so:从内存交换到磁盘的总页数。当前值为 0 KB/秒,意味着没有数据从内存交换到磁盘。
-
io
- bi:从块设备读取的总页数。当前值为 9 KB/秒,意味着每秒有 9 KB 的数据从块设备读取到内存。
- bo:写入块设备的总页数。当前值为 2 KB/秒,意味着每秒有 2 KB 的数据从内存写入块设备。
-
system
- in:每秒发生的中断次数。当前值为 56 次/秒。
- cs:每秒发生的上下文切换次数。当前值为 107 次/秒。
-
cpu
- us:用户态占用的 CPU 百分比。当前值为 0%,意味着用户态没有占用 CPU。
- sy:内核态占用的 CPU 百分比。当前值为 0%,意味着内核态没有占用 CPU。
- id:空闲时间占用的 CPU 百分比。当前值为 100%,意味着 CPU 完全处于空闲状态。
- wa:等待 I/O 操作完成的时间百分比。当前值为 0%,意味着没有等待 I/O 操作完成的时间。
- st:虚拟机占用的 CPU 百分比。当前值为 0%,意味着没有虚拟机占用 CPU。
三.工作管理
1、 Linux命令放入后台运行
两种方法:
1)把命令放入后台的方法是在命令后面加入 空格 &
,前面加nohup
2)使用ctrl +z 的方式放入后台 此时进程的状态是暂停的
注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的
2,jobs [选项] 查看当前终端放入后端的工作
-l 列出进程的 PID 号
-n 只列出上次发出通知后改变了状态的进程
-p 只列出进程的 PID 号
-r 只列出运行中的进程
-s 只列出已停止的进程
3、 把后台命令恢复在前台执行:fg
fg % 工作号
4、 把后台暂停的工作恢复到后台执行:bg
bg % 工作号