我遇到的有趣的问题是,当运行某些rc.d
脚本时,它们实际上并没有退回到根 shell,而是让我以它们应该运行的用户身份留在中间 shell 中。
副作用是,所需的服务直到我exit
从这个内壳中启动后才真正启动。如下所示:
[root@zeb2 /usr/local/etc/rc.d]# ./mysql-server start
Starting mysql.
[mysql@zeb2 /usr/local/etc/rc.d]$ ps ax |grep mysql
3352 0 S 0:00.01 /bin/sh ./mysql-server start
3357 0 S 0:00.01 su -m mysql -c sh -c "/usr/sbin/daemon -c -f /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysq
3358 0 S 0:00.01 _su -m -c sh -c "/usr/sbin/daemon -c -f /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.
3364 0 R+ 0:00.00 grep mysql
[mysql@zeb2 /usr/local/etc/rc.d]$ exit
exit
[root@zeb2 /usr/local/etc/rc.d]# ps ax |grep mysql
3366 ?? Ss 0:00.02 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var/d
3636 ?? S 0:00.13 [mysqld]
3639 0 S+ 0:00.00 grep mysql
[root@zebes2 /usr/local/etc/rc.d]#
问题似乎出在su
命令上。我安装的每个端口上都不会发生这种情况,但和都会发生这种情况MySQL
。SABNzbd
如果服务器需要重新启动并且我启用了服务,这也会导致问题,rc.conf
因为它将进入内壳并挂起启动,直到我可以本地登录并输入 exit。
[root@zeb2 /usr/local/etc/rc.d]# uname -a
FreeBSD xxx.xxx.xxx.net 9.0-RELEASE-p3 FreeBSD 9.0-RELEASE-p3 #0: Tue Jun 12 01:47:53 UTC 2012 [email protected]:/usr/obj/usr/src/sys/GENERIC i386
更新了下面的 rc.conf 输出
[root@zeb2 /usr/bin]# cat /etc/rc.conf |grep -v '#'
syslogd_flags="-a dd-wrt.om.cox.net:* -vv"
sshd_enable="YES"
ifconfig_em0="inet 192.168.1.3 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
hostname="zeb2.om.cox.net"
webmin_enable="YES"
samba_enable="YES"
uuidd_enable="YES"
denyhosts_enable="YES"
inetd_enable="YES"
mysql_enable="YES"
更新 2,并请求输出
更新 3 并给出答案!
.cshrc
@Steve Wills 让我找到了正确的方向。最终原因是因为我从root 帐户的末尾调用了 bash shell 。在rc.d
脚本中运行 su 时必须解析此文件,而对另一个 shell 的添加引用解释了为什么它会等待我exit
。删除引用后,rc.d 脚本开始按预期工作。
谢谢!!
答案1
您能分享一下您的 /etc/rc.conf 和/或 /etc/rc.conf.local 吗?也许您设置了某些内容,导致了这种情况。另外,尝试将其作为“service mysql-server start”运行,看看是否会发生相同的情况?
答案2
命令su(1)
更改为给定的用户或以给定用户的身份运行给定的命令。如果不查看脚本,就无法知道发生了什么。大概是脚本没有结束,或者一直在等待某事。也许脚本坏了,也许它在等待某事,而这需要很长时间(超过你的耐心)。是否有一些你应该用来运行这些脚本的包装器?(我的 Fedora 有system start some-service
这个)。