精华内容
下载资源
问答
  • Samba服务器是用来实现Linux与Windows系统之间文件传输服务,如果经常需要在两系统之间传送文件,安装Samba并配置共享路径是很有益 如下是整个详细配置过程,使用Ubuntu12.04LTS,网上也有很其他配置方法...

    Samba服务器是用来实现Linux与Windows系统之间文件传输服务的,如果经常需要在两个系统之间传送文件,安装Samba并配置共享路径是很有益的

    如下是整个详细的配置过程,使用Ubuntu12.04LTS,网上也有很多其他配置方法,但是大多含糊且繁琐

    一. samba的安装:

    sudo apt-get insall samba
    sudo apt-get install smbfs
    

    二. 创建共享目录:

    注意userdir是一个已经存在的用户在home目录下的用户目录,如果你为用户 zhangsan创建共享文件夹,那么将userdir替换为zhangsan即可

    share是共享文件夹的名称,也可以换成其他自己喜欢的目录名

    mkdir /home/userdir/share
    sodu chmod 777 /home/userdir/share

    
    

    三. 创建Samba配置文件:

    1. 保存现有的配置文件(修改配置文件之前的一个良好习惯)

    sudo cp/etc/samba/smb.conf /etc/samba/smb.conf.bak

    2. 修改现配置文件

    sudo vim  /etc/samba/smb.conf

    在smb.conf最后添加

    [share]
          path = /home/phinecos/share
          available = yes
          browsealbe = yes
          public = yes
          writable = yes



    四. 创建samba帐户

    sudo touch /etc/samba/smbpasswd
    sudo smbpasswd -a userid

    userid是新的Samba的账户,然后会要求你输入samba帐户的密码

    密码确认之后就添加成功。

     

    [如果没有第四步,当你登录时会提示 session setup failed: NT_STATUS_LOGON_FAILURE]


    五. 重启samba服务器

    注意重启时,init.d目录下是否存在samba,本机实际目录下不存在samba,而是smbd

    sudo /etc/init.d/sambarestart


    六. 测试

    smbclient -L//localhost/share


    七 使用

    可以到windows下输入ip使用了,在文件夹处输入 "\\" + "ip或主机名" + "\" +"share"

    例如:

    \\223.168.1.101\share


    展开全文
  • 摘要:本文主要记录linux线程并发服务器开发,在次之前,我想先梳理一下线程相关知识,闲啰嗦道友可以直接略过,后面会有源代码链接和测试结果。 一、线程和进程 1、线程是进程一条执行路径,称为轻量级...

    摘要:本文主要记录linux下多线程并发服务器开发,在次之前,我想先梳理一下线程相关的知识,闲啰嗦的道友可以直接略过,后面会有源代码链接和测试结果。

    一、线程和进程

    • 1、线程是进程的一条执行路径,称为轻量级进程。

    • 2、所有线程都是在同一进程空间运行,共享该进程中的全部系统资源,例如虚拟地址空间,文件描述符和信号处理等等。

      3、虽然说线程在同一进程空间运行,但是每个线程有各自的调用栈、寄存器环境、线程本地存储等。

      4、进程中的多个线程并行执行不同的任务,达到并发的作用。
      5、不同程序间交换数据,对于多进程,需要在用户空间和内核空间进行频换切换,开销大。对于多线程来说,使用全局变量,只需要在用户空间切换,开销小,效率高。

    二、主线程和子线程

    • 1、对于c和c++,我的理解是main函数就是主线程,因为程序运行是从main函数开始的,然后再main函数中创建的新进程就是子进程,每个子进程都有自己的线程id,多个子进程之间是平级的,同时运行,没有先后顺序。

    • 2、主线程和子线程的关系:主线程退出,所有子线程就会退出,这时整个进程结束或者僵死。

      3、为了避免僵死状态,主线程和子线程可会合和相分离两种关系。

         (1)、可会合:主线程等待子线程结束之后,在做下一步操作,这样整个程序就会有条不紊地结束,释放掉所有占用的资源。
         
         (2)、相分离:子线程的结束和主线程之间没有关系,子线程结束后自动释放掉资源,主线程无需等待,相比可会合,高效稳定得多。
      

    三、多线程可能用到的知识

    • 1、临界资源:多个线程共享的资源,比如一个变量。 2、临界区:临界资源的范围。

    • 3、互斥锁:多个线程共享一个临界资源,难免会发生竞争,为了避免发生竞争,就需要用到互斥锁。

      4、死锁:用到互斥锁的话,可能会产生死锁,当A线程正在使用资源1的同时想要使用资源2,但是资源2被线程B持有,如果此时线程B也想使用资源1,A和B就会打架,实力不相上下,谁也不想把资源让给对方,此时就产生死锁了。

      5、总结一下产生死锁的条件就是:互斥、占有且等待、循环等待、不可抢占。

    四、多线程编程相关函数

    1、线程属性设置函数,可参考博客:https://www.cnblogs.com/jacklikedogs/p/4030048.html。在项目中我们一般主要设置线程堆栈大小、线程分离状态两个属性,其他可以使用默认值。

    typedef struct
               {
                       int                           detachstate;     线程的分离状态,非分离	状态只有当pthread_join() 函数返回时,创建的线程才算终,才能释放自己占用的系统资源
                       int                          schedpolicy;   线程的调度策略
                       struct sched_param      schedparam;   线程的调度参数
                       int                          inheritsched;    线程的继承性
                       int                          scope;          线程的作用域
                       size_t                      guardsize; 线程栈末尾的警戒缓冲区大小
                       int                          stackaddr_set;
                       void *                     stackaddr;      线程栈的位置
                       size_t                      stacksize;       线程栈的大小
                }pthread_attr_t;
    
      
    

    2、创建进程函数

     int pthread_create(
                        pthread_t *restrict tidp,   //新线程ID。
                        const pthread_attr_t *restrict attr,  //线程属性,默认为NULL
                        void *(*start_rtn)(void *), //子进程执行的程序,函数指针
                        void *restrict arg //子进程函数的参数,这个参数类型为任意类型,所以子进程需要多个参数时,我们需要打包成一个结构体,传                   
       //入结构体
                         ); 
    

    3、销毁结构体函数

    int pthread_attr_destroy(pthread_attr_t *attr); //结构体使用结束后应该销毁
    成功返回0

    4、会合函数

    int pthread_join(pthread_t thread, void **retval);//主线程要等待非分离的子线程结束才能完全释放资源
    成功返回0

    5、初始化锁函数

     Int  pthread_mutex_init(pthread_mutex_t  *restrict_mutex,//锁的一种属性结构体
                              const pthread_mutextattr_t *restrict attr//NULL为默认值普通锁
                             )
    

    6、锁操作函数

    int pthread_mutex_lock(pthread_mutex_t *mutex);//获取阻塞锁
    int pthread_mutex_trylock(pthread_mutex_t *mutex);//获取非组赛锁
    int pthread_mutex_unlock(pthreadd_mutex_t *mutex)//释放锁
    
    

    五、代码实现

    注:服务器和客户端相互配合使用,这里只贴出服务器server的主程序main程序,main程序中调用的一些用户程序包含在其他的c文件,我将它提交的git服务器进行管理,有需要的朋友点击以下链接查看。

    服务器端完整代码链接:点击查看

    客户端完整代码链接:点击查看

    server_main.c:
    
    #include "server.h"
    int main(int argc,char **argv)
    {
    
    	int		server_port;
    	int		sockfd 	= -1;
    	int		clienfd	= -1;
    	int		re_val 	= -1;
    
    	pthread_t 	pthread_id;
    
    	struct sockaddr_in   clien_addr;
    	socklen_t            clienaddr_len;
    
    	//pthread_args_t       pthread_args ;
    	pthread_args_t       *pthread_args ;
    
    	//参数解析
    	re_val = argument_parse(argc, argv, &server_port);
    	if(re_val < 0)
    	{
    		printf("参数解析错误!\n");
    		exit(0);
    	}
    
    	//套接字初始化
    	re_val = socket_init(server_port,&sockfd);
    	if(re_val < 0)
    	{
    		printf("套接字初始化错误!\n");
    	}
    
    	//服务器开始工作
    	while(1)
    	{	
    		//等待客户端连接上来
    		printf("serve is waitting to connect new client...\n");
    		mylog(__FUNCTION__,__LINE__,INFO,"serve is waitting to connect new client...:%s\n",strerror(errno));
    
    		if((clienfd = accept(sockfd,(struct sockaddr *)&clien_addr,&clienaddr_len)) <0 )
    		{
    
    			printf("serve accept failed: %s\n",strerror(errno));
    			mylog(__FUNCTION__,__LINE__,ERROR,"server accept faild:%s\n",strerror(errno));
    			return -1;
    		
    		}
    		printf("Accept new client[%s:%d] scuccessfully.\n",inet_ntoa(clien_addr.sin_addr),ntohs(clien_addr.sin_port));
    		mylog(__FUNCTION__,__LINE__,INFO,"Accept new client[%s:%d] scuccessfully.\n",\
    			inet_ntoa(clien_addr.sin_addr),ntohs(clien_addr.sin_port));
    
    
    		//线程开始	
    		pthread_args = (pthread_args_t *)malloc(sizeof(pthread_args_t));
    		//pthread_args.clienfd = clienfd;
    		pthread_args->clienfd = clienfd;	
                                           
     		thread_start(&pthread_id, pthread_work, pthread_args);
    
    	}
    	return 0;
    }
    
    
    

    七、测试结果

    流程:通过客户端采集数据,这里采集的是室内环境下的温度,然后通过TLV(用户自定义协议)发送给服务器中的数据库中保存。 以下显示图片均是服务器端接收到的数据,数据格式是:设备号28-041731f7c0ff + 温度 + 时间。

    第一次测试结果:在这里插入图片描述
    显示一些特殊符号<、[ 等乱码,经过检查代码发现下面一个问题:close(sockfd);我以为客户端连接上建立了新的文件描述符,这个描述符就可以关闭,其实不然,关闭就会出现乱码,所以后面的程序中直接将它删除,数据正常。

    		//线程开始	
    		//close(sockfd);
    		pthread_args = (pthread_args_t *)malloc(sizeof(pthread_args_t));
    		//pthread_args.clienfd = clienfd;
    		pthread_args->clienfd = clienfd;	
                                           
     		thread_start(&pthread_id, pthread_work, pthread_args);
    
    
    

    第二次测试结果:
    在这里插入图片描述
    client[4]代表第一个客户端已连接
    client[5]代表第二个客户端已连接

    client[4]单独连接的适合一切正常,但是当client[5]连接上来的时候,client[4]就被顶下去了。和小伙伴们一起分析:

    *定义子线程参数结构体*/
    typedef struct
    {
    	int		clienfd;//客户端文件描述符
    	int		count;//线程数
    	pthread_mutex_t	lock;//线程锁
    
    }pthread_args_t;
    

    pthread_args_t pthread_args;//这是传给子线程的参数结构体
    pthread_create //在这里调用

    问题就在于结构体定义的方式,因为子线程和主线程在同一个进程空间运行,子进程之间共享资源,我在主函数栈中静态分配一个结构体空间,每来一个客户端都会对这个结构体中clienfd的值进行改变,所以后面连接的都是最后一个连接上来的客户端,经过和小伙伴们分析总结出以下解决方案:

    1、 传单个值
    2 、malloc动态分配内存,然后传地址

    		//线程开始	
    		pthread_args = (pthread_args_t *)malloc(sizeof(pthread_args_t));
    
    

    3、 静态分配内存,可以在栈上分配一个足够大的,可以容纳所有参数,然后传地址;

    int main()
    {
    pthread_args_t pthread_args[10000];
    create_x(...., &pthread_args[i]);
    }
    

    第三次测试结果:

    在这里插入图片描述结果显示,服务器有序的稳定的向客户端4和客户端5交叉接收数据。。。。

    注:在这里感谢以下团队小伙伴的帮助,和一群优秀的小伙伴一起学习事倍功半!代码程序肯定有很多地方不够完美,请朋友们积极指出,谢谢~~~~

    展开全文
  • 如何通过Samba共享Linux文件夹

    万次阅读 2017-09-01 09:49:48
    Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于LinuxLinux之间的共享文件。...smb.conf中包含了多个全程单元,每个单元
    Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件。
    

    1. 配置Linux共享路径。

    vi /etc/samba/smb.conf

    编辑/etc/samba目录下的smb.conf文件。

    smb.conf中包含了多个全程单元,每个单元的名字放于方括号([])中,方括号也是区分各个单元的标识。第一个单元是[global],用于一些全局设置,对于不熟悉samba的用户来说,一般不要对此单元进行修改。第二个单元是[home],它的作用是使linux用户可以从其它机器上连接到自己的home目录。要设置一个特定的共享目录,建议在smb.conf文件尾部增加一个全程单元。一般包括几条语句。下面是一个例子:

    [Share]
    comment = Shared Folder with username and password
    path = /home/zwq
    valid users = zwq
    public = no
    writable = yes
    printable = no
    create mask = 0765

     

    说明:
    comment:提示,在windows的网络邻居上显示为备注。
    path:linux上共享目录
    valid users: 允许访问linux共享目录的用户,此用户需是linux的samba用户
    public:允许guest访问
    writable: 允许用户写
    printable: 若设为yes,则被认定为打印机
    create mask:在共享目录上建立的文件的权限

    2. 创建samba用户

    SMB用户名,在下面的Windows访问时用到。此用户必须是在Linux系统中存在的用户,否则“smbpasswd -a”命令会失败。

    useradd -m -s /bin/csh zwq

    passwd zwq

    smbpasswd -a zwq

    3. 重启SMB服务。

    /etc/init.d/smb restart

    如果SMB服务未启动,请执行/etc/init.d/smb start启动。

    如果想让系统重启后自动启动SMB服务,请在/etc/init.d/boot.local文件尾加入如下两行:

    rcnmb start
    /etc/init.d/smb start

    4. 在Windows中访问Linux共享的文件夹。

    a. 在“开始 > 运行”中输入“\\Linux服务器IP地址”即可登录到目标服务器,如下所示:

     

    b. 具体访问某目录,如Share,系统会弹出对话框,需要输入samba用户(zwq)。

    输入用户名和密码后即可访问Linux系统中的文件,此用户名和密码即为上述增加的samba用户名和密码。

    5. 把Linux的共享文件夹映射为Windows本地的一个磁盘分区。

    a. 在“开始 > 运行”中输入“cmd”启动Windows命令行。

    b. 执行net use Q: \\Linux服务器IP地址\Share 命令完成映射。

    c. 打开Windows的“我的电脑”可以看到Q盘了。

     

     

     

     

    展开全文
  • 存储技术分为:直连式存储,网络存储 直连存储 SCSI接口(双绞线) 小型计算接口、其接口对应系统中磁盘名是 sd开头 DAS技术 ... 是一专用数据存储服务器,属于一用于数据共享的...

    存储技术分为:直连式存储,网络存储

    直连存储 SCSI接口(双绞线) 小型计算接口、其接口对应的系统中的磁盘名是  sd开头
    DAS技术 将存储设备通过SCSI接口或者光纤通道链接计算机
    优点:存储速度综合较快,短距离中性价比高
    缺点:不能数据共享,在数据量巨大的时候,其性能下降较快
    网络存储 NAS 是一个专用数据存储服务器,属于一个用于数据共享的设备,用户可以通过TCP/IP协议访问数据
    SAN 通过网络交换设备把存储设备和相关服务器连接起来,属于搭建一个网络服务来实现共享存储设备的存储空间
    FC-SAN  是用光纤设备组成的SAN,成本高,相连的所有设备都必须是支持光纤的网络设备,但性能高
    IP-SAN  是用普通双绞线进行连接,性价比高,在距离不是很远的时候参用较多,但是距离长可能会有不少延迟
    其中包含一个iscsi的技术(具体iscsi的配置查看我关于iscsi配置的相关blog)

    设备文件管理方法:udev 技术

        因为连接ISCSI共享出的磁盘,其设备在系统的名字是按顺序分配的,不固定,导致在写一些自动挂载的时候会无故报错,所以想用udev技术让一个设备完全固定一个名字。

      Linux查看系统中设备信息

        1. 获取设备信息
              动态监听系统设备信息
                 udevadm monitor --property

              具体查看当前系统设备的信息
                 获取路径
                    udevadm info -q path -n 设备的系统路径
                 获取详细信息
                    udevadm info -q all -p 刚刚查看的路径 -a
                 合并起来可以写成:
                    udevadm info -q all -n 设备的系统路径 -a

        2. 配置udev,修改配置文件:/etc/udev/rules.d/50-iscsidisk.rules

           具体格式就算把所有的匹配选项和具体操作,用  ,   连接起来,程序会把匹配所有匹配选项的设备一一进行所有操作,不过最好匹配项能锁定一个具体设备

    符号含义
    == 代表匹配
    != 代表不匹配
    = 代表赋值
    += 代表追加
    := 代表指定值,不允许被替换
    变量
    %k 内核所识别出来的设备名,如sdb1
    %n 设备的内核编号,如sda3中的3
    %p 设备路径,如/sys/block/sdb/sdb1
    %% %符号本身
    具体操作
    NAME="名字" 定义设备名称
    SYMLINK+="相对路径" 添加一个链接,其相对路径是从/dev/ 开始的
    OWNER="用户" 指定设备的所有者
    MODE="0644" 定义设备的权限其数字代表的就是权限
    从上面的命令udevadm中,查找有用信息
    ACTIOMN=="设备动作" 判断设备的动作(添加add,删除delete)
    SUBSYSTEM=="block" 设备类型是   块设备
    ATTR{size}=="104857600" 设备大小
    ATTRS{model}=="db           "

     设备命名

    KERNEL=="sd[a-z][1-7]"

    判断内核中该设备名字可以用范围也可是确定值

    是磁盘就不加数字,是分区就要加上数字

    ATTRS{vendor}=="LIO-ORG " 生产厂家

    例如:

    SUBSYSTEM=="block",ATTRS{model}=="db",ATTRS{vendor}=="LIO-ORG ",KERNEL=="sd[a-z]",SYMLINK="iscsi/udisk"

        先手动进行连接iscsi的设备,然后查看其设备信息,然后在配置文件写一些关于磁盘的具体标识,可以是磁盘的标识也可以是磁盘的标识,选的什么的信息到时候,创建的连接就是谁,最后加一个链接,这样就可以在/dev/下创建一个链接,然后不管是挂载还是格式化都只要对这个链接操作。
        要注意,如果想做的是一个磁盘,可以对其分区,但是最好不要格式化,否则会让分分区信息消失,可以分区后,再像上面再配置文件中写一个分区的链接。


    为提高稳定性,搭建多路径服务

      装包:device-mapper-multipath

      初始化配置:mpathconf  --user_friendly_names n

      进阶配置:
        获取磁盘的唯一标示wwid:/usr/lib/udev/scsi_id --whitelisted --device=磁盘
        修改配置文件: /etc/multipath.conf   (在后面追加)

    multipaths {
       multipath {
            wwid  "刚刚查看的磁盘的wwid信息"
            alias  自定的名字(其会自动创建在/dev/mapper/)
       }
    }

      启服务:systemctl restart multipathd

      刷新多路径信息 multipath -rr
      查看多路径信息 multipath -ll

       检查多路径的配置是否成功,查看/dev/mapper/有没有自定义的名字,我们如果要分区、格式化、挂载也是对这目录下创建出来的内容操作,分区后,这个目录下也会有相关的文件
       如定义的名字为mapth,那么磁盘就是/dev/mapper/mapth,分区后就会多一个/dev/mapper/mapth1,然后的操作就和基本的磁盘一样了。


    总结:
       1. iscsi是较为常见的磁盘存储共享,请熟练掌握
       2. udev和multipaths都是创建了一个链接,然后通过链接来操作磁盘
       3. udev分区后不会有分分区相关的链接,但是multipaths会自动创建,其操作相对udev会检点点。

    展开全文
  • 台SUSE11版本的服务器都需要安装net-snmp包,我不想一劲地插拔光盘,于是想办法写了这篇短文背景说明:实际情况是,有很台suse11版本的服务器都需要安装net-snmp包,suse下Yast服务可以解决包之间依赖...
  • 在生产环境中,Oracle RAC搭建需要有共享存储支持,而共享存储上LUN挂载到服务器上通常是路径的,这样就需要在服务器上安装多路径软件来整合一LUN的多条链路。有存储厂商会有自己的多路径软件,但...
  • PyTorch可以下载很预训练好神经...另外如果是多人共享的Linux服务器,每用户都下载一遍这些训练好神经网络明显是一种浪费。最好是放置在/var、/opt或者/usr/local等一类共享目录里。 但是默认情况下,PyTorch里
  • 服务器对附件处理

    2011-03-31 10:33:40
    1为什么不把图片放服务器 然后数据库存路径了1直接把图片放数据库 效率不高吧2好几台应用服务器呢。。2放在哪个服务器呢。专门图片服务器又木有。。3现在一般都是存图片路径吧 2没有哪...5做共享52个linux虚拟...
  • 15.4 面向连接的、服务服务器的设计 128 15.5 并发的、面向连接的、服务服务器 129 15.6 单线程的、服务服务器的实现 129 15.7 从服务服务器调用单独的程序 130 15.8 服务、协议设计 131 15.9 ...
  • 入门学习Linux常用必会60命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    如果选择用命令行模式登录Linux话,那么看到第一个Linux命令就是login:。 一般界面是这样: Manddrake Linux release 9.1(Bamboo) for i586 renrel 2.4.21-0.13mdk on i686 / tty1 localhost login:root ...
  • Linux常用命令

    2014-09-21 19:43:32
    usermod –G(g覆盖原组) grpup user改用户属于什么组(共享的组,即同时可以在多个组中) df 查看分区信息 sda 串口硬盘 —h 可读 du 查看当前目录下使用情况 fdisk –l 查看磁盘分区信息 mkfs 查看格式化...
  • 当有多个选项时,可以写在一起。 ..表示当前目录父目录,cd ..当中一定有个空格。 文件处理命令:ls 命令名称:ls 命令英文原意:list 命令所在路径:/bin/ls 执行权限:所有用户 功能描述:显示当前或指定...
  • 真实的git服务器的搭建需要使用Linux来进行搭建,搭建难度大且繁琐 2.将代码托管Github:必须开源,不想开源需要交钱 3.或者OSChina:免费,推荐国内速度快 4.一U盘可以为共享版本库 5.一文件可以作为共享版本库...
  • 定义说明文字,当一客户端列出服务器的共享资源时,comment指令定义的文字将出现在共享名的旁边. 2.path 指定共享的路径.可以配合samba变量.分享资源的完整路径名称.除了路径要正确外,目录的权限也要设对.例如可以...
  • 讲解Linux网络编程知识,分以下四篇章。 Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程篇 Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ...
  • Linux是一个多任务、用户操作系统,它以其良好特性和资源免费性而得到了蓬勃发展。  本书通过大量图示和实例,深入浅出介绍了Linux的基本原理和应用。主要包括Linux的基本概念和操作,Linux的树型...
  • 它本身就是一完整 32 位的多用户任务操作 系统,因此不需要先安装 DOS 或其他操作系统(MS Windows, OS2, MINIX..)就可以进 行直接安装。 Linux的最早起源是在1991年10月5日由一位芬兰大学生Linux ...
  • 11.3.5 一个多播例子的服务器端 313 11.3.6 一个多播例子客户端 315 11.4 数据链路层访问 317 11.4.1 sock_packet类型 317 11.4.2 设置套接口以捕获链路帧编程方法 317 11.4.3 从套接口读取链路帧编程...
  • 讲解Linux网络编程知识,分以下四篇章。 Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程篇 Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ...
  • 2.3.22 查寻文件或命令的路径 2.3.23 比较文件或目录的内容 2.3.24 文件打印输出 2.3.25 一般文件的打印 2.3.26 troff文件的打印 2.3.27 打印机控制命令 2.3.28 进程控制 2.3.29 外壳变量 2.3.30 环境变量 2.3.31 ...
  • 讲解Linux网络编程知识,分以下四篇章。 Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程篇 Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ...
  • 2.3.1 一个多文件工程例子 34 2.3.2 文件工程编译 36 2.3.3 Makefile规则 37 2.3.4 Makefile中使用变量 39 2.3.5 搜索路径 43 2.3.6 自动推导规则 44 2.3.7 递归make 44 2.3.8 Makefile中...
  • 2.3.22 查寻文件或命令的路径 14 2.3.23 比较文件或目录的内容 14 2.3.24 文件打印输出 14 2.3.25 一般文件的打印 14 2.3.26 troff 文件的打印 14 2.3.27 打印机控制命令 14 2.3.28 进程控制 15 2.3.29 外壳变量 16 ...
  • linux 系统管理员.pdf 书籍

    热门讨论 2012-02-13 11:02:45
    5.14.4 验证域名服务器的设置 59 5.14.5 其他工具 61 第6章 串行链路网际协议 62 6.1 常规需求 62 6.2 SLIP的工作原理 62 6.3 dip的使用 63 6.4 运行于服务器模式 68 第7章 点到点协议 69 7.1 PPP打开 69 7.2 运行...
  • move 盘符路径要移动的文件名 存放移动文件的路径移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖 fc one.txt two.txt > 3st.txt 对比二文件并把不同之处输出到3st.txt文件中...
  • 2.3.1 一个多文件工程例子............................. ............. 34 2 . 3 . 2文件工程编译.............................................. 36 2.3.3 Makefile 规则..................................
  • 允许为每个Web添加多个UDP通知对象,每个判题服务器允许使用不同UDP端口监听消息。阿里云+腾讯云测试通过。 01-23 更新 修订了Moodle集成代码,实现HUSTOJ给moodle系统作业自动判分。 01-20 更新 删除 noip ...
  • 与cgi区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新进程,服务完成后就销毁,所以效率上低于servlet。...

空空如也

空空如也

1 2 3 4
收藏数 77
精华内容 30
关键字:

共享多个linux服务器的路径

linux 订阅