Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab

Linux下的帮助命令

内建命令与外部命令

内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。

help

help 命令只能用于显示内建命令的帮助信息

Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab

man

man得到的内容比用 help 更多更详细,而且 man 没有内建与外部命令的区分

info

# 安装 info
$ sudo apt-get update
$ sudo apt-get install info

与 man 相比,info 工具可显示更完整的帮助

crontab

crontab是Linux系统的计划工具,用来定期执行程序的命令。
新建的cron任务并不会立即执行,至少要过2分钟才可以。当然可以重启cron来马上执行。

Linux的任务调度工作分为以下两类:
1、系统执行的工作:系统周期性执行的工作,如备份系统数据、清理缓存。
2、 个人执行的工作:某个用户定期要做的工作。

安装rsyslog并启动日志记录,在蓝桥网的shiyanlou实验环境是需要手动启动的

Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab
【命令解释】

sudo service rsyslog start #启动rsyslog日志记录,开启该日志记录后以便我们可以通过日志中的信息来了解我们的任务是否真正的被执行了
sudo crontab -f & # 蓝桥网实验环境中,crontab 也是不被默认启动的,需要手动启动

注意:在自己本地中 Ubuntu,上述服务都是会默认自行启动不需要手动启动

添加计划任务 crontab -e

Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab
【命令解释】

crontab -e # 添加计划任务,第一次启动时会提示选择编辑工具 选择2vim方式编辑,便会编辑添加计划的的文件

corntab命令脚本说明

时间格式

f1 f2 f3 f4 f5 program

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序。其余类似。
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行。
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次
Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab

Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab在使用crontab -e创建新的cron之后,使用vim编辑器添加如下脚本:

*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)

【命令解释】

 脚本* * * * ,f1到f5皆为*,意即每分钟。
该任务是每分钟我们会在/home/shiyanlou目录下创建一个以当前的年月日时分秒为名字的空白文件

“%”在crontab文件中,有结束命令行、换行、重定向的作用,前面需加“\”转义。

crond守护进程

虽然我们添加了任务,但是如果 cron 的守护进程并没有启动,它根本都不会监测到有任务,更不可能帮我们执行。

crond是Linux下用来周期性执行某种任务或等待某些事件的一个守护进程,与Windows下的计划任务类似。当安装完操作 系统后,默认会安装此服务工具,并且会自动启动crond进程,crod进程每分钟哪个会定期检查是否有要执行的任务,如果有则自动执行该任务。

可以通过以下命令查看守护进程

service crond start # 开启守护进程
service crond stop # 关闭守护进程
service crond restart # 重启守护进程
service crond reload # 重新载入配置
service crond status # 查看进程状态

通过以下2种方式来确定我们的 添加的cron任务 是否成功的在后台启动:
Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab【命令解释】

ps(process  status)命令可以实现对进程进行检测和控制
grep(global search regular expression and print out the line)是一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来
ps  a # 显示现行终端机下的所有程序 包括其他用户程序
ps u # 以用户为主的格式来显示程序状况 
ps x #显示所有程序,不以终端机来区分。

所以ps是显示当前状态处于running的进程,grep表示在这些里搜索,而ps aux是显示所有进程和其状态。

ll命令列出所有的文件及文件夹
Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab
查看到执行任务命令之后在日志中的信息反馈

Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab

删除计划任务 crontab -r

crontab -r 删除任务

Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab

cron的配置文件

每个用户使用 crontab -e 添加计划任务,都会在 /var/spool/cron/crontabs 中添加一个该用户自己的任务文档,这样是为了隔离。

如果是系统级别的任务,只需使用sudo 权限编辑 /etc/crontab 文件即可

cron 服务监测时间最小单位是分钟,所以 cron 会每分钟去读取一次 /etc/crontab 与 /var/spool/cron/crontabs 里面的內容。

Linux学习笔记(六)—— Linux帮助命令和 任务计划crontab

每个目录的作用:
/etc/cron.daily,目录下的脚本会每天执行一次,在每天的6点25分时运行;
/etc/cron.hourly,目录下的脚本会每个小时执行一次,在每小时的17分钟时运行;
/etc/cron.monthly,目录下的脚本会每月执行一次,在每月1号的6点52分时运行;
/etc/cron.weekly,目录下的脚本会每周执行一次,在每周第七天的6点47分时运行;

上一篇:【linux】循序渐进学运维-基础篇-crontab计划任务


下一篇:Linux中crontab的一些坑