|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
测试情况:Fedora7,办理员:root,一般用户:test1
完成方针:在Linux启动时,主动运转位于一般用户test1根目次下的剧本程序test.py,该程序会在每次实行时主动向当地日记文件追加一笔记录,源码以下:
fromdatetimeimportdatetime
now=datetime.now()
f=open(test.log,a)
f.write(%s%now)
f.close()
Linux在启动时,会主动实行/etc/rc.d目次下的初始化程序,因而我们能够把启动义务放到该目次下,有两种举措:
计划一:
1.由于个中的rc.local是在完成一切初始化以后实行,因而我们能够把启动剧本写到内里
2.用root账号上岸Linux,vi/etc/rc.d/rc.local编纂文件,在最初到场两行必要实行的剧本程序:
cd/home/test1――该步不成少,不然会提醒没有权限翻开test.log文件
sutest1-c"python/home/test1/test.py"――把要实行的命令作为一个参数传送级su
计划二:
1.init.d目次下都为可实行程序,他们实际上是服务剧本,依照必定格局编写,Linux在启动时会主动实行,相似Windows下的服务
2.用root帐号登录,vi/etc/rc.d/init.d/mystart,追加以下内容:
#!/bin/bash
#chkconfig:23458005--指定在哪几个级别实行,0一样平常指关机,
6指的是重启,其他为一般启动。80为启动的优先级,05为封闭的优先机
#description:mystartservice
RETVAL=0
start(){--启动服务的出口函数
echo-n"mystartserive..."
cd/home/test1
sutest1-c"python/home/test1/test.py"
}
stop(){--封闭服务的出口函数
echo"mystartserviceisstoped..."
}
case{GetProperty(Content)}in--利用case,能够举行交互式操纵
start)
start
;;
stop)
stop
;;
esac
exit$RETVAL
3.运转chmod+r/etc/rc.d/init.d/mystart,使之可间接实行
4.运转chkconfig――addmystart,把该服务增加到设置傍边
5.运转chkconfig――listmystart,能够检察该服务历程的形态
总结:
两种计划的的中心都是切换用户到test1,然后实行命令启动Python程序,做成服务的优点是能够界说多个交互命令,好比:start,stop,restart,reset……,在服务运转的过程当中还能够做响应操纵。最入手下手的时分,我依照一样平常的思绪写了以下剧本,却怎样也实行不了:
sutest1--切换到test1用户
cd/home/test1--切换到根目次
pythontest.py--实行python程序
exit--加入test1帐号
看起来好象统统都没错,可是发明只运转了第一行的命令,前面的都没有运转,直到加入test1用户后才发明好象实行终了。剖析缘故原由,是由于Linux启动的时分是在root帐号下,实行sutest1即是翻开了一个新的shell剧本,因而上面的代码都在等着新的Shell剧本停止才干运转,就象在主程序里挪用了一个子程序,而子程序是个逝世轮回,一下出来来了局上面的要等逝世了。晓得了产生的缘故原由,那末办理的举措就绝对复杂了,就是在实行上述剧本程序时,不要分开自己的Shell.我们能够把实行命令做为su的一个参数传送出来,由于没有触及到翻开新的Shell,因而能够一般实行你希冀的剧本程序,顺遂完成开机主动启动指定的剧本程序
</p>
开发linux发行版的人都是通读过linux内核代码,对linux原理极其精通的人。 |
|