content (Created by TxtBrowser)
1. cygserver: 调用semget出错的问题: "Bad system call"
2. 如何生成 coredump 文件?
3. 启动apache.
4. 提供telnet, ftp, sshd服务
. 4.1 ssh服务在cygwin上架设指南
刚开始使用Cygwin的时候觉得挺难的, 随着时间的推移和对Cygwin的熟悉, 越来越感觉到
Cygwin的强大. 但是给我的感觉是它在模拟Linux操作系统时, 尤其是复杂应用程序的时
候还显得无能为力. 直到遇到了强大的Cygwin服务程序, 我才又一次感觉到了Cygwin的强
大.
1. cygserver: 调用semget出错的问题: "Bad system call"
Cygwin有一些特殊的功能, 如IPC Message Queues, XSI IPC Semaphores, XSI IPC
Shared Memory.默认是没有打开的, 大概是为了安全等问题. 要想使用这些功能, 必须先
启动cygserver程序或服务. 否则会报错: "Bad system call"
cygserver可以作为一个服务安装, 启用的方法如下:终端执行:
$cygserver-config(按照提示配置)
$net start cygserver(cygserver作为Windows操作系统的一个服务运行)
$net stop cygserver(停止cygserver, 也可以在Windows任务管理器里结束进程)
在$CYGWIN/Cygwin.bat里添加下面的配置:
$set CYGWIN=server
当然你也可以在每次需要的时候手动启动:
$cygwinserver &
2. 如何生成 coredump 文件?
在缺省的 cygwin 环境下出错时并不产生 core 文件,而是产生一个stackdump文件,该
文件所含信息比core文件少,不能当作core文件使用.为了产生真正的core文件,可以配置
好下面的环境变量:
set CYGWIN="$CYGWIN error_start=dumper.exe -d %1 %2"(在d:\cygwin\Cygwin.bat文件里)
或者:
export CYGWIN="$CYGWIN error_start=dumper.exe -d %1 %2"(在.bashrc文件里)
coredump时, cygwin会调用dumper.exe程序在当前目录下产生core文件. 但是不是对这个
core文件抱太大的指望. 根据我的经验, 很多时候用bt列出的调用栈都是不可用的. 我也
不知道为什么. 全局变量好像可以查看.
3. 启动apache.
安装Cygwin时选择Apache-2.2进行安装
vi ~/.bashrc 添加如下内容(或者在windows环境变量里面配置)
CYGWIN=server
export CYGWIN
执行 . ~/.bashrc 让其生效
执行cygserver-config
并启动cygserver,
net start cygserver
最后执行 /usr/sbin/apachectl2 start 启动Apache
打开浏览器访问http://localhost 检查, it works!
4. 提供telnet, ftp, sshd服务
既然是UNIX的模拟环境,当然要有telnet,ftp才好用。
简单的办法就是安装xinetd服务:
$cygrunsrv -I xinetd -p /usr/sbin/xinetd -d ‘CYGWIN xinetd’ -1 /dev/null -2 /dev/null
$cygrunsrv -S xinetd
2006.05.17
4.1 ssh服务在cygwin上架设指南
sshd 服务在cygwin上默认是不开启的, 可能是出于安全的需要. 但是有些服务可能需要
cygwin作为一个sshd服务器. 这时你需要手动打开sshd服务.[4]
1) 先确认一下cygrunsrv.exe 已经安装.
whereis cygrunsrv
2) 生成ssh_config文件
这时候并不能起动sshd服务的, 先运行ssh-host-config 会提示你一些信息, 照着做就是
了, 多数是yes, 在选择是否加载为service的时候小心一点, 这里的service是指windows
的service, 即使cygwin不启动, sshd也会在开机的时候启动起来.
3) 启动或停止sshd
net start sshd (cygrunsrv -S sshd)
net stop sshd
4) 实施过程
打开cygwin控制台, 输入ssh-host-config, 一路yes, 提示CYGWIN值时, 输入netsec tty.
启动sshd服务用: net start sshd 或 cygrunsrv --start sshd; 停止sshd服务用:net
stop sshd 或 cygrunsrv --stop sshd