linux启动exe命令,linux定时启动程序的命令详解

【定时启动你的linux程序】

*********************************************************

最小模型例子:

你的程序:

vi hello.sh

1 #! /bin/sh

2

3 echo "hello world"

4

你的任务:

crontab -e

00 15 18 10 * mail hfx < /home/hfx/shell/hello.sh

ok!

你的sh脚本将在今年的10月18日15:30分执行

查看你的任务:

crontab -l

删除你的任务:

crontab -r // 注意所有都删除了

还是进入你的crontab -e,将你需要删除的任务删除比较好!

*********************************************************

[选择at 或者 crond]

仅执行一次的工作排程

如果仅要执行一次的工作,就使用 at 这个指令吧!

如果你是要循环的安排,那么就选用crond吧!

当然后则也能容易的实现一次。

[查看你的用户权限]

首选看你的用户是否有权限执行at命令,查看方法:

在任何情况下,终极用户都能够使用这个命令。对于其他用户来说,是否能够使用就取决于两个文档:/etc/at.allow和/etc/at.deny。

假如/etc/at.allow文档存在的话,那么只有在其中列出的用户才能够使用linux at命令;假如该文档不存在,那么将检查/etc/at.deny文档

是否存在,在这个文档中列出的用户均不能使用该命令。

假如两个文档都不存在,那么只有终极用户能够使用该命令;空的/etc/at.deny文档意味着所有的用户都能够使用该命令,这也是默认状态。

简单的shell指令查看如下:ll /etc/at.*

如果存在以下两个文件:at.allow,at.deny

[使用说明]

以下是at和crontab语法的使用规则,摘自《鸟哥的linux》,提供参考。因为看的很清晰,所有,没有什么可以比它讲的更好的了

/at///

[test @test test]# at [-m] TIME    (下达工作指令)

[test @test test]# atq         (查看目前的工作排程)

[test @test test]# atrm [jobnumber]  (删除排程)

参数说明:

-m    :执行 at 所规范的工作排程时,将屏幕输出结果 mail 给下达指令的用户

TIME  :时间的格式,有底下几个:

HH:MM YYYY-MM-DD             ex> 04:00 2002-05-30 (五月三十号四点执行)

HH[pm;am] + number [hours;days;weeks]  ex> 4pm + 3 days (在过 3 天的下午 4 点)

HH:MM                  ex> 12:00 (今天的 12 点执行)

HH[pm;am] [Month] [Day]         ex> 1pm May 30

jobnumber:每一个 at 工作排程都有编排的顺序!这个即是!

范例:

[test @test test]# at 5pm   <==在今天的 5pm 执行,如果今天已过 5 点则明天执行;

warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh

at> mail -s test test < /home/test/.bashrc <==这就是我的工作!

at> <==这里是按下 [Ctrl] + D 就可以离开了!

job 8 at 2002-05-30 17:00  <==这里会告诉你这个工作的号码为 8 号,执行的日期为后面所示。

[test @test test]# atq   <==窥视一下你(test)目前有多少工作?

5       2002-05-30 12:00 a test

8       2002-05-30 17:00 a rest

[test @test test]# atrm 5<==删除第 5 号工作

[test @test test]# atq

8       2002-05-30 17:00 a rest

推荐你at你的时间格式为标准格式如下:

at 17:30 2/24/99

这样的格式时间清晰,容易被开发人员所确定。99年2月24日17时30分

[启动与关闭]

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

[at 添加、查看、删除]

at服务:安排一个任务在未来执行,需要一个atd的系统后台进程

#at now+2 minutes 回车

>输入要执行的命令

>ctrl+d 结束输入

atq;查询当前的等待任务

用atq来查询,已经运行的任务,就消失了。这就是at计划任务的重点,只运行一次

atrm:删除等待任务

启动计划任务后,如果不想启动设定好的计划任务可以使用atrm命令删除。

格式:atrm 任务号

命令后面跟计划任务编号,如果不跟,就会删除这个用户所有的计划任务。

还可以进入到/var/spool/at目录里把计划任务删除,计划任务的文件都保存在该目录里,

可以用rm -f 文件名来删除(以文件的形式删除计划任务,因为计划任务是以文件形式保存在该目录中)

在通常情况下,超级用户都可以使用这个命令。对于其他用户来说,能否可以使用就取决于两个文件:/etc/at.allow和/etc/at.deny

如果你要让哪个用户不能使用计划任务,就直接把他的用户名写进去就可以了,一排只能写一个。

同时写入allow 及deny, 允许.

[查看你的email]

进入/var/spool/mail查看你的计划任何执行结果。

/crontab///

[test @test test]# crontab [-u user] [-l | -e | -r]

参数说明:

-u user :只有 root 能下达的参数,视察或编译其他使用者的 crontab 内容

-l      :列出 crontab 的内容

-e      :编辑 crontab 的内容

-r      :删除 crontab 的内容

范例:

一般使用者 test 要在每天的 12:00 发信给自己:

[test @test test]# crontab -e <==自己编辑自己的 crontab 内容

进入 crontab 编辑内容,使用 vi 呦!

0 12 * * * mail test < /home/test/test.txt

分时日月周 |========指令列===============|

例题一:假如你的女朋友生日是 5 月 2 日,你想要在 5 月 1 日的 23:59 发一封信给他,

这封信的内容已经写在 /home/test/lover.txt 中了

[test @test test]# crontab -e

59 23 1 5 * mail pigpp < /home/test/lover.txt

那样的话,每年 pigpp 都会收到你的这封信喔!(当然啰,信的内容就要每年变一变啦!)

例题二:假如你每隔五分钟要去 check 你的一个名为 test.sh 的批处理文件一次,则:

[test @test test]# crontab -e

59 23 1 5 * mail pigpp < /home/test/lover.txt  <==刚刚的那个指令还存在呦!

*/5 * * * * /home/test/test.sh  <==新加入的一个排程!

注意到呦!那个 crontab 每个人都只有一个档案,就是在 /var/spool/cron 里面的档案啦!还有两件事要注意一下:

(1) 指令的路径最好是下达绝对路径,这样比较不会找不到执行的档案喔;

(2) 第一个数字 */5 表示『每五分钟执行一次』的意思!

例题三:假如你每个礼拜的星期五下午 4:30 要告诉朋友星期六的约会不要忘记,则:

[test @test test]# crontab -e

59 23 1 5 * mail pigpp < /home/test/lover.txt

*/5 * * * * /home/test/test.sh

30 16 * * 5 mail frend@test.domain.name < /home/test/frend.txt <==新加入的!

呵呵!这样很简单吧!如此就可以轻易的达到您所需要的例行性工作排程的安排啰!

好了!那么我们要如何来查看使用者目前的 crontab 的工作排程呢?

[test @test test]# crontab -l <==这个 -l 是 L 的小写

# DO NOT EDIT THIS FILE - edit the master and reinstall.

# (/tmp/crontab.27683 installed on Thu May 30 13:38:38 2002)

# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)

59 23 1 5 * mail pigpp < /home/test/lover.txt

*/5 * * * * /home/test/test.sh

30 16 * * 5 mail frend@test.domain.name < /home/test/frend.txt

呵呵呵!其实这个显示的内容就是 /var/spool/cron/test 档案的内容啦!那么如何删除排程呢?

[test @test test]# crontab -r

[test @test test]# crontab -l

no crontab for test

看到了吗? crontab 『整个内容都不见了!』所以请注意:『如果只是要删除某个 crontab 的工作项目,那么请使用 crontab -e 来重新编辑即可!』

如果使用 -r 的参数,是会将所有的 crontab 数据内容都删掉的!千万注意了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值