在Red Hat Linux中自动运行程序

本文介绍几种在linux系统中自动运行一个程序的方法

1.开机启动时自动运行程序
Linux加载后, 它将初始化硬件和设备驱动,
然后运行第一个进程init。init根据配置文件继续引导过程,
启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d
或 /etc/rc?.d 目录下的脚本文件,可以使 init自动启动其它程序。例如:编辑
/etc/rc.d/rc.local 文件,在文件最末加上一 行“xinit”或“startx”,可以在开机启动后直接进入X-Window。

2.登录时自动运行程序
用户登录时,bash首先自动执行系统管理员建立的全局登录script
:/ect/profile。然后bash在用户起始
目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、/.profile,但只执行最先找到的
一个。

因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的
Autoexec.bat)。
3.退出登录时自动运行程序
退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。例如,在/.bash_logout中加入命令“tar
-cvzf c.source.tgz *.c”,则在每次退出登录时自动执行
“tar” 命令备份 *.c 文件。

4.定期自动运行程序
Linux有一个称为crond的守护程序,主要功能是周期性地检查
/var/spool/cron目录下的一组命令文件的内
容,并在设定的时间执行这些文件中的命令。用户可以通过crontab
命令来建立、修改、删除这些命令文件。
例如,建立文件crondFile,内容为“00 9 23 Jan *
HappyBirthday”,运行“crontab cronFile”命令 后,每当元月23日上午9:00系统自动执行“HappyBirthday”的程序(“*”表示不管当天是星期几)。

描述

这个 crontab
命令提交、编辑、列出或除去 cron 作业。一个 cron
作业是一个命令,其运行是由 cron
守护进程在规则的调度间隔执行的。要提交一个 cron
作业,指定 crontab 命令用 -e
标志。crontab
命令调用一个编辑会话,允许创建一个 crontab
文件。在这个文件中,为每个 cron
创建条目。每个条目必须是一种 cron
守护进程可接受的格式。要得到创建条目的信息,参阅 crontab
文件条目格式

当创建完条目和退出文件后,crontab
命令将它拷贝到 /var/spool/cron/crontabs
目录,并把它放到一个文件中,此文件的名称是当前的用户名。如果以用户名命名的文件已存在于
crontabs 目录中,crontab
命令会覆盖它。

同样的,可以通过指定文件参数创建
crontab
文件。如果此文件已经存在,格式必须是 cron
守护进程所需要的。如果文件不存在,crontab
命令就调用编辑器。如果 EDITOR
环境变量存在,此命令就调用它指定的编辑器。否则,crontab
命令调用 vi 编辑器。

要列出 crontab
文件的内容,就指定 crontab
命令并采用 -l
标志。要除去存在的文件,采用 -r
标志。

可选的 UserName 参数可被 crontab
文件的所有者或者 root
用户来使用,为指定的用户编辑、列出、除去或验证 cron
作业的状态。如果 UserName
是无效的,就会产生错误消息并退出程序。

如果可选的 UserName
参数没有被指定,这个crontab
标志对于 root 用户和当前用户可用。

crontab 文件条目格式

一个 crontab
文件包含每个 cron
作业的条目。条目由换行字符分开。每个 crontab
文件条目包括 6
个字段,它们被空格或制表符以以下格式分开:

minute  hour  day_of_month  month  weekday  command

这些字段接收以下值:

minute 0 到 59
hour 0 到 23
day_of_month 1 到 31
month 1 到 12
weekday 0 到 6(星期天到星期六)
command shell 命令

必须为每个字段指定一个值。除了 command
字段,这些字段可以包含以下内容:

  • 指定范围内的一个数。要在 5 月运行一个命令,在
    字段指定 5。

  • 两个被破折号分开的数目表明了包含的范围。要从星期二到星期五运行
    cron 作业,把 2-5 放到 weekday
    字段中。

  • 由逗号隔开的数字列表。要在一月第一天和最后一天的运行命令,在日_of_月
    字段中可指定 1,31。

  • *
    (星号),意味着所有的允许值。要每个小时运行一个作业,在小时字段指定一个星号。
  • /意味着每*运行一次
    0 */2 * * * date表示每两个小时运行一次。

 

注:
任一字符前如有一个反斜杠符号(包括 %)会引起字符被字面上的处理。天的规范是由两个字段(月的天和星期的天)组成的。如果指定两者都为元素的一个列表,这两个字段均被包含在其中。例如,如下条目:

0 0 1,15 * 1 command

将在每个月的第一天和第十五天运行
command,还有每个星期一。要仅在一个字段中指定天,另一字段应包含
*

指定命令

这个 cron
守护进程运行命名于所选日期和时间的第六个字段中的字段。如果包含一个
% (百分号)在第六字段,cron
守护进程像命令调用一样处理所有的任务,并使所有的后续任务在标准输入上可用,除非转义百分号
(\%)。空行和第一个非空字符是编号标记(#)将被忽略。如果命令含有反斜杠
(\) 的参数,反斜杠前应加另一个反斜杠。

注:
shell
只运行该命令字段的第一行。所有其它的行作为标准的输入对于命令可用。

cron 守护进程从 HOME
目录中启动一个子 shell。如果调度一个命令运行,这时您尚未登录,并且希望在.profile
文件中的命令运行,这个命令必须明确的读取您的 .profile
文件。

cron
守护进程为每个 shell 提供了一个缺省的环境,定义了 HOME,
LOGNAME, SHELL
(=/usr/bin/sh) 和 PATH
(=/usr/bin)。

例:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
#run-parts
0 9 */1 * * /etc/rc.d/tc.down

5.定时自动运行程序一次
定时执行命令at 与crond
类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一
般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命
令:
$ at 12:00

at>mailto Roger -s ″Have a lunch″ < plan.txt

at>Ctr-D
Job 1 at 2000-11-09 12:00

2000-11-09 12:00时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger。

Comments are closed.