免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10322 | 回复: 13
打印 上一主题 下一主题

[已解决]请教:怎样将perl-cgi的启动脚本注册成服务? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-27 17:07 |只看该作者 |倒序浏览
本帖最后由 zhxd 于 2011-08-30 12:38 编辑

用nginx+perl cgi网上文章很多。
但是有一点,只有一个perl_fcgi.sh的启动脚本(./start_perl_fcgi.sh start),难到每次都需要SSH到服务器上手工启动这个脚本嘛?
不知道怎样可以将start_perl_fcgi.sh脚本注册成为服务,让其在系统启动的时候能够启动。
我尝试将start_perl_fcgi.sh放到/etc/init.d/下面,开机的时候这个脚本是可以随系统启动的,但是重启或关机的时候,这个脚本不会停止,而pid文件也会一直存在,则脚本在下次系统启动的过程中,会提示pid文件已经存在。
不知道有哪位朋友修改过这个启动脚本的。
  1. #!/bin/bash
  2. #
  3. # perl-fcgi      This shell script takes care of starting and stopping perl-fcgi
  4. #
  5. # chkconfig: 2345 80 30
  6. # description: perl-fcgi
  7. # processname: perl-fcgi
  8. # pidfile: /etc/nginx/perl-fcgi.pid
  9. #set -x

  10. RETVAL=0
  11. dir=/etc/nginx

  12. stop ()
  13. {
  14. #pkill  -f  $dir/perl-fcgi.pl
  15. kill $(cat $dir/logs/perl-fcgi.pid)
  16. rm $dir/logs/perl-fcgi.pid 2>/dev/null
  17. rm $dir/logs/perl-fcgi.sock 2>/dev/null
  18. echo "stop perl-fcgi done"
  19. }

  20. start ()
  21. {
  22. rm -rf $dir/now_start_perl_fcgi.sh 2>/dev/null

  23. chown nginx.root $dir/logs
  24. echo "$dir/perl-fcgi.pl -l $dir/logs/perl-fcgi.log -pid $dir/logs/perl-fcgi.pid -S $dir/logs/perl-fcgi.sock" >>$dir/now_start_perl_fcgi.sh

  25. chown nginx.nginx $dir/now_start_perl_fcgi.sh
  26. chmod u+x $dir/now_start_perl_fcgi.sh

  27. sudo -u nginx $dir/now_start_perl_fcgi.sh
  28. echo "start perl-fcgi done"
  29. }

  30. case $1 in
  31. stop)
  32. stop
  33. ;;
  34. start)
  35. start
  36. ;;
  37. restart)
  38. stop
  39. start
  40. ;;
  41. esac
  42. exit $RETVAL
复制代码
这个脚本可以通过service perl-fcgi start/stop/restart来控制。
但是唯一一点就是在系统重启或关闭的时候,start_perl_fcgi.sh不会随系统“停止”而停止,不知道有没有哪位朋友修改过。
还请指点一下迷津。

论坛徽章:
0
2 [报告]
发表于 2011-08-27 19:51 |只看该作者
试试在运行级别的目录ect/rc*中,ln成K和S开头的文件名,放到运行级别下

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
3 [报告]
发表于 2011-08-27 20:15 |只看该作者
2楼的说得不错。

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
4 [报告]
发表于 2011-08-27 21:16 |只看该作者
用chkconfig添加到系统服务里面

论坛徽章:
0
5 [报告]
发表于 2011-08-28 13:56 |只看该作者
谢谢。
我已经将start_perl_fcgi添加到系统服务了,该服务在系统启动的时候会随系统启动。
但就是在启动的时候会报错,说是pid文件已经存在,原因就是在系统前一次重启或关闭的时候没有将perl_fcgi服务停止。

我就是不知道怎么才能将上面的脚本修改成让系统重启或关闭的时候,会自动停止perl_fcgi服务。

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
6 [报告]
发表于 2011-08-28 20:03 |只看该作者
注册剩服务后,系统关闭的时候会自动执行你的那个stop的.你试试stop下你的服务,看看那个pid是否还存在

论坛徽章:
0
7 [报告]
发表于 2011-08-28 22:49 |只看该作者
本帖最后由 zhxd 于 2011-08-28 22:50 编辑

手工stop以后,pid文件是不在。
但是系统在关闭/重启的时候,并没有执行stop这个操作。
现在的问题就是在系统关闭/重启的时候,这个脚本不会随之停止。
所以我想修改脚本文件,让在系统在关闭/重启的时候,让脚本自动停止那个服务。
不知道怎么修改...

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
8 [报告]
发表于 2011-08-29 07:56 |只看该作者
楼主是用的chkconfig添加的服务吗?chkconfig --list | grep perl-fcgi 贴上来

论坛徽章:
0
9 [报告]
发表于 2011-08-29 14:02 |只看该作者
写入到/etc/rc.local中即可。

论坛徽章:
0
10 [报告]
发表于 2011-08-29 16:08 |只看该作者
本帖最后由 zhxd 于 2011-08-29 16:37 编辑

@ 只爱睡觉:测试过,写到/etc/rc.local里面是不行的。
@ chenyx:perl-fcgi服务2、3、4、5是on,0、1、6为off。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP