LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 807|回复: 6

求助,小弟要程序以服务的形式加载请问如何编写脚本?

[复制链接]
发表于 2006-2-24 12:31:55 | 显示全部楼层 |阅读模式
这是一个通过将连接服务器串口的电话交换机内的电话记录写入phone.log文件的脚本,命令已经测试通过,现在要机器启动时自动加载,启动函数编好了,但是如何结束服务?好像是通过pid文件来结束但又不太清楚,请各位大虾帮忙。谢谢。另外最好能加上判断如果服务已经启动就不用再启动了。

#Startup script for phone.log
#description:auto get phonelog frome serial port when system startup

strat()
{
nohup /bin/cat < /dev/ttyS0 >| /var/log/phone.log &
}

stop()
{


}
发表于 2006-2-24 13:07:27 | 显示全部楼层
Post by sans
这是一个通过将连接服务器串口的电话交换机内的电话记录写入phone.log文件的脚本,命令已经测试通过,现在要机器启动时自动加载,启动函数编好了,但是如何结束服务?好像是通过pid文件来结束但又不太清楚,请各位大虾帮忙。谢谢。另外最好能加上判断如果服务已经启动就不用再启动了。

#Startup script for phone.log
#description:auto get phonelog frome serial port when system startup

strat()
{
nohup /bin/cat < /dev/ttyS0 >| /var/log/phone.log &
[color="Blue"]echo $(jobs -p %1) >/var/run/phone_log.pid
}

stop()
{
[color="#0000ff"]kill -15 $(echo /var/run/phone_log.pid)

}

please see the blue comment
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-24 13:23:22 | 显示全部楼层
啊,多谢版主,万分感谢。
回复 支持 反对

使用道具 举报

发表于 2006-2-24 13:34:55 | 显示全部楼层
in Linux, nohup is not needed. init will pick up the child.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-24 15:26:41 | 显示全部楼层
版主改得还真快啊!kill -15 $(echo /var/run/phone_log.pid) 好像不好用,现在改成
kill `cat /var/run/phone_log.pid` 了。

现脚本如下:
#Startup script for phone.log
#description:auto get phonelog frome serial port when system startup

strat()
{
nohup /bin/cat < /dev/ttyS0 >| /var/log/phone.log &
echo $(jobs -p %1) >/var/run/phone_log.pid
}

stop()
{
kill `/bin/cat /var/run/phone_log.pid`
}

请版主指教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-24 17:51:38 | 显示全部楼层
版主提供的程序还是有点小问题,不过已经改好了,脚本在ubunut 5.1下测试通过,全部脚本内容如下:

#!/bin/sh
#
#Startup script for phone.log
#Description:auto get phonelog from serial port when system startup

start()
{
nohup /bin/cat < /dev/ttyS0 >| /var/log/phone.log &
echo `jobs -p`> /var/run/phone_log.pid
}

stop()
{
/bin/kill `/bin/cat /var/run/phone_log.pid`
}

case "$1" in
start)
echo "Starting PhoneLog Service..."
start
;;

stop)
echo "Stoping PhoneLog Service..."
stop
;;

restart)
$0 stop
$0 start
;;

*)
echo "Usage0 {start|stop|restart}"
exit 1
esac



现在研究如何定期吧phone.log压缩打包。还请各位大虾多多指教。
回复 支持 反对

使用道具 举报

发表于 2006-2-25 07:17:15 | 显示全部楼层
bash中$()表示符总比``来的好。第一个其实可以简化成
  1. jobs -p >/var/run/phone_log.pid
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表