FCRON 试用手记
^^^^^^^^^^^^^^
- 作者:臭豆腐[trydofor.com]
- 日期:2005-03-13
- 授权:署名-非商业-保持一致 1.0 协议
- 声明:拷贝、分发、呈现和表演本作品,请保留以上全部信息。
0. 文档目录
^^^^^^^^^^
[[<=$INDEX]]
1. 内容摘要
^^^^^^^^^^^
Fcron是一款调度程序,目的是取替Vixie Cron。
这里主要是对Fcron的使用进行提炼,并记录使用过程中的一些事情。
2. 软件安装
^^^^^^^^^^^
官方网站: http://fcron.free.fr
目前( Mar 12 2005 )稳定版本有两个:
* 稳定版: 2.0.2
* 开发版: 2.9.6
其中,2.9.6中,有个fcrondyn命令,可以方便和守护进程对话。
这两个版之外的,还有几个安全漏洞,慎用:)
============== tty : root@trydofor ==============
tar -xzf fcron-2.9.5.1.src.tar.gz
cd fcon*
./configure
make
make install
#之后都选 yes,顺利成功。
================================================
3. 调度配置
^^^^^^^^^^^
fcron的配置文件格式很灵活,基本格式为:
options frequency command
可以分别以@,&,%,!作为行的开始,来表明调度书写的方式。
========================== txt : sample ==============================
1. Entries based on elapsed system up time
----------------------------------------------------------------------
@options frequency command
----------------------------------------------------------------------
months (4 weeks) : m
weeks (7 days) : w
days (24 hours) : d
hours (60 minutes) : h
seconds : s
----------------------------------------------------------------------
# Get our mails every 30 minutes
@ 30 getmails -all
# make some security tests every 48 hours of system up time,
# force a mail to be sent to root even if there is no output
@mailto(root),forcemail 2d /etc/security/msec/cron-sh/security.sh
----------------------------------------------------------------------
2. Entries based on time and date
----------------------------------------------------------------------
&options min hrs day-of-month month day-of-week command
----------------------------------------------------------------------
minute : 0-59
hour : 0-23
day of month : 1-31
month : 1-12 (or names, see below)
day of week : 0-7 (0 and 7 are both Sunday, or names)
a[-b[/c][~d][~e][...]][,f[-g[/h][~i][~j][...]]][,...]
-: to
/: every
~: not
,: and
*: all
----------------------------------------------------------------------
# run mycommand at 12:05, 12:35, 13:05, 13:35,
# 14:05 *and* 14:35 everyday
&05,35 12-14 * * * mycommand -u me -o file
# get mails every hour past 20, 21, 22, and 24 minutes.
20-24~23 * * * * getmail
# save our work of the day every night at 03:45 with a low priority
# unless we are sunday, mail the output to jim and run that job
# at startup if computer was down at 03:45
&nice(10),mailto(jim),bootrun 45 03 * * *~0 "save --our work"
----------------------------------------------------------------------
3. Entries run periodically
----------------------------------------------------------------------
%options min hrs day-of-month month day-of-week command
----------------------------------------------------------------------
Keywords : must be followed by the fields
hourly, midhourly : minutes.
daily, middaily, nightly,
weekly, midweekly : minutes and hours.
monthly, midmonthly : minutes, hours and days.
----------------------------------------------------------------------
4. option declaration
!reset,serial(true),dayor,bootrun(0),mailto(root),lavg(.5,2,1.5)
======================================================================
5. 几点总结
^^^^^^^^^^^
对调度的启用,可以使用service fcron start 和 fcron -f 两种基本方法。
当启动fcron后,就可以使用fcrondyn与进程会话(但,会话内容很简单)。
fcron的功能真的很强大,可以指定output的方式,还有很多参数能够设置
值得注意的一点是,进行如下测试的时候,出现了问题:
======================= java : TestThread.java==================
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class TestThread extends Thread
{
public void run(){
BufferedReader mReader = new BufferedReader
(
new InputStreamReader(System.in)
);
while(true){
try
{
System.out.print("input :");
System.out.println("output:"+mReader.readLine());
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
TestThread t = new TestThread();
t.start();
}
}
===============================================================
==================== tty : root@trydofor ======================
fcrontab -l
>11:58:24 listing root's fcrontab
># m h d m w cmd
>&stdout(true) 00 * * * * '/usr/local/j2sdk/bin/java -jar /root/test.jar'
fcron -f
>input :output:null
>... ... ... //loop forever
# 死循环了
===============================================================
对于要求控制台输入的程序,要小心:)
目前没有调查出原因也没有解决办法得到控制台输入。
多么希望有一款调度程序可以获得守护进程的输入和输出阿
(不过,从守护进程的定义上看,是很难实现了)