两个守护程序安装在统一服务器上是否部落冲突连不上服务器

一个服务器空间和数据库(租的)可以安装两个以上的网站程序吗?_百度知道
一个服务器空间和数据库(租的)可以安装两个以上的网站程序吗?
每个根目录下可以放置一个网站.它拥有与独立服务器一模一样的功能.也有部分的虚拟主机通过技术手段实现了支持多个根目录绑定默认一个虚拟主机只能放一个网站.一台云主机放几百个网站也是完全可以的.云主机其实可以理解成是一台虚拟服务器.是直接把数据上传到虚拟主机根目录的.除此以外.你也可以选择租用云主机.而且现在云主机也做的非常便宜.用IIS无限量的来发布网站.只要配置以及带宽充足.用户可以根据需要配置网站环境.有独立的操作系统和管理平台.普通配置有几百每年的.资源非常有限.但各个根目录共享一个虚拟主机的连接数.这样就实现了一个虚拟主机放多个不同网站的目的.只能放几个小网站.海腾数据杨闯为你解答.若有云主机
来自团队:
其他类似问题
为您推荐:
网站程序的相关知识
其他4条回答
能,为什么不能, 只要空间够大
如果你用的是独立服务器,应当是可以的。如果你用的是虚拟主机,是不行的。。
是可以的,您放好在对应的目录,做好解析和绑定就好
独立服务器和vps都可以无限建站的
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁UG8.0装好了打开提示:NX许可证错误-中国学网-中国IT综合门户网站
> 信息中心 >
UG8.0装好了打开提示:NX许可证错误
来源:互联网 发表时间: 14:51:14 责任编辑:鲁晓倩字体:
为了帮助网友解决“UG8.0装好了打开提示:NX许可证错误”相关的问题,中国学网通过互联网对“UG8.0装好了打开提示:NX许可证错误”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:UG8.0装好了打开提示:NX许可证错误:所需的提供商守护程序停止运行。(-97)求个解决方法!!!,具体解决方案如下:解决方案1:一般在安装ug8.0或者ug7.0等需要重新配置许可证文件的程序时,会遇到此类的问、出现此类问题的原因,一般是电脑上有多个版本的UG,致使许可证文件冲突(有些卸载不完整的程序,也可能会出现此类问题)解决方法:重新配置UG许可证服务器文件(该种方法也是解决所有此类问题的通用方法)1 打开lmtools,(该文件的位置/ug安装目录/ugs/UGSLicensing)2 多个版本的许可证服务器,容易冲突,所以这里我们要新建一个许可证文件名,比如这里的为:UGS License Server (ugslmd) ugnx8直接在service name 里面输入即可。输入许可证新的名称以后,下面的三个许可证路径就会留空在保存之前,先勾选下面的两个选项,一个是 use services(使用该服务器)另一个是strat server at powerup,勾选了第一个,这个就可以勾选了(他的意思是,下次启动计算机是自动运行该许可证服务器)配置许可证完成,运行UG8.0软件解决方案2:复制安装文件夹下“crack\UGSLicensing”文件夹里面的“ugslmd.exe”程序到要安装UGS文件夹下(默认为 C:\ProgramFiles\UGS\UGSLicensing\)替换文件.就是许可文件第1个,你没有复制到安装目录下,因为我耶遇到过
1个回答3个回答4个回答2个回答1个回答4个回答4个回答4个回答2个回答2个回答1个回答1个回答1个回答1个回答1个回答3个回答1个回答1个回答1个回答
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号UG安装卸载不可不知的七个问题_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
UG安装卸载不可不知的七个问题
上传于||暂无简介
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩20页未读,继续阅读
你可能喜欢#####UNIX#####(31)
&& &守护进程是在后台运行且不与任何控制终端关联的进程。unix系统通常有很多守护进程在后台运行,执行不同的管理任务。
&& &守护进程没有控制终端通常源于它们由系统初始化脚本启动。然而守护进程也可能从某个终端由用户在shell提示符下键入命令行启动,这样的守护进程必须亲自脱离与控制终端的关联,从而避免与作业控制,终端会话管理,终端产生信号等发生任何不期望的交互,也可以避免在后台运行的守护进程非预期的输出到终端。
&& &守护进程有多种启动方法:
&& &1.在系统启动阶段,许多守护进程由系统初始化脚本启动。这些脚本通常位于/etc目录或以/etc/rc开头的某个目录中,它们的具体位置和内容却是实现相关的。由这些脚本启动的守护进程一开始拥有超级用户权限。
&& &有若干个网络服务器通常从这些脚本启动:inetd超级服务器,web服务器,邮件服务器(经常是sendmail)。
&& &2. 许多网络服务器由inetd超级服务器启动。inetd自身由上一条中的某个脚本启动。inetd监听网络请求,每当有一个请求到达时,启动相应的实际服务器(telnet服务器,FTP服务器等)
&& &3. cron守护进程按照规则定期执行一些程序,而由它启动执行的程序同样作为守护进程运行。cron自身由第一条启动方法中的某个脚本启动
&& &4. at命令用于指定将来某个时刻的程序执行。这些程序的执行时刻到来时,通常由cron守护进程启动执行它们,因此这些程序同样作为守护进程运行。
&& &5.守护进程还可以从用户终端或在前台或在后台启动。这么做往往是为了测试守护进程或重启因某种原因而终止了的某个守护进程。
&& &因为守护进程没有控制终端,所以当有事发生时它们得有输出消息的某种方法可用,而这些消息既可能是普通的通告性消息,也可能是需由系统管理员处理的紧急事件消息。syslog函数是输出这些消息的标准方法,它把这些消息发送给syslogd守护进程。
2. syslog函数,openlog函数和closelog函数
备注:遇到类似的函数,具体说明请查看APUE
#include &syslog.h&
void syslog(int priority, const char *message,...);
void openlog(const char *ident, int options, int facility);
void closelog(void);
1) 作为守护进程运行的协议无关时间获取服务器程序
服务器程序daytimetcpsrv.c:
#include &stdio.h&
#include &netdb.h&
#include &sys/socket.h&
#include &time.h&
#include &syslog.h&
#include &string.h&
#include &stdlib.h&
#include &fcntl.h&
#include &signal.h&
#include &unistd.h&
int daemon_
#define MAXLINE 1024
#define MAXFD 64
int daemon_init(const char *pname, int facility);
int tcp_listen(const char *host, const char *serv, socklen_t *addrlenp);
int main(int argc, char **argv)
char buff[MAXLINE];
struct sockaddr_
daemon_init(argv[0], 0);
listenfd = tcp_listen(argv[1], argv[2], NULL);
for (; ;){
len = sizeof(cliaddr);
connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &len);
inet_ntop(AF_INET, &cliaddr.sin_addr, buff, sizeof(buff));
strcat(buff, &.this is a test\n&);
syslog(LOG_INFO, buff);
ticks = time(NULL);
snprintf(buff, sizeof(buff), &%.24s\r\n&, ctime(&ticks));
write(connfd, buff, strlen(buff));
close(connfd);
int daemon_init(const char *pname, int facility)
if ((pid = fork()) & 0)
return -1;
else if (pid)
if (setsid() & 0)
return -1;
signal(SIGHUP, SIG_IGN);
if ((pid = fork()) & 0)
return -1;
else if (pid)
daemon_proc = 1;
chdir(&/&);
for (i = 0; i & MAXFD; i++)
open(&/dev/null&, O_RDONLY);
open(&/dev/null&, O_RDWR);
open(&/dev/null&, O_RDWR);
openlog(pname, LOG_PID, facility);
int tcp_listen(const char *host, const char *serv, socklen_t *addrlenp)
const int on = 1;
struct addrinfo hints, *res, *
bzero(&hints, sizeof(struct addrinfo));
hints.ai_flags = AI_PASSIVE;
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
if ((n = getaddrinfo(host, serv, &hints, &res)) != 0){
printf(&tcp_listen error for %s,%s:%s\n&, host, serv, gai_strerror(n));
listenfd = socket(res-&ai_family, res-&ai_socktype, res-&ai_protocol);
if (listenfd & 0)
setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
if (bind(listenfd, res-&ai_addr, res-&ai_addrlen) == 0)
close(listenfd);
} while ((res = res-&ai_next) != NULL);
if (res == NULL)
printf(&tcp_listen error for %s,%s\n&, host, serv);
listen(listenfd, 5);
if (addrlenp)
*addrlenp = res-&ai_
freeaddrinfo(ressave);
客户端程序daytimetcpcli.c:
#include &stdio.h&
#include &netdb.h&
#include &sys/socket.h&
#define MAXLINE 1024
int tcp_connect(const char *host, const char *serv);
int main(int argc, char **argv)
char recvline[MAXLINE + 1];
struct sockaddr_in
if (argc != 3){
printf(&argument should be 3\n&);
sockfd = tcp_connect(argv[1], argv[2]);
len = sizeof(cliaddr);
getpeername(sockfd, (struct sockaddr *)&cliaddr, len);
inet_ntop(AF_INET, &cliaddr.sin_addr, recvline, sizeof(recvline));
printf(&connect to %s\n&, recvline);
while ((n = read(sockfd, recvline, MAXLINE)) & 0){
recvline[n] = 0;
fputs(recvline, stdout);
int tcp_connect(const char *host, const char *serv)
struct addrinfo hints, *res, *
struct sockaddr_in *
bzero(&hints, sizeof(struct addrinfo));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
if ((n = getaddrinfo(host, serv, &hints, &res)) != 0){
printf(&tcp_connect error for %s,%s:%s\n&, host, serv, gai_strerror(n));
sockfd = socket(res-&ai_family, res-&ai_socktype, res-&ai_protocol);
if (sockfd & 0)
if (connect(sockfd, res-&ai_addr, res-&ai_addrlen) == 0)
cliaddr = (struct sockaddr_in *)res-&ai_
close(sockfd);
} while ((res = res-&ai_next) != NULL);
if (res == NULL)
printf(&tcp_connect error for %s,%s\n&, host, serv);
freeaddrinfo(ressave);
程序运行如下:
leichaojian@ThinkPad-T430i:~$ ./daytimetcpsrv ThinkPad-T430i 9878
leichaojian@ThinkPad-T430i:~$ ./daytimetcpcli ThinkPad-T430i 9878
connect to 0.0.0.0
8 21:07:35 2014
然后我们查看/var/log/syslog这个文件,通过查找字符串“this is a test”,发现如下的语句:
8 21:07:35 ThinkPad-T430i ./daytimetcpsrv[10528]: 127.0.0.1.this is a test
2) 对daemon_init函数的分析
用于产生子进程
(2)setsid
setsid用于创建一个新的回话。当前进程变为新会话的会话头进程以及新进程组的进程组头进程,从而不再有控制终端。
(3)忽略SIGHUP信号并再次fork
忽略SIGHUP信号并再次调用fork。该函数返回时,父进程实际上是上一次调用fork产生的子进程,它被终止掉,留下新的子进程继续运行。再次fork的目的是确保本守护进程将来即使打开了一个终端设备,也不会自动获得控制终端。当没有控制终端的一个会话头进程打开一个终端设备时(该终端不会是当前某个其他会话的控制终端),该终端自动成为这个会话头进程的控制终端。然而再次调用fork之后,我们确保新的子进程不再是一个会话头进程,从而不能自动获得一个控制终端。这里必须霍略SIGHUP信号,因为当会话头进程(即首次fork产生的子进程)终止时,其会话中的所有进程(即再次fork产生的子进程)都收到SIGHUP信号。
(4)将stdin,stdout和stderr重定向到/dev/null
因为之前关闭了所有的描述符,所以要打开这三个基本描述符并且重定向,让read返回0,write系统调用丢弃所写的数据(书上说如果调用了syslog函数,则不要调用类似printf之类的函数,因为会被简单的忽略掉)。因为如果继续关闭,则万一有新的进程打开一个描述符,却占用了0,1,2这三个描述符,则可能导致将错误的数据发送给客户端。
3. inetd守护进程
&&& 旧的服务器只是等待客户请求的到达,如FTP,Telnet,TFTP等。这些进程都是在系统自举阶段从/etc/rc文件中启动,而且每个进程执行几乎相同的启动任务:创建一个套接字,把本服务器的众所周知端口捆绑到该套接字,等待一个连接或一个数据报,然后派生子进程。子进程为客户提供服务,父进程则继续等待下一个客户请求。这个模型存在两个问题:
(1)所有这些守护进程含有几乎相同的启动代码,既表现在创建套接字上,也表现在演变成守护进程上(类似我们的daemon_init函数)
(2)每个守护进程在进程表中占据一个表项,然而它们大部分时间处于睡眠状态。
&&& 而新版本的系统通过提供inetd守护进程(因特网超级服务器)来简化问题:
(1)通过inetd处理普通守护进程的大部分启动细节来简化守护进程的编写。这么一来每个服务器不再有调用daemon_init函数的必要。
(2)单个进程就能为多个服务等待外来的客户请求,以此取代每个服务一个进程的做法。这么做减少了系统中的进程总数。
1) inetd守护进程的工作流程
(0)对xinetd.conf文件的说明
service_name
必须在/etc/services文件中定义
socket_type
stream(对于tcp)或dgram(对于udp)
必须在/etc/protocols文件中定义:tcp或udp
对于TCP一半为nowait,对于UDP一般为wait
login-name
来自/etc/passwd的用户名,一般为root
server-program
调用exec指定的完整路径名
server-program-arguments
调用exec指定的命令行参数
下面是xinetd.conf文件中的若干行:
/usr/bin/ftpd
/usr/bin/telnetd
(1)socket()
&&& 在启动阶段,读入/etc/xinetd.conf文件并给该文件中指定的每个服务创建一个适当类型(字节流或数据报)的套接字。inetd能够处理的服务器的最大数目取决于inetd能够创建的描述符的最大数目。新创建的每个套接字都被加入到将由某个select调用使用的一个描述符集中。
(2)bind()
&&& 为每个套接字调用bind,指定捆绑相应服务器的众所周知端口和通配地址。这个TCP或UDP端口号通过调用getservbyname获得,作为函数参数的是相应服务器在配置文件中的service-name字段和protocol字段。
(3)listen()
&&& 对于每个TCP套接字,调用listen以接收外来的连接请求。对于数据报套接字则不执行本步骤
(4)select()等待可读条件
&&& 创建完毕所有套接字之后,调用select等待其中任何一个套接字变为可读。TCP监听套接字将在有一个新连接准备好可被接受时变为可读,UDP套接字将在有一个数据报到达时变为可读。inetd的不部分时间花在阻塞于select调用内部,等待某个套接字变为可读。
(5)accept()
&&& 当select返回指出某个套接字已可读之后,如果该套接字是一个TCP套接字,而且其服务器的wait-flag值为nowait,那就调用accept接受这个新连接。
(6)fork()
&&& inetd守护进程调用fork派生进程,并由子进程处理服务请求。子进程关闭要处理的套接字描述符之外的所有描述符:对于TCP服务器来说,这个套接字是由accept返回的新的已连接套接字,对于UDP服务器来说,这个套接字是父进程最初创建的UDP套接字。子进程dup2三次,把这个待处理套接字的描述符复制到描述符0,1和2,然后关闭原套接字描述符(由accept返回的已连接的TCP套接字)。
&&& 子进程然后调用exec执行由相应的server-program字段指定的程序来具体处理请求,相应的server-program-arguments字段值则作为命令行参数传递给该程序。
&&& 如果第五步中的select返回的是一个字节流套接字,那么父进程必须关闭已连接套接字(就像标准并发服务器那样)。父进程再次调用select,等待下一个变为可读的套接字。(因为TCP设置的nowait,意味着inetd不必等待某个子进程终止就可以接收对于该子进程所提供之服务的另一个连接。如果对于某个子进程所提供之服务的另一个连接确实在该子进程终止之前到达:accept返回,那么父进程再次调用select:意味着要关闭已连接的套接字,继续执行步骤4,5,6)
&&& 给一个数据报服务指定wait标志导致父进程执行的步骤发生变化。这个标志要求inet必须在这个套接字再次称为slect调用的候选套接字之前等待当前服务该套接字的子进程终止。发生的变化有以下几点:
[1]fork返回到父进程时,父进程保存子进程的进程ID。这么做使得父进程能够通过查看由waitpid返回的值确定这个子进程的终止时间
[2]父进程通过使用FD_CLR宏关闭这个套接字在select所用描述符集中对应的位,达成在将来的select调用中禁止这个套接字的目的。这点意味着子进程将接管该套接字,直到自身终止为止。
[3]当子进程终止时,父进程被通知一个SIGCHLD信号,而父进程的信号处理函数将取得这个子进程的进程ID。父进程通过打开相应的套接字在select所用描述符集中对应的位,使得该套接字重新成为select的候选套接字。
2)inetd守护进程的服务器程序
#include &stdio.h&
#include &stdlib.h&
#include &sys/socket.h&
#include &string.h&
#include &signal.h&
#include &fcntl.h&
#include &unistd.h&
#include &time.h&
#include &netinet/in.h&
#define MAXLINE 1024
int main(int argc, char **argv)
struct sockaddr_
buff[MAXLINE];
openlog(argv[0], 0);
len = sizeof(cliaddr);
getpeername(0, (struct sockaddr *)&cliaddr, &len);
inet_ntop(AF_INET, (struct sockaddr *)&cliaddr.sin_addr, buff, sizeof(buff));
printf(&connect from %s\n&, buff);
ticks = time(NULL);
snprintf(buff, sizeof(buff), &%.24s\r\n&, ctime(&ticks));
write(0, buff, strlen(buff));
在/etc/service中增加:
mydaytime 9999/tcp
在/etc/xinetd.conf中增加:
mydaytime stream tcp nowait leichaojian /home/leichaojian/newdaytimetcpserv3 newdaytimetcpserv3
程序输出:
leichaojian@ThinkPad-T430i:~$ ./newdaytimetcpserv3
connect from 0.0.0.0
3 14:27:31 2014
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:25834次
排名:千里之外
原创:36篇
文章:12篇
阅读:4481
(11)(13)(12)(图文教程)
(首次公开)
现在的位置:
UG8.0装好了打开提示:NX许可证错误:所需的提供商守护程序停止运行(-97)
一般在安装或者等需要重新配置许可证文件的程序时,会遇到此类的问、出现此类问题的原因,一般是电脑上有多个版本的UG,致使许可证文件冲突(有些卸载不完整的程序,也可能会出现此类问题)现在你也不用担心了,只需要按着下面的方法去做就可以了,每一步都要认真的看,不要落下每一个细节,尽量把每一个截图都放出来。确保你可以安着步骤完成,并且顺利安装成功UG。
NX许可证错误:所需的提供商守护程序停止运行(-97)_UG安装常见问题_
解决方法:重新配置UG许可证服务器文件(该种方法也是解决所有此类问题的通用方法)
1 打开lmtools,(该文件的位置/ug安装目录/ugs/UGSLicensing)
2 多个版本的许可证服务器,容易冲突,所以这里我们要新建一个许可证文件名,比如这里的为:UGS License Server (ugslmd) ugnx8 直接在service name 里面输入即可。
输入许可证新的名称以后,下面的三个许可证路径就会留空,需要我们重新指定。如下图所示:
指定许可证,一定要确保这里指定的许可证文件为的许可证文件!
如图所示:
指定第一个文件 lmgrd.exe
指定第二个 许可证文件,ugs4.lic
指定第三个 ugslicensing.log
在保存之前,先勾选下面的两个选项,一个是 use services(使用该服务器)另一个是strat server at powerup,勾选了第一个,这个就可以勾选了(他的意思是,下次启动计算机是自动运行该许可证服务器)
点击“是”
认真看下面的红色字体的标注:
配置许可证完成,运行,如图所示:
最后总结一下:
重新配置UG许可证服务器文件
1 打开lmtools,(该文件的位置/ug安装目录/ugs/UGSLicensing)
2 多个版本的许可证服务器,容易冲突,所以这里我们要新建一个许可证文件名,比如这里的为:UGS License Server (ugslmd) ugnx8直接在service name 里面输入即可。输入许可证新的名称以后,下面的三个许可证路径就会留空在保存之前,先勾选下面的两个选项,一个是 use services(使用该服务器)另一个是strat server at powerup,勾选了第一个,这个就可以勾选了配置许可证完成,运行
如果还有其他的问题 请扫描下面的二维码关注我们,如果本文确实对你有所帮助请转走吧。
亲!如果您觉得这篇文章对你很有帮助,请分享一下吧!谢谢您
万分感谢您对本文的分享!
/* 图片广告开始*/
/* 图片结束*/
【上篇】【下篇】
您可能还会对这些文章感兴趣!
------====== 本站公告 ======------
自学街站长有着多年UG工作的经验,如果你是新手,欢迎的你的到来,我们共同交流,不管你是UG产品设计还是UG模具设计、UG数控加工、UG逆向造型,我们都可以一起进步,遇到UG问题可以加QQ探讨: 谢谢!扫一扫微信添加有惊喜!
<img style="width:225height:225px" src="/images/weixin.png"
同分类最新文章
免责申明:本站部分图文来自互联网,如果侵犯您的权益,请通知我们,我们会在第一时间删除!自学街为大家提供专业的技术交流平台!
申明:本站文字除标明出处外皆为作者原创,转载请注明原文链接。

我要回帖

更多关于 部落冲突服务器维护 的文章

 

随机推荐