Linux知识二:设置开机启动项、定时运行程序
设置开机启动服务知识:
chkconfig--level35服务名on:设定开机时启动的服务。
/etc/at.allow与/etc/at.deny这两个档案来可以进行at的使用限制。希望有某些使用者使用at的话,将那个使用者的账号写入/etc/at.deny即可!一个账号写一行。
at[-m]TIME,要让/var/spool/at目录底下的工作被实际运作,必须要启动我们上面提到的atd那个服务,参数:
-m:当at的工作完成后,以email的方式通知使用者该工作已完成。
TIME:时间格式,这里可以定义出『什么时候要进行at这项工作』的时间,格式有:
HH:MMex>04:00
在今日的HH:MM时刻进行,若该时刻已超过,则明天的HH:MM进行此工作。
HH:MMYYYY-MM-DDex>04:002005-12-03
强制规定在某年某月的某一天的特殊时刻进行该工作!
HH:MM[am|pm][Month][Date]ex>04pmDecember3
也是一样,强制在某年某月某日的某时刻进行!
HH:MM[am|pm]+number[minutes|hours|days|weeks]
ex>now+5minutesex>04pm+3days
就是说,在某个时间点『再加几个时间后』才进行。
范例一:再过五分钟后,将/root/.bashrc寄给dmtsai这个使用者
[root@linux~]#atnow+5minutes
at>/bin/maildmtsai-s"testingatjob"</root/.bashrc
at><EOT><==这里输入[ctrl]+d就会出现<EOF>的字样!代表结束!
job8at2005-09-0710:47
#上面这行信息在说明,第8个at工作将在2005/09/07的10:47进行!
范例二:由于机房预计于2005/09/16停电,我想要在2005/09/1523:00关机?
[root@linux~]#at23:002005-09-15
at>/bin/sync
at>/bin/sync
at>/sbin/shutdown-hnow
at><EOT>
job10at2005-09-1523:00
#您瞧瞧!at还可以在一个工作内输入多个指令呢!不错吧!
atq:查询目前主机上面有多少的at工作排程。
atrm[jobnumber]:排除排程,先用atq查看排程的ID号,再用此命令排除排程。
chkconfig命令用来更新和查询不同运行级上的系统服务,语法为:
chkconfig--list[name]
chkconfig--addname
chkconfig--delname
chkconfig[--levellevels]name
chkconfig[--levellevels]name。
chkconfig有五项功能:添加服务,删除服务,列表服务,改变启动信息以及检查特定服务的启动状态。
选项介绍:
--levellevels指定运行级,由数字0到7构成的字符串,如:
--level35表示指定运行级3和5。要在运行级别3、4、5中停运nfs服务,使用下面的命令:chkconfig--level345nfsoff
--addname这个选项增加一项新的服务,chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。
--delname用来删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
--listname列表,如果指定了name那么只是显示指定的服务名,否则,列出全部服务在不同运行级的状态。
不同的运行级定义如下:
#0-停机(千万不能把initdefault设置为0)
#1-单用户模式#sinits=init1
#2-多用户,没有NFS
#3-完全多用户模式(标准的运行级)
#4-没有用到
#5-X11多用户图形模式(xwindow)
#6-重新启动(千万不要把initdefault设置为6)
运行级文件,每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。
第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用-代替运行级。
第二行对服务进行描述,可以用跨行注释。
例如,random.init包含三行:
#chkconfig:23452080
#description:Savesandrestoressystementropypoolfor
#higherqualityrandomnumbergeneration.
表明random脚本应该在运行级2,3,4,5启动,启动优先权为20,停止优先权为80。
实例:
1、在linux下安装了apache服务(通过下载二进制文件经济编译安装、而非rpm包)、apache服务启动命令:/usr/local/apache/bin/apachectlstart,让apache服务运行在运行级别3下面。
命令如下:
1)touch/etc/rc.d/init.d/apache
vi/etc/rc.d/init.d/apache
chown-Rroot/etc/rc.d/init.d/apache
chmod700/etc/rc.d/init.d/apache
ln-s/etc/rc.d/init.d/apache/etc/rc.d/rc3.d/S60apache
#S是start的简写、代表启动、K是kill的简写、代表关闭。60数字代表启动的顺序(对于iptv系统而言、许多服务建立在数据库启动的前提下才能够正常启动的、可以通过该数字就行调整脚本的启动顺序)。
apache的内容:
#!/bin/bash
#Starthttpdservice
/server/apache/bin/apachectlstart。
定时运行知识:
crontab:使用者的设定,安全性的问题,与at同样的,我们可以限制使用crontab的使用者账号,允许与禁止用法与at类似。当使用crontab来建立工作排程之后,它就会被纪录到/var/spool/cron/里。
crontab[-uusername][-l|-e|-r],参数:
-u:只有root才能进行这个任务,亦即帮其它使用者建立/移除crontab;
-e:编辑crontab的工作内容
-l:查阅crontab的工作内容
-r:移除crontab的工作内容。
范例一:用dmtsai在每天的12:00发信给自己
[dmtsai@linux~]$crontab-e
#此时会进入vi的编辑画面让您编辑工作!注意到,每项工作都是一行。
012***maildmtsai-s"at12:00"</home/dmtsai/.bashrc。
代表意义分钟小时日期月份周
数字范围0-590-231-311-120-7。
特殊字符代表意义
代表任何时刻都接受的意思!举例来说,上表的范例一,那个日、月、周都是*,就
*
代表着『不论何月、何日的礼拜几的12:00都执行后续指令』的意思!
代表分隔时段的意思。举例来说,如果要下达的工作是3:00与6:00时,就会是:
03,6***command
,
还是有五栏,不过第二栏是3,6,代表3与6都适用!
代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工
-作:
208-12***command
仔细看到第二栏变成8-12喔!代表8,9,10,11,12都适用的意思!
那个n代表数字,亦即是『每隔n单位间隔』的意思,例如每五分钟进行一次,则:
*/5****command
/n
很简单吧!用*与/5来搭配,也可以写成0-59/5,相同意思!
定时运行PHP文件:06***/usr/local/php/bin/php/usr/local/apache/htdocs/test/timer.php>>/tmp/cron.log。
后台运行:/usr/local/php/bin/phpCopyBaseToFile.inc.php&。
终端关闭后继续在后台运行:nohup/usr/local/php/bin/phpCopyBaseToFile.inc.php&。