在linux想要运行启动一个服务有两种方法:

1,运行/etc/init.d/目录下的shell脚本,还可以有快捷方式,service *** start/ stop/restart /status,

2,直接运行/usr/bin目录下的服务文件;

第一种方法启动的程序可以通过service命令来管理,比如说查看状态 service --status-all

查看/etc/init.d目录,发现下面都是shell脚本,脚本里面运行的程序最终还是指向了/usr/bin下面的程序,只不过在shell脚本中可能直接对程序的一些运行参数继续进行了设置;

第二种方法,直接运行/usr/bin/****,如果运行时有配置文件的话,需要加上 --config *****,用这种方法启动程序后,不能用service命令查看状态;

举例:/etc/init.d/openstack-nova-api

suffix=api
prog=openstack-nova-$suffix
exec="/usr/bin/nova-$suffix"
config="/etc/nova/nova.conf"
pidfile="/var/run/nova/nova-$suffix.pid"
logfile="/var/log/nova/$suffix.log" [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog lockfile=/var/lock/subsys/$prog start() {
[ -x $exec ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $prog: "
daemon --user nova --pidfile $pidfile "$exec --config-file $config --logfile $logfile &>/dev/null & echo \$! > $pidfile"
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
} stop() {
echo -n $"Stopping $prog: "
killproc -p $pidfile $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
} restart() {
stop
start
} reload() {
restart
} force_reload() {
restart

然后用 ps aux |grep /usr/bin/nova-api来查看一下当前进程:

/usr/bin/python /usr/bin/nova-api --config-file /etc/nova/nova.conf --logfile /var/log/nova/api.log,

因此二者的等价关系为:

service openstack-nova-api start ====  /usr/bin/python /usr/bin/nova-api --config-file /etc/nova/nova.conf --logfile /var/log/nova/api.log,

编写属于自己的Linux
Service命令

最近在玩Liunx,发现linux启动服务是用SERVICE + COMMAND,觉得很有意思,因为command命令本身也是一个脚本啊,比如说:service network restart;好奇心就来了,怎么能够做一个属于自己的service命令呢。

其实很简单,只要我们认识service这个命令的原理就行了。如果要知道service这个命令怎么用,你就自己man service下,在这里,我简要说下service的运行过程。举个例子来说:service network restart。

首先呢,sevice 会去寻找/etc/init.d下的network脚本,restart是network脚本里的一个参数(你可以去查看network这个脚本支持的参数),然后告诉系统运行network这个脚本,剩下的事情就交给network脚本去坐了,事实就是这么简单。

现在,你应该知道怎么编写属于自己的service命令了吧,编写一个脚本,然后把它放在/etc/init.d这个目录底下,你就可以用service +脚本名字 运行它。如果是要开机自动启动那就得用chkconfig命令了。

注意:

A、service这个命令往往是即时生效,不用开关机,但是重启后服务会回到默认状态。

B、chkconfig是用于把服务加到开机自动启动列表里,只要启动它,就能自动启动,重启后永久生效

即:chkconfig --add COMMAND 

      chkconfig COMMAND on/off    重启后永久生效

转载:https://www.cnblogs.com/lidabo/p/9298923.html

最新文章

  1. Python 爬虫 字符集乱码问题
  2. Redis批量删除KEY的方法
  3. < 独立项目 - 文本挖掘 > - 2016/10/25 第一更 - <Linux相关知识准备>
  4. iOS之地理位置及定位系统 -- 入门笔记
  5. magento数据库备份导入还原
  6. C#中的ref和out的区别
  7. /dev/socket/vold exploit 本地提权漏洞
  8. shopnc怎么开启伪静态 shopnc开启伪静态的方法
  9. How feedback work for your improvement
  10. Python 自动给数字前面补0
  11. SQL Server获取连续区间的日期
  12. HBuilder打包vue项目app后空白,并请求不到数据
  13. 12. ReadWriteLock 读写锁
  14. linux下从一台服务器复制文件或文件夹到本地
  15. WPF送走控件的focus方法
  16. pandas绘图总结
  17. AnsiStartsStr 和 空字符串
  18. yasm开源汇编器分析
  19. Log表新的RowKey设计,预Split
  20. 栋哥你好,让我们回顾最初认识C++的时候(课堂作业)

热门文章

  1. python中的函数参数的传递
  2. Django基础模型层(77-78)
  3. Quick Search Articles in My Blog
  4. Unable to compile class for JSP 的可能原因
  5. 关于Hibernate和Strtus2的xml提示问题
  6. JVM运行、类加载的全过程
  7. MSMQ—确认队列和响应队列
  8. 关于jfinal发送邮件走过的坑
  9. Git上传本地代码
  10. bootstrap-datetimepicker 时间配置,包含颜色