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”的程序(“*”表示不管当天是星期几)。
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。?9 12:00
2000-11-09 12:00 时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger。er
一般可以放在/etc/rc.d/rc.local文件中(rpm系统 用来给用户 自己配置自需的启动项目的,deb的系统 中可以在 /etc/init.d/下自己创建启动项目(RPM的系统 中也可 以)。。。。。。
另外在 Bash和TCshell中的一些启动文件 如下:
/etc/profile 登录时自动执行
~/.bash_profile, ~/.bash_login, ~/.profile 登录时自动执行
~/.bashrc shell 登录时自动执行
~/.bash_logout 退出时自动执行
~/.bash_history 记录最近会话中的命令
/etc/passwd 记录用户资源等信息
~/.cshrc 或 ~/.tcshrc 每个shell启动时自动执行
~/.login 执行完.cshrc或.tcshrc后,又登录shell执行
~/.cshdirs 在tcsh.login后执行
~/.logout 在csh 或tcsh退出时执行
另外,想在开机时自动加载 win分区。可以在/etc/fstab 中加上以下几句:
============= == add start ======================
/dev/hda1 /mnt/c vfat defaults,codepage=936,iocharset=
cp936 0 0
/dev/hda5 /mnt/d vfat defaults,codepage=936,iocharset=
cp936 0 0
/dev/hda6 /mnt/e vfat defaults,codepage=936,iocharset=
cp936 0 0
/dev/hda7 /mnt/f vfat defaults,codepage=936,iocharset=
cp936 0 0
/dev/hda8 /mnt/g vfat defaults,codepage=936,iocharset=
cp936 0 0
/dev/hda9 /mnt/h vfat defaults,codepage=936,iocharset=
cp936 0 0
=============== add end =====================
注:“= add start=”“= add end=”是我为了便于理解加上去的。
你们在修改文件的时候,不要加进去。
下面我们讲解添加内容的作用:
/dev/hda? 是Win盘对应的分区号,你可以在“硬件浏览器”中的硬盘信息中找到。
/mnt/? 是Win盘挂载过来后所对应的/mnt下的目录,该目录我们在1.)中已经创建。
vfat 指明挂载的分区是FAT格式的。
defaults 告诉Linux 启动 时自动挂载。
codepa…… 让中文的文件名可以正常显示,否则将显示乱码。
在/etc/rc.d/--有下列目录rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d
init.d
还 有下列文件
rc rc.local rc.sysinit
rcn.d (n为1到6) 是对应于不同的runlevel下起不同的服务. 这些目录下都
是一些符号连接, 连接到init.d下的一些文件.以S开头的表示要启动, 以K开头的不启动.
第一个字母后面的数值是一个优先级, 这个优先级是用chkconfig来维护的. init.d下
的每一个文件 都有类似下面的话:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for /
# higher quality random number generation.
看有chkconfig的那一行, 2345表示在runlevel 2 3 4 5下被启动, 20 80 是优先级
20为启动, 80为关闭. 即在rc3.d你可能看到 S20 或 K80. Redhat下的setup也是用
它处理 的. 你可以再参考一下man chkconfig. 有一点注意, 优先即是一个两位数.
RedHat下启动网络一定要启动 network的服务, 该服务会执行
/etc/sysconfig/network, 并用ifup加载所有的/etc/sysconfig/network-script
下定义的网卡. 注意, 在缺省配置中这些定义文件名中不可以有'.' 象ipforward这样的定义
也是在它中完成的. 你可以看看它的源文件. 它还定义了一个重要的变量$NETWORK, 其他的所
有网络服务都通过检查该变量来决定是否启动.
另外的三个文件是这样的
先执行rc.sysinit 完成了包括mount分区 激活swap 加载modules等重要的工作.
再执行 rc.local 完成一些本地的处理, 缺省情况下, 它几乎什么都没作.
最后是执行rc 启动所有的服务.