曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 6289|回复: 0
打印 上一主题 下一主题

使用 crontab 的注意事项(Ubuntu 910 环境)

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-12-20 10:02:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的系统环境是: Ubuntu 910
其他的发行版没有测试。

有时候,明明是 crontab -e 编辑了,但是后面的命令却执行不起来。这可能是因为,你的命令可能不在标准路径里;或者尝试执行一个图形界面的程序,而执行图形界面的程序会由于初始化 GTK 的失败而无法启动。

现在假设在普通用户下执行 crontab 命令,而且有一个程序叫 crontab_test ,存在 /home/beyes/programming/crontab 目录下。crontab_test 程序的目的是简单的往一个文件上写入 hello 字符串,一行一串。程序代码如下:
[Plain Text] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    if ((fp = fopen("crontab_test.txt", "a+")) == NULL) {
        perror ("crontab_test.txt failed");
        exit (1);
    }
    fwrite ("hello\n", 6, 1, fp);

    fclose (fp);

    return (0);
} 

现在用 crontab -e 命令来编辑 crontab 计划任务:
46 9 * * * (cd /home/beyes/programming/crontab; ./crontab_test)
注意,为了简明起见,上面使用了括包,把这些命令括起来;为了执行非标准路径下的程序,我们要先 cd 进程序所在的目录,然后再执行程序。

上面表示任何一天中的 9 点 46 分都会执行这个程序,现在来看一下是否生成了 crontab_test.txt 文件:
beyes@beyes-groad:~/programming/crontab$ ls
crontab_test  crontab_test.c  crontab_test.txt  test.sh
好,正确生成:
$ cat crontab_test.txt
hello

因为是试验用,删除掉计划任务,使用命令:
crontab -r

题外话,如果想一次不断的循环调用程序的输出以连续观察结果,可以在当前目录下写一个脚本来调用程序:
#!/bin/sh
while true
do
./crontab_test
sleep 5
done
那么这时,crontab 中的计划要写成:
46 9 * * * (cd /home/beyes/programming/crontab; sh test.sh)

当然,如果只是想在一个文本里每次一行的输入 hello 字符串,大可不必写一个 C 程序,只用简单的脚本即可:
#!/bin/sh
while true
do
echo hello >> crontab_test.txt
sleep 5
done
注意上面,echo 后面用的是 >> 符号,而不是 > 符号。
> 符号是简单的把要写入的内容导入到 crontab_test.txt 文件中,但是循环输出时,每次会被覆盖。
>> 符号是把写入的内容追加到后面的文件中。

关于 cron , crontab 以及另外一个计划工具 anacrontab 的说明分别可见:
http://www.groad.net/bbs/read.ph ... ;    (让一个脚本自动定时运行,设置、启动 linux定时脚本 (crontab详解))
http://www.groad.net/bbs/read.php?tid-1458.html   (使用 Anacron 处理 Linux 关机问题)

如果希望简单的执行一个图形界面的程序,比如电驴,BT 等下载软件,可以参考我写的一个简单的计划工具:
http://www.groad.net/bbs/read.php?tid-1246.html (计划工具)

像图形界面的启动,crontab 路径的问题,有几个试验没有去测试,不知道是不是用 cron 本身就可以很方便的去实现这些功能。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 13:57 , Processed in 0.079804 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表