Моя интересная проблема в том, что при запуске некоторых rc.d
сценарии, которые они фактически не возвращаются в корневую оболочку, но оставляют меня в промежуточной оболочке в качестве пользователя, от имени которого они должны работать.
Побочным эффектом является то, что желаемая служба фактически не запускается, пока я 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 root@i386-builder.daemonology.net:/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 с запрошенными выходными данными
Вывод sh -x mysql-server start
Обновление 3 с ответом!
@ Стив Уиллс заставил меня смотреть в правильном направлении. Конечная причина заключалась в том, что я вызывал оболочку bash с конца .cshrc
для учетной записи root. Этот файл должен быть проанализирован при запуске su через rc.d
сценарии и добавленная ссылка на другую оболочку объясняет, почему она будет ждать, пока я exit
. После удаления ссылки сценарии rc.d начали работать должным образом.
Спасибо!!
Можете ли вы поделиться своими /etc/rc.conf и / или /etc/rc.conf.local? Возможно, вы установили что-то, что вызывает это. Кроме того, попробуйте запустить его как «запуск службы mysql-server» и посмотрите, произойдет ли то же самое?
В su(1)
команда превращается в заданного пользователя или запускает команду, заданную как заданный пользователь. Не глядя на сценарий, невозможно узнать, что происходит. По-видимому, сценарий просто не заканчивается или продолжает чего-то ждать. Возможно, скрипт не работает, возможно, он ждет чего-то, что занимает много времени (больше, чем ваше терпение). Есть ли какая-нибудь оболочка, которую вы должны использовать для запуска этих скриптов? (В моей Fedora system start some-service
для этого).