1. crontab原理和使用

Cron 实际上是两个独立的程序。Cron damon, 或者叫做cron ,crond 它是伴随系统一起启动的常驻程序

来检查是否cron 在系统上运行, 用ps 命令 和 grep 过滤所需内容:

ps -ef|grep cron 

root    387      1   0   Jun 29 ?     00:00:00 crond 

root  32304  20607   0   00:18 pts/0  00:00:00 grep cron 

进程 crond 每分钟激活一次,检查cron 文件列表,那里面记录着什么程序应该在什么时间来运行。如果有程序需要运行,它启动他们然后继续休眠,你不需要关系cron的运行机制,只需要知道它在运行,并且不停地轮询cron 任务列表。

The cron 列表文件 随系统的不同可能不同,但通常由下面的东西组成,每个用户的计划任务文件一般是放下面 :

在 /var/spool/cron 或者 /var/spool/cron/crontabs

这些文件是利用cron 的用户建立的,每一个(计划任务)文件使用了用户名字信息,你总能发现 一个root 文件 在 /var/spool/cron/root 。如果有一个叫jinx的用户使用了cron 那么一定存在一个 文件/var/spool/cron/jinx

ls -l /var/spool/cron 

-rw-------   1  root    root          3768 Jul 14  23:54  root 

-rw-------   1  root    group          207 Jul 15  22:18  jinx 

cron的另一部分是 表 编辑器, crontab ,它用来编辑 /var/spool/cron 目录中的文件。crontab 自己知道哪的文件需要修改,能让事情变的更简单。

crontab 辅助工具有三个选项: -l , -r , -e .

-l 选项 列出当前 userid 文件中的 任务列表。

-r 选项 删除一个 cron 表文件

-e 编辑 文件

也可直接写一个计划任务文件,然后crontab  文件名 形成计划任务.

test@hefu:~$ pwd
/home/test
test@hefu:~$ cat test_cront.cron
* * * * * /home/test/1.sh
test@hefu:~$ crontab -l
no crontab for test
test@hefu:~$ crontab test_cront.cron
test@hefu:~$ crontab -l
* * * * * /home/test/1.sh

2.计划任务遇到的问题

因为是在 普通用户下 没法编写 /etc/crontab 文件,所以给了setfacl -m u:ubuntu:rw /etc/cront.

导致了计划任务都没有执行. 说明这种方法不可行.

3. 普通用户执行crontab

参考:  普通用户无法使用crontab故障排除

4.使用 crontab -e 与 直接编辑 /etc/crontab 的区别

Linux配置定时任务,大家都知道使用crontab这个系统功能,但有时候我们需要区分用户执行,下面就直接说一下2种方法的区别:

方法1:

使用命令 crontab -e 然后直接编辑定时脚本。

这样执行以后,属于用户自定义的,会被写到 /var/spool/cron 目录下,生成一个和用户名一致的文件,文件内容就是我们编辑的定时脚本。

[root@localhost cron.d]# cd /var/spool/cron
[root@localhost cron]# ll
总用量 4
-rw-------. 1 root root 52 12月 9 10:58 root
[root@localhost cron]# pwd
/var/spool/cron
[root@localhost cron]# cat root
30 03 * * * /root/automysqlbackup.sh

方法2:

使用命令 vi /etc/crontab 编辑定时脚本。

如:

