- https://www.cnblogs.com/lidabo/p/6226307.html
- https://blog.csdn.net/joe081207/article/details/78765968
-
http://www.cnblogs.com/caoyuanzhanlang/archive/2012/12/03/2799657.html
在linux想要運行啟動一個服務有兩種方法:
1,運行/etc/init.d/目錄下的shell腳本,還可以有快捷方式春叫,service *** start/ stop/restart /status残家,
2,直接運行/usr/bin目錄下的服務文件骑歹;
第一種方法啟動的程序可以通過service命令來管理预烙,比如說查看狀態(tài) service --status-all
查看/etc/init.d目錄,發(fā)現(xiàn)下面都是shell腳本陵刹,腳本里面運行的程序最終還是指向了/usr/bin下面的程序默伍,只不過在shell腳本中可能直接對程序的一些運行參數(shù)繼續(xù)進行了設置;
第二種方法衰琐,直接運行/usr/bin/****,如果運行時有配置文件的話也糊,需要加上 --config *****,用這種方法啟動程序后羡宙,不能用service命令查看狀態(tài)狸剃;
舉例:/etc/init.d/openstack-nova-api
<pre class="plain" style="background-color: transparent; color: rgb(0, 0, 0); font-family: Verdana,Geneva,Arial,Helvetica,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: pre-wrap; word-spacing: 0px; word-wrap: break-word;" name="code">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</pre>
然后用 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,
因此二者的等價關(guān)系為:
service openstack-nova-api start ==== /usr/bin/python /usr/bin/nova-api --config-file /etc/nova/nova.conf --logfile /var/log/nova/api.log,
最近在玩Liunx,發(fā)現(xiàn)linux啟動服務是用SERVICE + COMMAND狗热,覺得很有意思钞馁,因為command命令本身也是一個腳本啊,比如說:service network restart匿刮;好奇心就來了僧凰,怎么能夠做一個屬于自己的service命令呢。
其實很簡單熟丸,只要我們認識service這個命令的原理就行了训措。如果要知道service這個命令怎么用,你就自己man service下,在這里绩鸣,我簡要說下service的運行過程怀大。舉個例子來說:service network restart。
首先呢呀闻,sevice 會去尋找/etc/init.d下的network腳本化借,restart是network腳本里的一個參數(shù)(你可以去查看network這個腳本支持的參數(shù)),然后告訴系統(tǒng)運行network這個腳本捡多,剩下的事情就交給network腳本去坐了蓖康,事實就是這么簡單。
現(xiàn)在局服,你應該知道怎么編寫屬于自己的service命令了吧钓瞭,編寫一個腳本,然后把它放在/etc/init.d這個目錄底下淫奔,你就可以用service +腳本名字 運行它山涡。如果是要開機自動啟動那就得用chkconfig命令了。
注意:
A唆迁、service這個命令往往是即時生效鸭丛,不用開關(guān)機,但是重啟后服務會回到默認狀態(tài)唐责。
B鳞溉、chkconfig是用于把服務加到開機自動啟動列表里,只要啟動它鼠哥,就能自動啟動熟菲,重啟后永久生效
**即:chkconfig --add COMMAND **
** chkconfig COMMAND on/off 重啟后永久生效**