[原创]为mpd5指定启动配置文件_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2851 | 回复: 0   主题: [原创]为mpd5指定启动配置文件        下一篇 
wulcan
版主
等级:中校
经验:1795
发帖:124
精华:0
注册:2014-3-19
状态:离线
发送短消息息给wulcan 加好友    发送短消息息给wulcan 发消息
发表于: IP:您无权察看 2015-4-14 14:47:48 | [全部帖] [楼主帖] 楼主

在FreeBSD正常的启动脚本中,有一个required_files参数,这个参数有两个作用:一方面用来检测文件是不是存在,如果该文件不存在,则会报一个错,然后就不再执行;另一个用处是用来指定程序的配置文件。
在mpd5的启动脚本中,也有这个参数,但是修改了这个参数之后,重新启动mpd5却没有作用:

cat /usr/local/etc/rc.d/mpd5
……
pidfile="/var/run/${name}.pid"
command="/usr/local/sbin/${name}"
required_files="/config/mpd.conf"
……
% ps -axww | grep mpd
14123 - Is 4:04.40 /usr/local/sbin/mpd5 -p /var/run/mpd5.pid -b
15086 0 S+ 0:00.00 grep mpd


从上面的结果可以看到,mpd5仍然采用默认的配置,这个参数没有起作用。

哪儿出现问题呢?接着读脚本吧,mpd5脚本写的非常简练,就二十来行而已,是一个不错的启动脚本教程:

. /etc/rc.subr
name="mpd5"
rcvar=mpd_enable
load_rc_config ${name}
: ${mpd_enable="NO"}
: ${mpd_flags="-b"}
pidfile="/var/run/${name}.pid"
command="/usr/local/sbin/${name}"
required_files="/usr/local/etc/${name}/mpd.conf"
case "${mpd_flags}" in
*-p\ *)
echo "ERROR: \$mpd_flags includes -p option." \
"PID file is already set to $pidfile."
exit 1
;;
*)
command_args="-p ${pidfile} ${mpd_flags}"
;;
esac
run_rc_command "$1"


看最关键的那句:command_args,后面竟然没有required_files的事,所以在启动的时候,当然就不读required_files了。
可以对这句稍微修改一下:

command_args="-p ${pidfile} ${mpd_flags} -f ${required_files}"


重启后,再看进程信息,这次显示的命令行是正确的了:

% ps -axww | grep mpd
14123  -  Is        4:07.33 /usr/local/sbin/mpd5 -p /var/run/mpd5.pid -b -f / config/mpd.conf
15103  0  R+        0:00.00 grep mpd


其实到这地方还不能算完美,因为FreeBSD一直不建议修改rc.d里面的东西,而是建议从rc.conf里面解决,那么是不是可以在rc.conf里面解决呢?当然可以了!
在mpd的启动脚本里,可以看到有个mpd_flags变量,这个变量就是读取rc.conf里面的那个参数,这个文件就可以在flags里指定,所以可以在rc.conf里加上一行:

mpd_flags=”-f /config/mpd.conf”


但是这样直接重启mpd的话,会直接进入一个终端里面,屏幕上会显示好多东西,而不是返回命令行提示符:

# # ./mpd5 start
Starting mpd5.
Multi-link PPP daemon for FreeBSD
process 55278 started, version 5.7 (root@101amd64-default-job-15 05:39  6-Mar-2015)
[]
Available commands:
authname : Choose link by auth name     bundle   : Choose/list bundles
close    : Close a layer                create   : Create new item
destroy  : Destroy item                 exit     : Exit console
iface    : Choose bundle by iface       help     : Help on any command
link     : Choose link                  load     : Read from config file
log      : Set/view log options         msession : Ch. bundle by msession-id
open     : Open a layer                 quit     : Quit program
repeater : Choose/list repeaters        session  : Choose link by session-id
set      : Set parameters               unset    : Unset parameters
show     : Show status


这是因为mpd本身有个默认的-b参数,该参数指示mpd进入“守护状态”(deamon),对于windows的概念,就是进入服务状态,相当于后台运行,所以要正常使用的话,还需要加上一个-b参数,把rc.conf里面的那行改为:

mpd_flags=” -b -f /config/mpd.conf”




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论