返回首页 两个月精通 Shell 脚本

shell 学习五十七天 ----linux 任务管理,针对上一讲的总结和扩展

linux 任务管理

在 linux 下有两类任务管理, 分别是一次性和周期性。 一次性是 atbatch,周期性又分为系统任何和用户任务。

一次性任务:

  1. 命令格式:at [选项] time
  2. 选项: ```选项名 说明 -I(大写的 i) 指定队列 -f 指定文件 -l(小写的 L) 查看队列 -d 删除队列
  3. time:teatime noon midnight teatime tomorrow now
  4. 执行方式:用 at 命令有交互式方式和批处理两种方式。交互式是用户输入 at [option] time 后等待用户再光标处继续输入要执行的命令,然后用 ctrl+d 提交任务。批处理就要用到 -f 了,是用户先将要执行的命令写入文件,再用 -f 指定该文件。
  5. 执行结果:执行的结果会以邮件的形似发送给用户。
  6. 与 batch 区别:batch 不能指定时间,而是选择用户系统的空闲时间来执行。

    • 周期性任务: 执行原理:不管是系统任务还是用户任务都是由守护进程 crond 读取用户定义文件来执行的。系统任务的文件时 /etc/crontab,用户任务文件是 /var/spool/cron/username

    • 系统任务: 任务定义格式:每行定义一个任务,格式为 ***** user command 时间格式:* - . / 是可以用的符号。* 代表该位所有可取值,- 代表在这一区间连续取值,. 代表这区间的离散取值,/# 表示在某区间每隔#执行一次任务

    • 用户任务: 命令:使用 crontab 命令,可以使用的参数有 -e 调用 EDITOR 中的编辑器来编辑,-u 指定用户,-l 查看任务,-r 删除 crontab 文件。

例子:

  • 如何实现秒级别的任务:***** for i in {1...4};do /bin/echo "hello";sleep 1;done
  • 不能整除怎么解决:可用 at 执行。在文件中写 while true;do ls / sleep 10;done
  • 除了 crontab 外,还有一个命令是对 crontab 的补充,anacron。它用于检测 crontab 中是否有任务错过了上次执行的时间,若有则让该任务在开机后的某个时间执行。