[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/ # run-parts
30 * * * * root /usr/sbin/ntpdate 210.72.145.4

(系统级的)做系统级配置我们会直接配置 /etc/crontab

(用户级的)一般还是建议大家使用 crontab -e ,这样系统也会帮着检查我们配置的脚本语法。

计划任务_crontab的更多相关文章

  1. C#编写一个在asp.net core 3.1下的简单的corn模式的计划任务和一个更简单的定时器类

    asp.net core 下,新增了一个BackgroundService用来实现能在后台跑一个长久运行的任务,因此,也可以用来替换掉原来使用的static的Timer组件, Timer组件主要有以下 ...

  2. 【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划

    发个通知,过段时间学习计划相关的东西就出来了,上次写了篇指引文章后有些好奇心颇重的人跟我说:“发现最近群知识库和技能库更新的频率有点大,这是要放大招的节奏啊!” 很多想学习却不知道如何规划的人想要一个 ...

  3. SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)

    前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...

  4. ORACLE从共享池删除指定SQL的执行计划

    Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,用于从对象库缓存中刷新特定对象,例如游标,包,序列,触发器等.也就是说可以删除.清理特定SQL的执行计划 ...

  5. 解析大型.NET ERP系统核心组件 查询设计器 报表设计器 窗体设计器 工作流设计器 任务计划设计器

    企业管理软件包含一些公共的组件,这些基础的组件在每个新项目立项阶段就必须考虑.核心的稳定不变功能,方便系统开发与维护,也为系统二次开发提供了诸多便利.比如通用权限管理系统,通用附件管理,通用查询等组件 ...

  6. MSSQLSERVER执行计划详解

    序言 本篇主要目的有二: 1.看懂t-sql的执行计划,明白执行计划中的一些常识. 2.能够分析执行计划,找到优化sql性能的思路或方案. 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博 ...

  7. SQL Server-聚焦使用索引和查询执行计划(五)

    前言 上一篇我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解,Always to review the ...

  8. SQL Tuning 基础概述03 - 使用sql_trace和10046事件跟踪执行计划

    1.使用sql_trace跟踪执行计划 1.1 当前session跟踪: alter session set sql_trace = true; //开始sql_trace alter session ...

  9. SELECT TOP 1 比不加TOP 1 慢的原因分析以及SELECT TOP 1语句执行计划预估原理

    本文出处:http://www.cnblogs.com/wy123/p/6082338.html 现实中遇到过到这么一种情况: 在某些特殊场景下:进行查询的时候,加了TOP 1比不加TOP 1要慢(而 ...

随机推荐

  1. hibernate映射关系(多对多)

    Student与Teacher关系多对多(只建了2个实体类) public class Student { private int id; private String name; private S ...

  2. Golang 类型转换,断言和显式强制转换

    1 前言 类型转换,可以用断言(只能使用在interface{}类型转换成其它类型)和显式类型强制转换(常规是用于基本类型) 2 代码 //graphql-go func(params graphql ...

  3. 关于KEIL编译报错和警告问题

    编译时候报错.. Library reports error: __use_no_semihosting was requested, but _ttywrch was referenced 上网找了 ...

  4. C# 中使用 Excel

    using System;using System.Collections.Generic;using System.Text;using System.Reflection;using System ...

  5. 修改 sql 提示符信息:

    Last login: Thu Dec 8 19:18:08 2016 from 192.168.242.1 [root@localhost ~]# su - oracle [oracle@local ...

  6. Confluence 6 用户宏示例 - NoPrint

    这个示例演示了如何创建一个用户宏,这个宏包括了在查看页面中显示的内容,但是不被打印. Macro name noprint Visibility Visible to all users in the ...

  7. Confluence 6 用户目录图例 - 可读写连接 LDAP

    上面的图:Confluence 连接到一个 LDAP 目录. https://www.cwiki.us/display/CONFLUENCEWIKI/Diagrams+of+Possible+Conf ...

  8. 【JDK】JDK模块化(1)-为什么要模块化

    Java9发布已经有一年了,跟Java8相比,从目录对比就看得出来差别相当大. 实际上Java9最大的变化就是JDK模块化(Modular). 那么,模块化的目的是什么呢? 官方的说法是: 之前版本的 ...

  9. light1341 唯一分解定理

    一定要先打表素数,然后进行分解,直接分解是会t的 #include <cstdio> #include <cstring> #include <algorithm> ...

  10. spring data jpa 全面解析(实践 + 源码分析)

    前言 本文将从示例.原理.应用3个方面介绍spring data jpa. 以下分析基于spring boot 2.0 + spring 5.0.4版本源码 概述 JPA是什么? JPA (Java ...