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

1.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等。

1.1 help

help 命令只能用于显示内建命令的帮助信息。一不然就会得到下面的结果 :没有与’ls’匹配的帮助主题。
但是这类外部命令一般都有携带 --help参数。这样就可以得到相应的帮助,看到你想要的东西了

在这里插入图片描述

1.2 man

man得到的内容比用 help 更多更详细,而且 man 没有内建与外部命令的区分
因为 man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。

1.3 info

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

man 和 info 就像两个集合,它们有一个交集部分,但与 man 相比,info 工具可显示更完整的 GNU 工具信息。

2.crontab

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

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

安装rsyslog并启动日志记录,在蓝桥网的shiyanlou实验环境是需要手动启动的,在我们本地是默认启动的。

在这里插入图片描述
【命令解释】

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

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

2.1 添加计划任务 crontab -e

在这里插入图片描述
【命令解释】

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

2.2 corntab命令脚本说明

0 3 * * * sudo copy /var/log/alternatives.log /home/shiyanlou/tmp/$(date + %Y-%m-%d)
0 3 * * * sudo rm /home/shiyanlou/tmp/*

时间格式

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 小时个时间间隔执行一次
在这里插入图片描述

在这里插入图片描述在使用crontab -e创建新的cron之后,使用vim编辑器添加如下脚本:

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

【命令解释】

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

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

2.3 查看执行计划是否执行

在这里插入图片描述

在这里插入图片描述
也可以通过日志文件查看执行情况:
在这里插入图片描述

如果没有成功执行,尝试:

sudo crontab -f &

2.4 crond守护进程

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

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

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

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

通过以下2种方式来确定我们的 添加的cron任务 是否成功的在后台启动:
在这里插入图片描述【命令解释】

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命令列出所有的文件及文件夹
在这里插入图片描述
查看到执行任务命令之后在日志中的信息反馈

在这里插入图片描述

2.5 删除计划任务 crontab -r

crontab -r 删除任务

在这里插入图片描述

2.6 cron的配置文件

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

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

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

在这里插入图片描述

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

3. 自主练习

在这里插入图片描述

sudo cron -f &
crontab -e 添加
0 3 * * * sudo rm /home/shiyanlou/tmp/*
0 3 * * * sudo cp /var/log/alternatives.log /home/shiyanlou/tmp/$(date +\%Y-\%m-\%d)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值