1、Linux计划任务
未来的某个时间执行一次任务,执行结果会通过邮件通知
1.1、定时任务:at batch
1.2、周期性任务:crontab
- 系统任务调度
/etc/crontab - 用户任务调度
/var/spool/cron
1.3、mail
- mail -s “邮件主题” -c “抄送地址” -b “密送地址” -f 发送人地址 -F 发件人姓名 <
echo “test” | mail -s test nebulalinux03 - at :
- 时间定义
hh:mm 12:00
noon teatime
AM PM 8am 9pm
2019-8-11 2019/8/11
+ 5 minutes hours days weeks
today tomorrow - 语法结构
at 选项 参数
-q 列出任务
-f 从文件中读取
-l 列出任务
-d 指定删除
-v 列出已执行未删除的任务
-V 列出版本号
-c 查看作业内容 - atq
- atrm
1.4、cron命令
- 时间表示法:
- 特定值
40 8 * * * -
* * 8 * * *
- 连续值
8-10 9-17 - 离散值
8、10、12 - 定义时间点 时间步长
/4
注意:定义步长需要能被整除
例:
5 * * * * 每小时执行一次,每小时的第五分钟执行一次
3 4 * * 5 每周执行一次,每周五的3:04执行一次
5 6 7 * * 每月执行一次,每月七号的5:06执行一次
7 8 9 10 * 每年执行一次,每年十月九号的8:09执行一次
8 9 * * 3,4 每周三周四的8:09执行一次
0 8,9,20 * * 6, 7 每周六周天的8、9、20点执行一次
*/5 * * * * 每隔五分钟执行一次
1.5、crontab 语法结构
- -e 编辑任务
- -l 列出任务列表
- -r 移除任务
- -i 移除时确认
- -u
练习:
1、每一分钟执行一次commond
2、每小时的第3分钟和第15分钟执行一次command
3、从早上的8点到12点的第3分钟和第15分钟执行一次command
4、每隔两天的上午11点到18点之间的第3分钟和第15分钟执行一次command
5、每晚18点重启网卡配置
6、每周天凌晨1点重启apache 服务
7、每小时重启一次 commond 服务
8、每月的4号与每周的周一到周五执行网卡重启
9、每年的1月1号重启网卡
10、每晚的11点到早上7点之间,每小时重启一次网卡
(1)* * * * * command
(2)3,15 * * * * command
(3)3,15 8-12 * * *command
(4)3,15 11-18 */2 * * command
(5)0 18 * * * service network restart
(6)0 1 * * 0 /usr/local/apache/bin/httpd restart
(7)0 * * * *
(8)* * 4 * 1-5
(9)* * 1 1 * service network restart
(10)* 23-7/1 * * *
1.6、计划任务规范
- 脚本要规范,脚本存放位置要规范,便于维护
- 定时任务要写注释
- 执行的脚本要带绝对路径
- 执行结果的标准输出或者错误输出 >/dev/null
- 可以以命令完成的任务,也要写在脚本
- 分用户执行
2、Linux进程管理
2.1、程序:
一组指令以及参数集合,按照相应的逻辑控制计算机完成特性任务
2.2、进程:
运行的程序,动态。操作系统上的基本单位,有自己的生命周期、状态。
- 操作系统以进程为单位分配系统资源
- 操作系统用来管理、控制、分配系统硬件资源
- 每个进程运行是独立的
- 具有独立的地址空间,运行状态
- 多个程序同时有运行,每一个程序就是一个进程
- 子进程都有父进程,子进程是由父进程产生的,子进程会继承父进程的资源、权限,而且子进程也会运行自己的程序
2.3、线程
- 一个进程可以有多个线程
- 线程无法独立运行,当一个进程派生的所有线程都执行成功后,这个进程才会运行
- 程序和线程都有自己完整的一套资源集
2.4、进程的生命周期
- centos6以“init”为第一个父进程
- centos7以“systemd”为第一个父进程
- 进程状态:准备/等待状态,就绪状态,运行状态,阻塞状态,休眠状态,死亡状态
2.5、进程管理工具
-
pstree 进程树 查看进程之间的关系
-
-A 各进程树之间的连接以ASCII码字符来连接
-
-U 各个进程树之间的连接以utf8字符来连接
-
-p 显示pid
-
-u 显示用户
-
ps
-
-a 显示所有进程
-
-A 所有进程都显示出来,与-e具有同样的效用
-
-u 显示以用户为主的进程
-
x 和au配合使用,显示完整信息
-
-l 较长、较详细的将该pid的信息列出来
-
-f 做一个更为完整的输出
-
pgrep
-
-l 同时显示进程名和pid
-
-o 当匹配多个进程时,显示进程号最小的那个
-
-n 当匹配多个进程时,显示进程号最大的那个
-
kill
-
-0 查看进程状态,不杀死
-
-9 杀死过程
-
-w 等待进程死亡
-
-l 列出已知信号
-
u 指定用户
-
killall(可杀死所有同名进程)
[root@localhost ~]# kill -9 bash -
pkill(ps与kill的结合)
-
htop
-
vmstat (参数)
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的cup的使用情况,内存使用,虚拟内存交换情况,io读写情况。 -
-v 显示vmstat版本信息
-
-a 显示活跃和非活跃内存
-
-d 显示各个磁盘相关统计信息
-
-D 显示磁盘总体信息
-
-p 显示指定磁盘分区统计信息
-
-t 在输出信息的时候也将时间一并输出来
-
lsof (参数)
-
lsof -u uname/uid 显示归属uname/uid的进程情况
-
lsof -g gname/gid 显示归属gname/gid的进程情况
-
lsof -i 用于显示符合条件的进程情况
-
lsof -p 1234 列出进程号为1234的进程所打开的文件
-
lsof -d 4 显示使用fd为4的进程
-
lsof +d 显示目录下被进程开启的文件
-
lsof +D 显示目录下被进程开启的文件,并搜索目录下的目录
-
lsof -c abc 显示出以字母abc开头进程所打开的文件
-
lsof -u username 列出某个用户打开的文件信息
2.6、进程优先级
-
进程优先级划分[0-139]
0——99 有效的实时优先级,人不可以调整
100——139 非有效的实时优先级(或静态优先级),人可以通过nice值调整这段优先级 nice值[-20——19]
Nice值越小优先级越高 -
nice值的调整
top “r” ——>enter 输入pid——>enter 输入nice值——>enter
htop F7(-) F9(+)
2.7、 进程的状态
- sleeping 睡眠状态
- stopping 停止状态
- running 运行状态
- zombie 僵尸状态
特点: 实时变化的
2.8、进程在前台后台的运行、作业控制
-
在前台一次只能运行一个作业
-
在后台可以运行多个作业
-
[root@localhost ~]# ping 192.168.108.3 > /dev/null 2>&1 &
-
jobs 查看后台作业与终端、不同终端上的作业要在对应终端上查看
[root@localhost ~]# jobs
[1]+ Running ping 192.168.108.3 > /dev/null 2>&1 & -
fg %job编号 把作业调到前台运行
-
ctrl+z 挂起前端正在运行的作业
-
bg %job编号 把后台作业运行起来
-
kill %job编号 先停止再杀死
-
ping 192.168.108.3 & 已经在后台运行,在前台输出结果,不影响前台作业执行
jobs
2.9、Linux系统结构、在x86平台的CPU,是如何执行内核程序和用户程序的
- ring0:与硬件相关或者硬件寄存器、总线控制有关的程序——内核程序
- ring1-2:驱动程序或者与虚拟化相关的程序
- ring3:用户态程序
2.10、/proc文件系统、正在运行的内核信息映射
主要输出:进程信息、内存资源信息、磁盘分区信息等等
- /proc/cpuinfo CPU的信息
- /proc/meminfo RAM使用的相关信息
- /proc/devices 已经加载的设备并分类
- /proc/filesystems 内核当前支持的文件系统类型
- /proc/mdstat 多硬盘,RAID配置信息
- /proc/mount 系统中使用的所有挂载
- /proc/stat 所有CPU活动信息
- /proc/uptime 系统已经运行了多久
- /proc/swaps 交换空间的使用情况
- /proc/version Linux内核版本的gcc版本
- /proc/driver 驱动信息
- /proc/fs 文件系统信息
- /proc/net 网卡设备信息
- /proc/tty tty设备信息
- /proc/diskstats 取得磁盘信息
- /proc/vmstat 虚拟内存统计信息
2.11、/sys文件系统,硬件设备的驱动程序信息
- /sys/devices /sys文件系统最重要的目录结构
- /sys/dev 该目录下有字符设备(block)和块设备(char)两个目录
- /sys/class 按功能分类设备
- /sys/block 代表着系统中当前被发现的所有设备
- /sys/fs 该目录用来描述系统中所有的文件系统