如何在 Cygwin 上运行 inetd 守护进程?

如何在 Cygwin 上运行 inetd 守护进程?

我想让 inetd 守护进程在运行 Cygwin 的机器上工作。我知道如何在 Centos 4 上执行此操作,但在 Cygwin 上似乎不起作用。

我尝试过的命令是:

cygrunsrv -I xinetd -d "Cygwin Xinetd" -p /usr/sbin/xinetd -e CYGWIN=ntsec
cygrunsrv -S xinetd
/etc/rc.d/init.d/xinetd start

在 Linux 上,我只需执行以下操作:

/sbin/service xinetd restart

编辑我的配置文件后:

/etc/xinetd.d/<myAppHere>

我已经在 Cygwin 上创建了此文件,但似乎无法弄清楚如何启动该服务。


[si-xp-pro-sp3 ~] /etc/rc.d/init.d/xinetd start
/etc/rc.d/init.d/xinetd: line 22: /etc/init.d/functions: No such file or directory
Starting xinetd: /etc/rc.d/init.d/xinetd: line 59: daemon: command not found

[si-xp-pro-sp3 ~] /usr/sbin/xinetd start
Usage: xinetd [-d] [-f config_file] [-filelog filename] [-syslog facility] [-reuse]
[-limit proc_limit] [-pidfile filename] [-logprocs limit] [-shutdownprocs limit]
[-cc interval]

答案1

cygrunsrv 可以完成大部分神奇的功能,但您的 Windows 文件系统权限需要开放。

这不仅仅是执行 ls -l

您必须通过 CMD.EXE 或更简单的 EXPLORER.EXE GUI 执行此操作。

您特别需要为 SYSTEM 完全控制打开以下目录(文件夹):

C:\CYGWIN
C:\CYGWIN\VAR
C:\CYGWIN\VAR\LOG

选择每个文件属性并查找“安全”选项卡。

如果没有“安全”选项卡,则表示您使用的是“简单文件共享”。使用“工具”->“文件夹选项”->“查看”关闭该选项,然后滚动到最后一个复选框:[ ] 使用简单文件共享(推荐)

确保未选中 - 然后您应该能够进入每个文件夹的“安全”选项卡。

确保 SYSTEM 列在组或用户名下。如果没有,请添加它。然后确保当 SYSTEM 突出显示时,已选中“完全控制允许”。

请参阅此链接了解有关 sshd 问题的讨论 - http://www.noah.org/ssh/cygwin-sshd.html

答案2

运行/usr/bin/xinetd-config设置 xinetd 应该可以解决这两个错误:

/etc/rc.d/init.d/xinetd:第 22 行:/etc/init.d/functions:没有此文件或目录

启动 xinetd:/etc/rc.d/init.d/xinetd:第 59 行:守护进程:未找到命令

答案3

/etc/rc.d/init.d/xinetd 存在吗?你收到了什么样的信息?

您是否尝试过简单地运行 xinetd 或 /usr/sbin/xinetd?

简单来说,并不意味着使用“start”作为参数。请查看 xinetd 的手册页。

从根本上讲,您混淆了 /etc/init.d 和 /usr/sbin 的用法。init.d 文件夹包含用于自动启动服务器进程的 shell 脚本,但也可以手动使用。sbin 包含应用程序的二进制文件。init.d 中的脚本都接受 start 和 stop 等参数,但如果您想知道 sbin 二进制文件接受哪些参数,则必须阅读手册页。

当我说简单地运行 xinetd 时,我的意思是输入以下 shell 命令。

xinetd

如果不起作用,那么尝试

/usr/sbin/xinetd

当您在命令行中输入虚假参数时,xinetd 会感到困惑,甚至不会尝试启动。

答案4

方法如下:

xinetd-config
cygrunsrv -I xinetd -p /usr/sbin/xinetd -d 'CYGWIN xinetd' -a '-stayalive -pidfile /var/run/xinetd.pid'
cygrunsrv -S xinetd

相关内容